Obsah:

Snadné nastavení letního času: 7 kroků
Snadné nastavení letního času: 7 kroků

Video: Snadné nastavení letního času: 7 kroků

Video: Snadné nastavení letního času: 7 kroků
Video: Jak na nákup a financování nemovitosti v 7 snadných krocích 2024, Červenec
Anonim
Snadné letní hodiny
Snadné letní hodiny
Snadné letní hodiny
Snadné letní hodiny

Příběh

Tento projekt pro mě začal jako výzva naučit se programovat (kódovat) pomocí Arduino Uno a jediného 1602A LCD displeje, nejprve jsem chtěl posunout Arduino na jeho hranice přesnosti. Toto je projekt na vybudování hodin bez použití modulu RTC (modul hodin reálného času) a dále nepoužívat žádné zpoždění (); příkazy, protože delay (); příkaz zastaví kód na určenou dobu. Když jsem zpracovával základní kód pro udržování času, myslel jsem si, že by to mohlo být trochu pozemské, a tak jsem se rozhodl přidat funkci letního času jako nový doplněk, jak okořenit věci a případně vytvořit trochu větší zájem o tento projekt. Zpočátku byla myšlenka čistě nová, ale čím více s ní pracuji a sleduji fyzické hodiny, které mám spuštěné na stole, tím praktičtější se tato myšlenka stává. Přidáním modulu RTC a úpravou kódu by tyto hodiny byly přesné pro nadcházející roky a za velmi nízké náklady pro výrobce a veřejnost, kteří si takové hodiny pořizují.

Letní čas nebo (DST) existuje již více než 100 let (Google to, má docela pestrou historii). Nechci se pouštět do její politiky, ale je to hrubé a bolestivé cvičení, které obyčejným lidem (ty a já) neulehčuje život. Většinou si užíváme další hodinu denního světla, ale způsob, jakým je aplikován, je brutální. Je čas na zásadní upgrade velmi starého nápadu.

Tento příklad je snadné žít s digitálním věkem as ním a pokroky v technologii snadno aplikovatelné na všechny formy digitálních hodin, ale mohly by pomoci k zániku analogových hodin. Spíše než hodinový skok ze standardního času na čas DST a poté čas DST na standardní čas jsou tyto hodiny založeny na postupném postupu času od zimního slunovratu k letnímu slunovratu a poté zpět ke standardnímu času v příštím zimním slunovratu rok co rok. Tento přechod probíhá po dobu 180 dní z každého 6měsíčního období, úprava je 20 sekund denně po dobu 360 dnů, přičemž zbývajících 5 nebo 6 dnů se přidá k délce slunovratů. Můj příklad zde zvyšuje 1 minutu jednou za tři dny v rámci 180denního cyklu. Zhruba 21. června každého roku jsou hodiny o 1 hodinu napřed a zhruba 21. prosince každého roku se hodiny posunuly zpět na standardní čas. Přestupný rok lze snadno zaúčtovat, zejména pokud je použit RTC. Jižní polokoule se snadno přizpůsobí i těmto hodinám, měřítko snímku je jednoduše 6 měsíců mimo fázi severní polokoule.

Na světě existují tři místa, kde by DST byla téměř bez rovníkové oblasti a pólů. Myslím, že denní světlo se na rovníku příliš nemění, nevím, jestli některá z tropických oblastí dokonce používá DST a póly jsou zase jiný příběh, jen 'JAKÝ' čas je vůbec na pólech?

Krok 1: O hodinách

O Hodinách
O Hodinách
O Hodinách
O Hodinách

Hodiny, které jsem vytvořil, jsou založeny na standardním čase, který se nikdy neliší od mezinárodně uznávaných světových hodin, které jsou zobrazeny na prvním řádku displeje 1602. Druhý řádek je stejné časové měřítko, ale ukazuje odsazení minut od jednoho slunovratu do druhého. Od zimního slunovratu do letního slunovratu se offset zvyšuje o jednu minutu každé tři dny až na maximálně šedesát minut. Od letního slunovratu do zimního slunovratu se offset snižuje o jednu minutu každé tři dny, dokud není standardní čas a čas DST stejný.

