RFID olvasó+DS1307 nem működik

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Sziasztok!

Új vagyok itt a fórumon, és most ismerkedem az Arduinoval. Tudom-tudom, nem ezzel kellene kezdenem, de szükségem van a lépcsőházhoz egy beléptető rendszerre.
Találtam is egy jó megoldást-kész programot. http://forum.arduino.cc/index.php?topic=256260
Átdolgoztam, I2C-n egy kijelzőt is írtam hozzá, + beleírtam egy ds1307 óra programját.
Ott akadtam el, hogy a fordító lefordítja a programot beleírom az UNO-ba, de a kijelzőn látszik hogy az óra nem megy, csak akkor frissül az adat, ha lehúzok egy kártyát az olvasó előtt.
Mit kellene még beleírnom, hogy folyamatosan frissüljön az óra?

Itt egy kis video a működéséről. https://www.dropbox.com/s/5ky30hd4lurc1 ... 7.mp4?dl=0

Hardverek: Arduino UNO, RFID-RC522, DS1307, buzzer, ledek

A kód itt van! https://www.dropbox.com/s/upe8sk4l97aff ... 7.ino?dl=0
Aki tud kérem segítsen!

Köszönöm!

Ádám
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: Robert »

Mitől írná ki, ha a do-loopban a frissítés / RTC kiírás nincsen benne?
Ilyen kellene...

Kód: Egész kijelölése

if rtc.now() != rtc.elozo {
írd ki a RTC-t
rtc.elozo = rtc.now();
}
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Szia Roberto!

Ki van íratva az RTC. A loop-ban benne van.
Sajnos nem jövök rá a hibára.....

Önállóan csak az DS1307 tökéletesen működik.
Szerintem ott van a baj, hogy a program vár a következő kártyára, és addig nem is olvassa az adatot a DS1307-től. Csak akkor frissül ha lehúzok egy kártyát. Persze az idő megy tovább a DS1307-ben az elemnek köszönhetően.
Ok, hogy a fő program vár, de hogy kellene rábírni, hogy az idő része folyamatos legyen?

Ádám
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: Robert »

Itt lehet:

Kód: Egész kijelölése

while (!successRead); 
helyett

Kód: Egész kijelölése

 if (!successRead){ 

és az ezutáni minden; 
}
És a loop() után, hogy csak akkor írjon időt ha változás van.

Partszélről, komolyabb folyamatábra rajz nélkül...
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: csegebiga »

probléma: nem ír ki időt, csak ha kártyát olvas
van egy ilyen ciklus a loopban:

Kód: Egész kijelölése

 while (!successRead); 	//the program will not go further while you not get a successful read
és ott az angol magyarázat.
a program addig nem csinál semmit, míg nem kap sikeres olvasást
itt pörög a program
nem ebbe a ciklusba kéne az órakiíratást berakni a loop eleje helyett?
(c)
(szerk) és ismét egy write only user! Robert gyakorlatilag uezt mondta órákkal ezelőtt, :)
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Sziasztok!

Igen én is erre a következtetésre jutottam, hogy nem megy tovább a program, vár a kártyára, de akkor hogy illesszem be a programba?
Átírtam egy külön program részbe a loop elé, de így már meg sem jeleníti az órát!

:cry:

Ádám

Ui: Melyik progival csináljátok a kapcsolási rajzokat? Én a Fritzingel próbálkoztam, de olyan hiányos a hardver felhozatal.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: csegebiga »

még mindig a várakozó cikluson kívül van az idő kiíratása.

egyébként: honnan hívod a time() függvényt?

szerintem valami ilyen folyamatnak kéne lennie a loopban:

Kód: Egész kijelölése

loop
  cikus : kártyára vár
    időt kiír
    egyéb unatkozó teendők led villog, horkol, estébé
  ciklus vége

  kártya olvasás utáni teendők
   kártyatulaj validálás,
        köszöntés,  beengedés, estébé
     vagy
       elutasítás, üzenet

  várakozás, zárás, üzenet törlése stb
loop vége
látod? a "while (!successRead);" cikluson BELÜL kell lennie az óra frissítés-kiírásnak.
mert ott pörög az idő nagy részében a progi
(c)csege
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: csegebiga »

a loop eleje

Kód: Egész kijelölése

///////////////////////////////////////// Main Loop ///////////////////////////////////
void loop () {
     do {
		successRead = getID(); 	// sets successRead to 1 when we get read from reader otherwise 0
		if (programMode) {
			cycleLeds();        // Program Mode cycles through RGB waiting to read a new card
		  }
		else {
			time();				//  óra kiíratás ide kell szerintem
			normalModeOn(); 	// Normal mode, blue Power LED is on, all others are off
		  }
		}
	while (!successRead); 	//the program will not go further while you not get a successful read
(c)
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Szia!

Köszönöm, mihelyt hazaérek megpróbálom amit írtál.

Ádám
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Szia csegebiga!

Részben jó lett!! Az idő programnál kitöröltem a while(1)-t, és beírtam az óra kiíratást time(); ahova javasoltad.
Ha alap eset van, vagyis ha a fő program várakozik akkor megy az óra, ha viszont valamilyen akció van akkor kifagy, vagyis most fordítva működik mint a probléma elején. :lol:

Ha nem sikerül jobbítani, így is jó lesz, de azért korrekt lenne ha nem érintené a főprogram az idő programot.

Ádám

Kód: Egész kijelölése

void time() {
//while(1){
DateTime now = rtc.now();
  now_s = (now.second());
if(old_s!=now_s){
   old_s=now_s;

Kód: Egész kijelölése

///////////////////////////////////////// Main Loop ///////////////////////////////////
void loop () {
     do {
    successRead = getID(); 	// sets successRead to 1 when we get read from reader otherwise 0
    if (programMode) {
      cycleLeds();              // Program Mode cycles through RGB waiting to read a new card
    }
    else {      
      time();
      normalModeOn(); 		// Normal mode, blue Power LED is on, all others are off
    }
  }
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: Robert »

Nézd meg a Ticker eljárást. Állítsd be, hogy másodpercenként meghívódjon.
Ekkor frissítsd le az órát...
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Szia Robert!

Kérlek ezt magyarázd el bővebben. Kezdő vagyok még. :wink:

Köszönöm!

Ádám
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: Robert »

Csinálsz egy időzítőt, ami 1secenként meghívódik. És ebben iratod ki a kijelzőt.

Amúgy muszáj 1 secenként? Ha percenként íratod ki, akkor az olvasási megállás nem látható....
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: csegebiga »

Szervezési kérdés:
az nem megoldás, hogy _csak akkor_ mutatja az időt, ha várakozik a program?
hiszen a programozáskor, beléptetéskor, kártyaolvasás után úgyis mást ír ki a display.
azután, ha nincs más dolga, megint órát játszik a rendszer.

Róbert: az időzítők hogy viselkednek egy delay 3000 esetén?
mert a programban ilyen is van jelenleg.
mustang28
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. augusztus 24. hétfő, 17:42

Re: RFID olvasó+DS1307 nem működik

Hozzászólás Szerző: mustang28 »

Végül is jó, ha akkor mutatja az időt míg várakozik, csak kifagy amíg az akció tart. Majd lefrissül ha a program alapesetbe áll.

Persze kiírja, hogy Belépés szabad, vagy belépés tiltott, ez csak pár másodperc, és utána vissza áll alapba.
Válasz küldése