Obsah:

Jednoduché nastavenie letného času: 7 krokov
Jednoduché nastavenie letného času: 7 krokov

Video: Jednoduché nastavenie letného času: 7 krokov

Video: Jednoduché nastavenie letného času: 7 krokov
Video: Полный курс React Query за час | TanStack Query v4 для начинающих 2024, Júl
Anonim
Jednoduché hodiny na úsporu denného svetla
Jednoduché hodiny na úsporu denného svetla
Jednoduché hodiny na úsporu denného svetla
Jednoduché hodiny na úsporu denného svetla

Príbeh

Tento projekt začal pre mňa ako výzva naučiť sa programovať (kódovanie) s Arduino Uno a jediným LCD displejom 1602A. Najprv som chcel posunúť Arduino na jeho hranice presnosti. Toto je projekt na vybudovanie hodín bez použitia modulu RTC (modul hodín v reálnom čase) a ďalej bez oneskorenia (); povely, pretože delay (); príkaz zastaví kód na určenú dobu. Ako som sa dopracoval k základnému kódu na udržiavanie času, napadlo mi, že by to mohlo byť trochu prízemné, a tak som sa rozhodol pridať funkciu letného času ako nový doplnok na okorenenie vecí a možno aj trochu zvýšiť záujem o tento projekt. Spočiatku bol tento nápad čisto nový, ale čím viac s ním pracujem a sledujem fyzické hodiny, ktoré mám spustené na stole, tým praktickejší nápad sa stal. Pridaním modulu RTC a úpravou kódu by tieto hodiny boli presné aj v nasledujúcich rokoch a za veľmi nízke náklady pre výrobcov a verejnosť, ktorí si tieto hodiny kupujú.

Letný čas alebo (DST) existuje viac ako 100 rokov (Google to má celkom pestrú históriu). Nechcem ísť do politiky, ale je to hrubé a bolestivé cvičenie, ktoré obyčajným ľuďom (ty a ja) neuľahčuje život. Väčšinou si užívame ďalšiu hodinu denného svetla, ale spôsob, akým je aplikovaný, je brutálny. Je čas na zásadnú aktualizáciu veľmi starého nápadu.

Tento príklad je ľahké žiť s digitálnym vekom as ním a technologický pokrok sa dá ľahko uplatniť na všetky formy digitálnych hodín, ale mohol by pomôcť pri zániku analógových hodín. Skôr než o 1 hodinu preskočenia zo štandardného času na čas DST a potom času DST na štandardný čas, sú tieto hodiny založené na postupnom postupe času od zimného slnovratu k letnému slnovratu a potom späť k štandardnému času pri nasledujúcom zimnom slnovrate, rok čo rok. Tento prechod prebieha 180 dní z každých 6 mesiacov. Úprava je 20 sekúnd denne počas 360 dní, pričom k dĺžke slnovratov sa pripočíta zvyšných 5 alebo 6 dní. Môj príklad tu zvyšuje 1 minútu raz za tri dni v rámci 180 -dňového cyklu. Približne 21. júna každého roku sú hodiny o celú hodinu vpred a približne 21. decembra každého roku sa hodiny posunuli späť na štandardný čas. Prestupný rok sa ľahko účtuje, najmä ak sa používa RTC. Južná pologuľa sa ľahko prispôsobí aj týmto hodinám, škála diapozitívov je jednoducho 6 mesiacov mimo fázy severnej pologule.

Na svete existujú tri miesta, kde by letný čas mohol byť, ak nie, rovníková oblasť a póly. Myslím, že denné svetlo sa na rovníku veľmi nemení, neviem, či niektorá z tropických oblastí dokonca používa DST a póly sú opäť iným príbehom, len „AKÝ“je čas na póloch?

Krok 1: O hodinách

O hodinách
O hodinách
O hodinách
O hodinách

Hodiny, ktoré som vytvoril, sú založené na štandardnom čase, ktorý sa nikdy nelíši od medzinárodne uznávaných svetových hodín, ktoré sú zobrazené v prvom riadku displeja 1602 LCD. Druhý riadok je rovnaká časová stupnica, ale zobrazuje posunutie minút od jedného slnovratu do druhého. Od zimného slnovratu do letného slnovratu sa offset zvyšuje o jednu minútu každé tri dni až do maximálne šesťdesiatich minút. Od letného slnovratu do zimného slnovratu sa offset znižuje o jednu minútu každé tri dni, kým nie je štandardný čas a čas DST rovnaký.

