Pracuję nad projektem przy użyciu Arduino Uno i osłony karty SD. Chciałbym codziennie przechowywać zmienną o określonej godzinie na karcie SD . Jak mogę sprawdzić aktualny czas w Arduino? Każda pomoc byłaby znacząca.
UWAGA: Arduino NIE jest podłączone do komputera.
Odpowiedź
wystarczająco dokładnym sposobem jest użycie funkcji millis()
. Zwróci wartość w milisekundach od początku Arduino. Jeśli uruchomisz Arduino o określonej godzinie, będziesz mógł obliczyć dokładną datę i godzinę.
Dlaczego nie moduł zewnętrzny? RTC, taki jak DS3231 za jedyne 5 $ i zawiera czujnik temperatury dla Ciebie!
Komentarze
- Uważaj, że funkcja millis () zawinąć po około 50 dniach.
- @AndreCourchesne: arduino.stackexchange.com/questions/12587/…
- A co, jeśli się zawinie? Prawidłowo napisany program zegarowy nie będzie się tym przejmował.
Odpowiedź
bez zewnętrznego źródła
Nie można „t. Arduino Uno nie ma zegara czasu rzeczywistego. Zegar czasu rzeczywistego jest tylko czymś w rodzaju 1 USD z serwisu eBay. Na przykład DS1307 lub DS3231. Znalazłem 5 płytek wstępnie zmontowanych z chipem zegara, w tym uchwyt baterii, kryształ, chip i płytka drukowana za 4,20 USD w serwisie eBay. Baterie nie są dostarczane.
Podłącz to do pinów I2C (A4 i A5), ustaw raz za pomocą odpowiedniego szkicu i gotowe.
Jeśli chcesz coś zrobić co 24 godziny (niekoniecznie o 9:36), możesz po prostu użyć millis
, aby sprawdzić, kiedy upłynęła odpowiednia liczba milisekund. Wynik z millis
będzie zawijał się mniej więcej co 49 dni, ale nie musisz się tym martwić .
Pamiętaj, że nie pozwoli Ci zarejestrować daty i godziny, ale możesz coś zarejestrować (np. temperaturę), musisz tylko wiedzieć, kiedy zacząłeś rejestrować.
Odpowiedź
Jedną z możliwości do rozważenia jest użyj 24-godzinnego zegara wtyczki , który steruje zasilaniem Uno.
Np. coś, co wygląda tak:
Obwód będzie wyglądał następująco: Gniazdo sieciowe -> Timer -> Ładowarka USB -> Arduino
Możesz ustawić timer, aby wyłączał zasilanie Uno o, powiedzmy, 23:30 i włączał ponownie północ.
W takiej konfiguracji millis()
będzie czasem od ostatniego uruchomienia Uno, który zwykle będzie czasem od poprzedniej północy.
Podczas debugowania możesz ustawić czas rozpoczęcia nieobecności na inny niż północ.
Zastrzeżenia są następujące:
- Twoja sytuacja pozwala na codzienne 30 minut ( lub jakiekolwiek inne przyrosty timera) przestój
- Może tolerować przesunięcia timera z powodu przerw w dostawie prądu