Jag arbetar med ett projekt med Arduino Uno och SD-kortskydd. Jag vill lagra en variabel vid en viss tidpunkt varje dag på SD-kortet . Hur kan jag få den aktuella tiden i Arduino? All hjälp skulle vara märkbar.
OBS: Arduino är INTE ansluten till PC.
Svar
En korrekt nog är att använda funktionen millis()
. Det kommer att returnera värdet i millisekunder sedan Arduino startade. Om du startar Arduino vid en viss tidpunkt kommer du att kunna beräkna exakt datum och tid.
Varför inte en extern modul ?? En RTC som DS3231 i bara 5 $ och den innehåller en temperatursensor för dig!
Kommentarer
- Se upp millis () -funktionen slå runt efter cirka 50 dagar.
- @AndreCourchesne: arduino.stackexchange.com/questions/12587/…
- Så vad händer om det går runt? Ett korrekt skrivet klockprogram bryr sig inte om det.
Svar
utan extern källa
Du kan ”t. Arduino Uno har ingen realtidsklocka. En realtidsklocka är bara ungefär som $ 1 från eBay. Till exempel DS1307 eller DS3231. Jag hittade 5 x kort förmonterade med klockchipet, inklusive batterihållare, kristall, chip och kretskort för 4,20 US $ på eBay. Batterier medföljer inte.
Haka fast det mot I2C-stiften (A4 och A5), ställ in tiden en gång med en lämplig skiss och sedan är du redo att rulla.
Om du bara vill göra något var 24: e timme (inte nödvändigtvis kl. 09.36) kan du bara använda millis
för att hitta när rätt antal millisekunder har gått. Resultatet från millis
kommer att packas var 49: e dag ungefär men du behöver inte oroa dig för det .
Observera att detta s låter dig inte logga datum och tid, men du kan logga något (t.ex. temperaturen) varje dag måste du bara veta när du började logga.
Svar
En möjlighet att överväga är att använd en 24-timmars plugin-timer som styr strömmen till Uno.
Dvs något som ser ut så här:
Kretsen skulle vara: AC-uttag -> Timer -> USB-laddare -> Arduino
Du kan ställa in timern för att stänga av strömmen till Uno vid säg 23:30 och slå på igen midnatt.
Under en sådan installation kommer millis()
att vara tiden sedan den senaste Uno-starten, vilket vanligtvis är tiden sedan föregående midnatt.
När du felsöker kan du ställa in tiden vid Uno-start på annat än midnatt.
Förbehållen är:
- Din situation tillåter dagliga 30 minuter ( eller vad som helst som timerinkrementen är) stilleståndstid
- Kan tolerera timerskift på grund av strömavbrott