V tomto prípade som použil vojenský čas (24 -hodinový formát) a štandardný čas (12 -hodinový formát) ráno a večer, aby som pomohol ľuďom, ktorí nie sú oboznámení s 24 -hodinovým časovým rozsahom, a taktiež mi poskytol priestor na zobrazenie čísla dňa, kedy je DST. nastaviť z. Kód je možné zmeniť tak, aby zobrazoval 12 -hodinový formát času. Na úpravu času som pridal tri tlačidlá pripojené k digitálnym kolíkom 2, 3 a 4. Tieto tlačidlá zvýšia iba sekundy, minúty alebo hodiny. Tlačidlá sú voliteľné. Hodiny budú fungovať správne, ak ich nezapojíte a nebudete musieť meniť kód. Odporučil by som aspoň použiť tlačidlo na úpravu sekúnd a ak nie je možné dosiahnuť úplnú presnosť, ponechať hodiny na pomalej strane, tlačidlo posunie čas o 1 sekundu za sekundu.

Ak spustíte hodiny z Arduino IDE, načítanie a spustenie náčrtu bude trvať asi 5,5 až 6 sekúnd. Ak máte náčrt načítaný do Arduina, potom ho zapojte do nástennej bradavice alebo napájania, trvá to asi 2,5 hodiny. 3 sekundy na spustenie a spustenie.

Keď sú hodiny konečne pripravené na prevádzku, je potrebné nejaké manuálne nastavenie.

Tieto hodiny nepoužívajú modul RTC, ani nepoužívajú „delay ();“príkazy.

Ak radi používate RTC s Arduinom, tento koncept je stále možné použiť. RTC vám poskytne všetky informácie, ktoré potrebujete na pridanie času EDSC. Kód sa môže úplne líšiť v prípade modulu RTC, nepozeral som sa naň. Ak tak urobíte, ste skoro sami, ale je to skvelý spôsob, ako si precvičiť mozog.

Krok 2: Čo budete potrebovať

Čo budete potrebovať
Čo budete potrebovať
Čo budete potrebovať
Čo budete potrebovať
Čo budete potrebovať
Čo budete potrebovať

NÁKUPNÝ ZOZNAM

1 Arduino Uno alebo Mega2569 (kolíky I2C sú A4 a A5 na UNO a 20 a 21 na 2560 Mega)

Takmer akékoľvek iné Arduino by malo fungovať, použité piny sa môžu líšiť. Pokiaľ ide o to, akákoľvek doska ovládača bude fungovať. Budete musieť prepísať kód pre danú dosku alebo výrobcu.

1 1602 LCD displej (farba podľa vášho výberu)

Používam zadný balík I2C s LCD displejom, nastavenie je pre mňa jednoduchšie a rýchlejšie.

Prepojovacie vodiče

VOLITEĽNÉ DODÁVKY

1 stredne veľká chlebová doska

1-3 tlačidlá dočasných kontaktov

1-3 10 K ohmové odpory

Tento návod je dlhý, takže nejdem do držiaka alebo skrinky, ktorú som použil na zobrazenie hodín. Ak sa vám páči tento projekt a chcete vytvoriť trvalú verziu, navrhnite ho podľa svojich predstáv. Tento dizajn je pre mňa ideálny, pretože som mal v škatuľke všetko, čo som potreboval, a páči sa mi jeho vzhľad.

POZNÁMKY:

Aby sa predišlo pádom výpadkov prúdu, moje posledné hodiny sú napájané solárnym panelom, ktorý mám vonku. Solárny panel udržiava 12 voltovú batériu nabitú regulátorom, aby sa zabránilo prebíjaniu. Táto batéria je k Arduinu pripojená pomocou napájacieho konektora vedľa portu USB. Port USB ponechávam pripojený k mriežke, aby sa znížilo čerpanie batérie. Oba zdroje energie je možné používať súčasne bez poškodenia Arduina. 12voltovú batériu je možné nabíjať maximálne na 14,5 voltov, čo je pre Arduino príliš vysoké, preto používam prevodník na zníženie napájacieho napätia z batérie na rozsah 9 až 12 voltov. Ak sú dni zamračené, 12 voltová batéria, ktorú udržujem nabitú, vydrží 3 alebo 4 dni. Regulátor, ktorý používam, preruší napájanie Arduina, ak napätie batérie klesne na 11 voltov. Batéria, ktorú mám, pochádza z núdzového svetelného systému pre komerčné budovy, je zhruba štvrtinová ako malá batéria do auta. Ak plánujete používať autobatériu, uchovávajte ju na dobre vetranom mieste (vonku), autobatérie pri nabíjaní a vybíjaní uvoľňujú vodík a plynný kyslík, je to výbušná kombinácia.

POZOR

UCHOVÁVAJTE BATÉRIU V DOBRE