Pro tento příklad jsem použil vojenský čas (24hodinový) a standardní čas (12hodinový) dopoledne a odpoledne, abych pomohl lidem, kteří nejsou obeznámeni s 24hodinovým časovým měřítkem, a také mi poskytl prostor pro zobrazení čísla dne, kdy je letní čas nastavit od. Kód lze změnit tak, aby zobrazoval 12hodinové hodiny. Přidal jsem tři tlačítka připojená k digitálním pinům 2, 3 a 4 pro nastavení času. Tato tlačítka zvýší pouze sekundy, minuty nebo hodiny. Tlačítka jsou volitelná, hodiny budou stále fungovat dobře, pokud je nezapojíte a nebudete muset měnit kód. Doporučil bych alespoň použít tlačítko k nastavení sekund a pokud nelze dosáhnout úplné přesnosti, ponechat hodiny na pomalé straně, tlačítko posune čas o 1 sekundu za sekundu.

Pokud spustíte hodiny z Arduino IDE, načtení a spuštění skici bude trvat přibližně 5,5 až 6 sekund, pokud máte skicu načtenou do Arduina, zapojte ji do nástěnné bradavice nebo napájecího zdroje. 3 sekundy na spuštění a spuštění.

Když jsou hodiny konečně připraveny k provozu, je potřeba nějaké ruční nastavení.

Tyto hodiny nepoužívají modul RTC, ani nepoužívají „delay ();“příkazy.

Pokud rádi používáte RTC s Arduinem, tento koncept lze stále použít. RTC vám poskytne všechny informace, které potřebujete k přidání času EDSC. Kód se může u modulu RTC zcela lišit, nezkoumal jsem to. Pokud ano, jste docela sami, ale je to skvělý způsob, jak procvičit mozek.

Krok 2: Co budete potřebovat

Co budete potřebovat
Co budete potřebovat
Co budete potřebovat
Co budete potřebovat
Co budete potřebovat
Co budete potřebovat

NÁKUPNÍ SEZNAM

1 Arduino Uno nebo Mega2569 (kolíky I2C jsou A4 a A5 na UNO a 20 a 21 na 2560 Mega)

Téměř jakékoli jiné Arduino by mělo fungovat, použité piny se mohou lišit. Pokud jde o to, jakákoli řídicí deska bude fungovat. Budete muset přepsat kód pro tuto desku nebo výrobce.

1 1602 LCD displej (barva dle vašeho výběru)

Používám zadní kryt I2C s LCD, nastavení mi připadá jednodušší a rychlejší.

Propojovací vodiče

VOLITELNÉ DODÁVKY

1 středně velká chlebová deska

1-3 tlačítka momentových kontaktů

1-3 10 K ohmové odpory

Tento návod je dlouhý, takže nepůjdu do držáku nebo skříně, kterou jsem použil k zobrazení hodin. Pokud se vám tento projekt líbí a chcete vytvořit trvalou verzi, navrhněte jej podle svých představ. Tento design je pro mě ideální, protože jsem měl v junk boxu vše, co jsem potřeboval, a líbí se mi jeho vzhled.

POZNÁMKY:

Abych se vyhnul pádům z výpadků proudu, mé poslední hodiny jsou napájeny solárním panelem, který mám venku. Solární panel udržuje 12 voltovou baterii nabitou regulátorem, aby se zabránilo přebíjení. Tato baterie je připojena k Arduinu pomocí napájecího konektoru vedle portu USB. Nechám port USB připojený k síti, aby se snížilo čerpání baterie. Oba zdroje energie lze použít současně bez poškození Arduina. 12voltovou baterii lze nabíjet max. Na 14,5 voltů, což je pro Arduino příliš vysoké, takže používám převodník buck ke snížení napájecího napětí z baterie na rozsah 9 až 12 voltů. Pokud jsou dny zataženy, 12voltová baterie, kterou udržuji nabitou, vydrží 3 nebo 4 dny. Regulátor, který používám, přeruší napájení Arduina, pokud napětí baterie klesne na 11 voltů. Baterie, kterou mám, pochází z nouzového světelného systému pro komerční budovy, což je zhruba jedna čtvrtina velikosti malé automobilové baterie. Pokud hodláte používat autobaterii, udržujte ji v dobře větraném prostoru (venku), autobaterie při nabíjení a vybíjení uvolňují vodík a plynný kyslík, jedná se o výbušnou kombinaci.

VAROVÁNÍ

UCHOVÁVEJTE BATERII DOBŘE

VĚTRANÁ OBLASTI, MIMO

