Egy Arduino Uno és SD kártya pajzsot használó projekten dolgozom. Szeretnék egy változót egy adott időpontban tárolni mindennap az SD kártyán . Hogyan kaphatom meg a jelenlegi időt Arduino-ban? Minden segítség érezhető lenne.
MEGJEGYZÉS: Az Arduino NEM csatlakozik a számítógéphez.
Válasz
Elég pontos módszer a millis()
függvény használata. Ez az érték az ezredmásodpercekben tér vissza az Arduino indulása óta. Ha egy meghatározott időpontban indítja el az Arduino-t, képes lesz kiszámolni a pontos dátumot és időt.
Miért nem külső modul ?? Egy olyan RTC, mint a DS3231 mindössze 5 dollárba kerül, és tartalmaz egy hőmérséklet-érzékelőt az Ön számára!
Megjegyzések
- Vigyázzon, ha a millis () függvény kb. 50 nap múlva tekerje át.
- @AndreCourchesne: arduino.stackexchange.com/questions/12587/…
- Szóval mi van, ha körbeölel? Egy megfelelően megírt óraprogram nem fog ezzel törődni.
Válasz
külső forrás nélkül
Nem lehet. Az Arduino Uno-nak nincs valós idejű órája. A valós idejű óra csak valami 1 USD az eBay-től. Például a DS1307 vagy a DS3231. 5 x alaplapot találtam előre összeszerelve az óra chipjével, beleértve az elemtartót, a kristályt, a chipet és az áramköri lapot 4,20 USD-ért az eBay-en. Az elemeket nem szállítjuk.
Csatlakoztassa az I2C csapokig (A4 és A5), állítsa be egyszer az időt egy megfelelő vázlattal, és készen áll a gördülésre.
Ha csak tenni szeretne valamit 24 óránként (nem feltétlenül 9: 36-kor), akkor az millis
használatával megkeresheti, hogy mikor telt el a megfelelő milliszekundumszám. Az eredmény: millis
49 naponta nagyjából betakar, de nem kell aggódnia emiatt .
Ne feledje, hogy ez s nem engedi naplózni a dátumot és az időt, de valamit naplózhat (pl. a hőmérséklet), csak tudnia kell, mikor kezdte a naplózást.
Válasz
Az egyik megfontolandó lehetőség az, hogy használjon egy 24 órás plug-in időzítőt , amely vezérli az Uno áramellátását.
Vagyis valami így néz ki:
Az áramkör a következő lenne: Hálózati aljzat -> Időzítő -> USB-töltő -> Arduino
Beállíthatja az időzítőt, hogy mondjuk 23: 30-kor kikapcsolja az Uno áramellátását, majd újra bekapcsolja éjfél.
Ilyen beállítás esetén a millis()
lesz az idő a legutóbbi Uno kezdete óta, amely általában az előző éjfél óta eltelt idő.
A hibakereséskor beállíthatja az Uno-start kezdési időpontját éjféltől eltérőre.
A figyelmeztetések a következők:
- Az Ön helyzete lehetővé teszi a napi 30 perces ( vagy bármilyen az időzítő növekménye) leállás
- tolerálja az időzítés elmozdulását áramkimaradás miatt