VETRANÁ OBLASŤ, VONKAJŠIE

Krok 3: Zapojenie

Elektrické vedenie
Elektrické vedenie

Poskytol som schému pre všetky pripojenia v tomto projekte, ak používate nepájivú dosku, budete potrebovať dosku strednej veľkosti, prepínače budú potrebovať priestor na rozloženie, aby obvod nebol mätúci.

LCD displej 1602 má pre jednoduchosť zadný balík I2C. Ak používate pripojenia SPI, budete musieť vyhľadať spôsob jeho použitia a zmeniť kód na začiatku náčrtu. Nikdy som nepoužíval SPI pripojenia, takže piny 2, 3 a 4 nemusia byť k dispozícii pre tri tlačidlá.

Tri tlačidlá slúžia na úpravu času na hodinách. Predbiehajú iba čas (NEDÁVNE). Pri konečných úpravách ponechajte hodiny v kóde na pomalšej strane (asi 1 až 2 sekundy denne alebo niekoľko dní), aby ste v prípade potreby mohli čas posunúť dopredu. Každé tlačidlo posúva čas o jeden krok za sekundu, spodné tlačidlo 2 sekundy za sekundu, stredné tlačidlo 1 minútu za sekundu a horné tlačidlo 1 hodinu za sekundu. Mal by byť dosiahnuteľný pomerne vysoký stupeň presnosti, takže ho nebudete musieť veľmi často upravovať.

Ak nastavujete sekundy, minúty alebo hodiny (napríklad ak sú minúty pokročilé 58, 59, 00), hodina sa posunie na ďalšiu hodinu.

Tieto tri tlačidlá sú doplnkom hodín na poslednú chvíľu, fungujú dobre, ale môže existovať aj lepší spôsob. Nezabudnite, že ak si s touto časťou kódu popletiete „delay ();“príkaz nemožno použiť. Túto metódu som použil, pretože sa nemusím obávať odskoku spínača a podivných skokov v čase.

Krok 4: Čo zobrazuje displej

Čo ukazuje displej
Čo ukazuje displej

Na LCD displej 1602 som vložil veľa informácií, ktoré vyžadujú určité vysvetlenie:

Riadok 1 alebo riadok nula „0“pri hovore v kóde zobrazuje štandardný čas. Vľavo je „STD“, čo znamená čas „STandarD“.

Ďalej na prvom riadku v strede je váš miestny štandardný čas. Nezačínajte s letným časom, hodiny to zobrazia v druhom riadku.

Tento časový rozsah je 12 -hodinový, takže na pravej strane je ráno alebo poobede „dopoludnia alebo popoludní“.

Riadok 2 alebo prvý riadok „1“pri hovore v kóde zobrazuje letný čas, ktorý sa líši v závislosti od dňa v roku. „Letný čas“vľavo znamená „letný čas“

V strede druhého riadku je váš miestny vojenský čas, ktorý je 24 -hodinový. Budete to počuť napríklad ako „oh šesťsto hodín“.

Na pravej strane je deň v roku podľa zimného slnovratu, na severnej pologuli je 21. december (približne) deň nula „0“a na južnej pologuli 21. júna (zhruba) deň 0 „0“.

Pri prvom nastavovaní hodín som poskytol dva súbory.pdf ako referenciu. Vyberte súbor, ktorý odkazuje na pologuľu, v ktorej žijete.

Tri tlačidlá napravo zvyšujú sekundy, minúty a hodiny zdola nahor.

Krok 5: Nastavenie náčrtu

Nastavenie náčrtu
Nastavenie náčrtu

Na počiatočné spustenie je potrebné nastaviť niekoľko riadkov kódu. Niektoré z týchto riadkov je potrebné zmeniť vždy, keď odpojíte hodiny a zmeníte hodnoty premenných v náčrte. Ak spustíte hodiny pre IDE, načítanie a spustenie bude trvať asi 6 sekúnd. Ak načítate skicu z IDE, potom odpojte hodiny a reštartujte ich z nástennej bradavice alebo napájania, skica sa spustí asi za 2,5 sekundy.

Riadok 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Tento riadok adresuje LCD displej a nastavuje správnu adresu spätného paketu I2C. 0x27 je adresa ktoréhokoľvek zo zadných balení, ktoré som kúpil. Ak zapnete hodiny, ale nezobrazia sa žiadne údaje, ale rozsvieti sa, adresa je na vašom LCD displeji pravdepodobne odlišná. Nasledujem odkaz, ktorý vám popíše, ako zmeniť adresu zadného balenia LCD alebo nájsť adresu.

Riadky 24 do minútySt = 35;