Krok 3: Zapojení

Elektrické vedení
Elektrické vedení

Poskytl jsem schéma pro všechna připojení v tomto projektu, pokud používáte prkénko, budete potřebovat desku střední velikosti, přepínače budou potřebovat rozložit prostor, aby obvod nebyl matoucí.

LCD displej 1602 má pro jednoduchost zadní sadu I2C, pokud používáte připojení SPI, budete muset vyhledat způsob jeho použití a změnit kód poblíž začátku náčrtu. Nikdy jsem nepoužíval připojení SPI, takže piny 2, 3 a 4 nemusí být k dispozici pro tři tlačítka.

Tři tlačítka slouží k nastavení času na hodinách. Pouze posouvají čas (AHEAD). Při konečných úpravách udržujte hodiny v kódu na pomalé straně (asi 1 až 2 sekundy denně nebo několik dní), takže v případě potřeby můžete čas posunout. Každé tlačítko posouvá čas o jeden přírůstek za sekundu, spodní tlačítko 2 sekundy za sekundu, prostřední tlačítko 1 minutu za sekundu a horní tlačítko 1 hodinu za sekundu. Měl by být proveditelný poměrně vysoký stupeň přesnosti, takže jej nebudete muset příliš často upravovat.

Pokud upravujete sekundy, minuty nebo hodiny (například pokud jsou minuty rozšířeny o 58, 59, 00), hodina přejde na další hodinu.

Tato tři tlačítka jsou doplňkem hodin na poslední chvíli, fungují dobře, ale může existovat i lepší způsob. Jen si pamatujte, že pokud si zahrajete s touto částí kódu, objeví se „delay ();“příkaz nelze použít. Použil jsem tuto metodu, protože si nemusím dělat starosti s odrazem přepínače a podivnými skoky v čase.

Krok 4: Co zobrazuje displej

Co ukazuje displej
Co ukazuje displej

Na displej 1602 LCD jsem vložil spoustu informací, které potřebují nějaké vysvětlení:

Řádek 1 Nebo řádek 0 „0“při hovoru v kódu zobrazuje standardní čas. Vlevo je „STD“, což znamená čas „STandarD“.

Další na prvním řádku uprostřed je váš místní standardní čas. Nezačínejte s letním časem, hodiny to zobrazí na druhém řádku.

Toto časové měřítko je 12hodinové, takže na pravé straně je „AM“nebo „PM“pro označení rána nebo poledne.

Řádek 2 Nebo řádek jedna „1“při hovoru v kódu zobrazuje letní čas, který se liší podle dne v roce. „Letní čas“vlevo znamená „letní čas“

Uprostřed druhého řádku je váš místní vojenský čas, což jsou 24hodinové hodiny. Uslyšíte to například jako „šest set hodin“.

Na pravé straně je den v roce podle zimního slunovratu, na severní polokouli je 21. prosinec (přibližně) den nula „0“a na jižní polokouli 21. června (přibližně) den 0 „0“.

Při prvním nastavení hodin jsem poskytl dva soubory.pdf jako referenci. Vyberte soubor, který odkazuje na polokouli, ve které žijete.

Tři tlačítka vpravo zvyšují sekundy, minuty a hodiny zdola nahoru.

Krok 5: Nastavení skici

Nastavení skici
Nastavení skici

Pro počáteční spuštění je třeba nastavit několik řádků kódu. Některé z těchto řádků je třeba změnit pokaždé, když odpojíte hodiny a změníte hodnoty proměnných v náčrtu. Pokud spustíte hodiny pro IDE, načtení a spuštění bude trvat přibližně 6 sekund. Pokud načtete skicu z IDE, odpojte hodiny a restartujte je z bradavice nebo napájecího zdroje, skica se spustí asi za 2,5 sekundy.

Řádek 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Tento řádek adresuje LCD displej a nastavuje správnou adresu back packu I2C. 0x27 je adresa kteréhokoli ze zadních balíčků, které jsem koupil. Pokud zapnete hodiny, ale nezobrazí se žádná data, ale rozsvítí se, adresa se na vašem LCD displeji pravděpodobně liší. Níže vložím odkaz s popisem, jak změnit adresu vašeho zadního LCD displeje nebo najít adresu.

Řádky 24 int minutSt = 35;

