RFID olvasó+DS1307 nem működik
RFID olvasó+DS1307 nem működik
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
Ú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.
Re: RFID olvasó+DS1307 nem működik
Mitől írná ki, ha a do-loopban a frissítés / RTC kiírás nincsen benne?
Ilyen kellene...
Ilyen kellene...
Kód: Egész kijelölése
if rtc.now() != rtc.elozo {
írd ki a RTC-t
rtc.elozo = rtc.now();
}Re: RFID olvasó+DS1307 nem működik
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
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
Re: RFID olvasó+DS1307 nem működik
Itt lehet:
helyett
É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...
Kód: Egész kijelölése
while (!successRead); Kód: Egész kijelölése
if (!successRead){
és az ezutáni minden;
}
Partszélről, komolyabb folyamatábra rajz nélkül...
Re: RFID olvasó+DS1307 nem működik
probléma: nem ír ki időt, csak ha kártyát olvas
van egy ilyen ciklus a loopban:
é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,
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 reada 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,
Re: RFID olvasó+DS1307 nem működik
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!
Á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.
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!
Á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.
Re: RFID olvasó+DS1307 nem működik
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:
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
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égemert ott pörög az idő nagy részében a progi
(c)csege
Re: RFID olvasó+DS1307 nem működik
a loop eleje
(c)
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
Re: RFID olvasó+DS1307 nem működik
Szia!
Köszönöm, mihelyt hazaérek megpróbálom amit írtál.
Ádám
Köszönöm, mihelyt hazaérek megpróbálom amit írtál.
Ádám
Re: RFID olvasó+DS1307 nem működik
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.
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
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.
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
}
}Re: RFID olvasó+DS1307 nem működik
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...
Ekkor frissítsd le az órát...
Re: RFID olvasó+DS1307 nem működik
Szia Robert!
Kérlek ezt magyarázd el bővebben. Kezdő vagyok még.
Köszönöm!
Ádám
Kérlek ezt magyarázd el bővebben. Kezdő vagyok még.
Köszönöm!
Ádám
Re: RFID olvasó+DS1307 nem működik
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ó....
Amúgy muszáj 1 secenként? Ha percenként íratod ki, akkor az olvasási megállás nem látható....
Re: RFID olvasó+DS1307 nem működik
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.
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.
Re: RFID olvasó+DS1307 nem működik
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.
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.
