Pracuji na projektu pomocí Arduino Uno a štítu SD karty. Chtěl bych každý den ukládat proměnnou v určitou dobu na SD kartu . Jak mohu zjistit aktuální čas v Arduinu? Jakákoli pomoc by byla ocenitelná.
POZNÁMKA: Arduino NENÍ připojeno k PC.
Odpověď
An dostatečně přesným způsobem je použít funkci millis()
. Vrátí hodnotu v milisekundách od začátku Arduina. Pokud spustíte Arduino v určitou dobu, budete moci vypočítat přesné datum a čas.
Proč ne externí modul ?? RTC, jako je DS3231, za pouhých 5 $ a obsahuje teplotní senzor pro vás!
Komentáře
- Pozor na funkci millis () zabalit asi po 50 dnech.
- @AndreCourchesne: arduino.stackexchange.com/questions/12587/…
- Takže co když se to omotá? Správně napsaný hodinový program se o to nestará.
Odpověď
bez externího zdroje
Nemůžete. t. Arduino Uno nemá žádné hodiny v reálném čase. Hodiny v reálném čase jsou jen něco jako 1 $ z eBay. Například DS1307 nebo DS3231. Na eBay jsem našel 5 x desek předem smontovaných s hodinovým čipem, včetně držáku baterie, krystalu, čipu a desky s plošnými spoji za 4,20 $. Baterie nejsou součástí dodávky.
Zahákněte to až na piny I2C (A4 a A5), jednou nastavte čas pomocí vhodného náčrtu a pak jste připraveni k hodu.
Pokud chcete něco udělat každých 24 hodin (nemusí to být nutně v 9:36), pak můžete pomocí millis
zjistit, kdy uplynul příslušný počet milisekund. Výsledek z millis
se zabalí zhruba každých 49 dní, ale s tím si nemusíte dělat starosti .
Všimněte si, že Neumožní vám zaznamenat datum a čas, ale můžete něco zaznamenat (např. teplota) každý den, stačí vědět, kdy jste začali protokolovat.
Odpovědět
Jednou z možností, kterou je třeba vzít v úvahu, je použijte 24hodinový zásuvný časovač , který ovládá napájení Uno.
Tj. něco, co vypadá takto:
Obvod by byl: zásuvka střídavého proudu -> časovač -> USB nabíječka -> Arduino
Můžete nastavit časovač tak, aby vypnul napájení Uno na řekněme 23:30 a znovu zapnul půlnoc.
V rámci takového nastavení bude millis()
čas od posledního spuštění Uno, což bude obvykle čas od předchozí půlnoci.
Při ladění můžete nastavit time-at-Uno-start na jinou dobu než půlnoc.
Upozornění:
- Vaše situace umožňuje denně 30 minut ( nebo bez ohledu na to, jaké jsou přírůstky časovače) prostoje
- Může tolerovat posunutí časovače kvůli výpadkům napájení