Nastavte začiatočnú minútu pre štandardné hodiny, zvyčajne ju nastavte 5 minút pred spustením, aby sa nastavil čas.

Riadky 25 za hodinuSt = 18;

Nastavte hodinu na čas STD (24 -hodinový formát), ktorý sa začína o 18.00 hod. By bola hodina 18.

Riadok 26 int DSTdays = 339;

Stiahnite si súbor pdf „Časový rozsah času DST“(severná alebo južná pologuľa), v ktorom žijete, a pozrite sa naň, vyhľadajte dátum a do tohto riadka vložte deň #. (Ľavý stĺpec). Príklad (24. november je deň #339 na severnej pologuli a deň #156 na južnej pologuli)

27. riadok v DSTrok = 2019;

Zadajte aktuálny rok.

Riadok 92, ak ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

„PreviousMasterTimeSt“je potrebné porovnať s počtom milisekúnd, takže týchto „1 000“bude možno potrebné zmeniť na 999 v závislosti od vnútorných hodín dosky Arduino a potom upraviť predchádzajúci MicroTime tak, aby hodiny doladili. Interné hodiny, aj keď 16 MHz, majú variácie od jednej dosky k druhej.

„PreviousMicroTimeSt“dolaďuje vnútorné hodiny, aby vám pomohol odpočítať presnú 1 sekundu. Ak sú hodiny príliš rýchle, zvýšte mikrosekundy a ak sú hodiny príliš pomalé, znížte mikrosekundy a v prípade potreby znížte milisekundy na 999 a potom spustite mikrosekundy približne o 999, 990 alebo zvýšte rýchlosť hodín.

Každá doska Arduino má trochu inú rýchlosť, preto sa tieto čísla budú meniť s každou doskou, ktorú použijete. Časť kódu ešte nebola testovaná, toto je riadok 248, ktorý má zohľadniť každý priestupný rok. V najbližších týždňoch ho otestujem a v prípade potreby zverejním všetky zmeny.

Krok 6: Záverečné poznámky

Záverečné poznámky
Záverečné poznámky

Tento projekt je ľahké postaviť, ale koncept a potrebné úpravy v kóde môžu byť úlohou, urobte si čas a premyslite si to, hodiny nevypršia do konca roku 2037. Budem pozorne sledovať svoje e -mail na otázky, pretože som si istý, že nejaké budú, nie som literárny génius, takže niektoré moje popisy môžu byť trochu zablatené.

Zahrnuté sú dva súbory.pdf, stiahnite si súbor pre hemisféru, v ktorej žijete, tento súbor vám poskytne potrebné informácie na presné spustenie hodín.

S informáciami spracovanými v náčrte by bolo ľahké zobraziť nielen štandardný čas a letný čas, ale aj deň a dátum na LCD displeji 2004A. Ak máte radi výzvy, ktoré tento projekt ponúka, skúste pripojiť LCD displej 2004A a potom pridať kód na zobrazenie dodatočných informácií, alebo ak sa prejaví dostatočný záujem, urobím ďalšiu variáciu tohto projektu vrátane týchto dodatočných informácií.

Snažil som sa byť v tomto projekte všeobjímajúci, ale našiel som tri oblasti v predmetnom svete. Severný pól, južný pól a rovník.

Je DST potrebný alebo dokonca možný na severnom alebo južnom póle?

Koľko je hodín na severnom alebo južnom póle?

Akým smerom by ste sa vybrali, aby ste opustili severný alebo južný pól?

Akým smerom by ste z južného pólu dorazili do Austrálie, Severnej Ameriky, Európy alebo Ázie?

V ktorom časovom pásme žije Santa?

Potrebuje DST?

Koľko je vlastne hodín na severnom póle?

Akým smerom cestuje Santa, aby doručil všetky svoje darčeky?

Na akej zemepisnej šírke je DST účinný?

Teraz k rovníku;

Sú tieto hodiny použiteľné na rovníku?

Použili by stupnicu severnej alebo južnej pologule?

Aké sú dátumy zimného a letného slnovratu?

Na akej zemepisnej šírke je DST účinný?

Potrebujú tučniaky DST?

Myslíte si, že som divný, keď premýšľam nad týmito otázkami?

Šťastnú stavbu všetkým!

filmnut

Krok 7: Ďalšie odkazy

Toto je odkaz na určenie alebo zmenu adresy na spätnom pakete I2C:

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

PiotrS napísal vynikajúci návod na obsluhu hardvérových adries I2C

playground.arduino.cc/Main/I2cScanner

Tento odkaz naskenuje vaše zariadenie I2C a vráti adresu

Odporúča: