Jeg arbejder på et projekt ved hjælp af Arduino Uno og SD-kortskjold. Jeg vil gerne gemme en variabel på et bestemt tidspunkt hver dag på SD-kortet . Hvordan kan jeg få den aktuelle tid i Arduino? Enhver hjælp vil være mærkbar.
BEMÆRK: Arduino er IKKE tilsluttet pc.
Svar
En nøjagtig måde er at bruge funktionen millis()
. Den returnerer værdien i millisekunder siden starten af Arduino. Hvis du starter Arduino på et bestemt tidspunkt, kan du beregne den nøjagtige dato og tid.
Hvorfor ikke et eksternt modul ?? En RTC som DS3231 i kun 5 $, og den inkluderer en temperatursensor til dig!
Kommentarer
- Pas på millis () -funktionen vikle rundt efter ca. 50 dage.
- @AndreCourchesne: arduino.stackexchange.com/questions/12587/…
- Så hvad hvis det vikles rundt? Et korrekt skrevet urprogram er ligeglad med det.
Svar
uden ekstern kilde
Du kan ikke “t. Arduino Uno har intet realtidsur. Et realtidsur er kun noget som $ 1 fra eBay. F.eks. DS1307 eller DS3231. Jeg fandt 5 x kort monteret med urchippen, inklusive batteriholder, krystal, chip og kredsløb til 4,20 $ på eBay. Batterier leveres ikke.
Hæng det op til I2C-stifterne (A4 og A5), indstil tiden en gang ved hjælp af en passende skitse, og så er du klar til at rulle.
Hvis du bare vil gøre noget hver 24. time (ikke nødvendigvis kl. 9.36), kan du bare bruge millis
til at finde ud af, hvornår det passende antal millisekunder er forløbet. Resultatet fra millis
ombrydes hver 49. dag omtrent, men behøver du ikke bekymre dig om det .
Bemærk at dette s lader dig ikke logge dato og klokkeslæt, men du kan logge på noget (f.eks. temperaturen) hver dag, skulle du bare vide, hvornår du begyndte at logge.
Svar
En mulighed at overveje er at brug en 24-timers plug-in timer , der styrer strømmen til Uno.
Dvs. noget der ser sådan ud:
Kredsløbet ville være: Stikkontakt -> Timer -> USB-oplader -> Arduino
Du kan indstille timeren til at slukke for strømmen til Uno kl. 23:30 og tænde igen midnat.
Under en sådan opsætning vil millis()
være tiden siden sidste Uno-start, hvilket normalt vil være tiden siden den foregående midnat.
Ved fejlretning kan du indstille tiden-ved-Uno-start til andet end midnat.
Advarslerne er:
- Din situation tillader dagligt 30 minutter ( eller hvad timeren er) nedetid
- Tåler timerskift på grund af strømafbrydelser