Nastavte počáteční minutu pro standardní hodiny, obvykle ji nastavte 5 minut před spuštěním hodin, aby bylo možné nastavit čas.

Řádky 25 za hodinuSt = 18;

Nastavte hodinu na čas STD (24 hodinový čas), který začíná. 18:00 bude hodina 18.

Řádek 26 int DSTdays = 339;

Stáhněte si a vyhledejte soubor pdf „Easy DST Clock Time Scale“(severní nebo jižní polokoule), ve kterém žijete, vyhledejte datum a vložte do tohoto řádku Den #. (Levý sloupec). Příklad (24. listopadu je den #339 na severní polokouli a den #156 na jižní polokouli)

Řádek 27 int DSTrok = 2019;

Zadejte aktuální rok.

Řádek 92, pokud ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

"PředchozíMasterTimeSt" je třeba porovnat s počtem milisekund, takže tato "1000" může být potřeba změnit na 999 v závislosti na vnitřních hodinách desky Arduino a poté upravit předchozíMicroTime pro jemné vyladění hodin. Interní hodiny, i když 16MH, se liší od jedné desky k druhé.

„PředchozíMicroTimeSt“doladí vnitřní hodiny, aby pomohlo odpočítat přesnou 1 sekundu. Pokud jsou hodiny příliš rychlé, zvyšte mikrosekundy a pokud jsou hodiny příliš pomalé, snižte mikrosekundy a v případě potřeby snižte milisekundy na 999 a poté spusťte mikrosekundy přibližně na 999, 990 nebo zvyšte rychlost hodin.

Každá deska Arduino má trochu jinou rychlost, proto se tato čísla mění s každou deskou, kterou používáte. Část kódu ještě nebyla testována, jedná se o řádek 248, který má zohlednit každý přestupný rok. V příštích několika týdnech to otestuji a v případě potřeby zveřejním jakékoli změny.

Krok 6: Závěrečné poznámky

Závěrečné poznámky
Závěrečné poznámky

Tento projekt se snadno staví, ale koncept a nezbytné úpravy v kódu mohou být úkoly, udělejte si čas a promyslete si to, hodiny nevyprší do konce roku 2037. Budu bedlivě sledovat své e -mail na dotazy, protože jsem si jistý, že nějaké budou, nejsem literární génius, takže některé mé popisy mohou být trochu blátivé.

Zahrnuty jsou dva soubory.pdf, stáhněte si soubor pro polokouli, ve které žijete, tento soubor vám poskytne potřebné informace pro přesné spuštění hodin.

S informacemi zpracovanými v náčrtu by bylo snadné zobrazit nejen standardní čas a čas DST, ale také den a datum na LCD 2004A. Pokud se vám líbí výzvy, které tento projekt poskytuje, zkuste připojit LCD displej 2004A a poté přidat kód pro zobrazení dalších informací, nebo pokud se projeví dostatečný zájem, udělám další variantu tohoto projektu včetně těchto dodatečných informací.

Snažil jsem se být v tomto projektu všeobjímající, ale našel jsem tři oblasti v dotyčném světě. Severní pól, jižní pól a rovník.

Je DST nezbytný nebo dokonce možný na severním nebo jižním pólu?

Kolik je hodin na severním nebo jižním pólu?

Jakým směrem byste se vydali, abyste opustili severní nebo jižní pól?

Jakým směrem byste se z jižního pólu dostali do Austrálie, Severní Ameriky, Evropy nebo Asie?

V jakém časovém pásmu žije Santa?

Potřebuje DST?

Kolik je vůbec hodin na severním pólu?

Jakým směrem cestuje Santa, aby doručil všechny své dary?

Na jaké šířce je DST účinný?

Nyní k rovníku;

Jsou tyto hodiny použitelné na rovníku?

Použili by měřítko severní nebo jižní polokoule?

Jaká jsou data pro zimní slunovrat a letní slunovrat?

Na jaké šířce je DST účinný?

Potřebují tučňáci DST?

Myslíte si, že jsem divný, když přemýšlím o těchto otázkách?

Šťastnou stavbu všem!

filmnut

Krok 7: Další odkazy

Toto je odkaz pro určení nebo změnu adresy na back packu I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS napsal vynikající instruktáž pro hardwarové adresy I2C

playground.arduino.cc/Main/I2cScanner

Tento odkaz naskenuje vaše zařízení I2C a vrátí adresu

Doporučuje: