Kazalo:

Preprosta ura za poletni čas: 7 korakov
Preprosta ura za poletni čas: 7 korakov

Video: Preprosta ura za poletni čas: 7 korakov

Video: Preprosta ura za poletni čas: 7 korakov
Video: Самые известные Животные-людоеды, убившие более 1000 человек. Большой выпуск 2024, Julij
Anonim
Enostavna ura za poletni čas
Enostavna ura za poletni čas
Enostavna ura za poletni čas
Enostavna ura za poletni čas

Zgodba

Ta projekt se mi je začel kot izziv pri učenju programiranja (kodiranja) z Arduino Uno in enim LCD zaslonom 1602A, najprej sem želel Arduino potisniti do meja za natančnost. To je projekt za izgradnjo ure brez uporabe modula RTC (modul ure v realnem času) in nadalje ne uporablja nobene zakasnitve (); ukaze, ker delay (); ukaz za določen čas zaustavi kodo. Ko sem delal skozi osnovno časovno kodo, se mi je zdelo, da je to morda malo vsakdanje, zato sem se odločil, da dodam funkcijo poletnega časa kot nov dodatek, ki bo popestril stvari in morda ustvaril malo več zanimanja za ta projekt. Sprva je bila ideja povsem nova, a bolj ko delam z njo in opazujem fizično uro, ki teče na mizi, bolj ideja postane bolj praktična. Z dodajanjem modula RTC in prilagoditvijo kode bi bila ta ura natančna v prihodnjih letih in po zelo nizkih stroških za proizvajalce in javnost, ki takšno uro kupi.

Poletni čas ali (DST) obstaja že več kot 100 let (poiščite Google, ima precej pisano zgodovino). Ne želim se spuščati v politiko tega, vendar je to groba in boleča vaja, ki preprostim ljudem (tebi in meni) ne olajša življenja. Večinoma uživamo v dodatni uri dnevne svetlobe, vendar je način njene uporabe brutalen. Čas je za večjo nadgradnjo zelo stare ideje.

Ta primer je enostaven za življenje z digitalno dobo in z napredkom tehnologije, ki se zlahka uporablja za vse oblike digitalnih ur, vendar bi lahko pomagal k propadu analogne ure. Namesto 1 urnega skoka iz standardnega časa na čas poletnega in poletnega časa, potem čas med poletnim in standardnim časom temelji na postopnem napredovanju časa od zimskega sončnega obrata do poletnega solsticija, nato pa se leto za letom vrne v standardni čas ob naslednjem zimskem solsticiju. Ta prehod poteka 180 dni od vsakih 6 mesecev, prilagoditev je 20 sekund na dan 360 dni, preostalih 5 ali 6 dni pa se doda dolžini solsticija. Moj primer tukaj povečuje 1 minuto enkrat na tri dni v 180 -dnevnem ciklu. Na dan 21. junija ali približno uro je ura polno uro naprej, 21. decembra ali približno vsako leto pa se je ura pomaknila nazaj na standardni čas. Prestopno leto se zlahka izračuna, še posebej, če se uporablja RTC. Tudi južna polobla se zlahka prilagodi tej uri, lestvica diapozitiva je preprosto 6 mesecev izven faze od severne poloble.

Obstajajo trije kraji na svetu, kjer bi bil poletni čas precej enak, razen če ekvatorialna regija in polovi. Mislim, da se dnevna svetloba na ekvatorju ne spreminja veliko, ne vem, ali katero od tropskih območij sploh uporablja poletni čas in so polovi spet druga zgodba, samo 'KOLIKO' je ura sploh na polih?

1. korak: O uri

O uri
O uri
O uri
O uri

Ura, ki sem jo ustvaril, temelji na standardnem času, ki se nikoli ne razlikuje od mednarodno sprejete svetovne ure, to je prikazano v prvi vrstici LCD -zaslona 1602. Druga vrstica je na isti časovni lestvici, vendar prikazuje odmik minut od enega solsticija do drugega. Od zimskega solsticija do poletnega solsticija se odmik poveča na minuto vsake tri dni do največ šestdeset minut. Od poletnega solsticija do zimskega solsticija se odmik zmanjša na minuto vsake tri dni, dokler standardni čas in poletni čas nista enaka.

V tem primeru sem uporabil vojaški čas (24 -urna ura) in standardni čas (12 -urna ura) AM in PM, da bi pomagal tistim, ki ne poznajo 24 -urne časovne lestvice, prav tako pa je moji sobi omogočil prikaz dnevne številke nastavljeno od. Kodo lahko spremenite tako, da prikaže 12 -urno uro. Za prilagoditev časa sem dodal tri gumbe, povezane z digitalnimi zatiči 2, 3 in 4. Ti gumbi povečajo le sekunde, minute ali ure. Gumbi so izbirni, ura bo še vedno delovala dobro, če gumbov ne priključite in kode ni treba spreminjati. Priporočam vsaj uporabo gumba za prilagajanje sekund, če pa ni mogoče doseči popolne natančnosti, pustite uro na počasni strani, gumb premakne čas za 1 sekundo na sekundo.

Če zaženete uro iz Arduino IDE, bo trajalo približno 5,5 do 6 sekund, da se skica naloži in zažene, če imate skico naloženo na Arduino, jo priključite v stensko bradavico ali napajalnik, kar traja približno 2,5 do 3 sekunde za zagon in zagon.

Ko končno pripravite uro za delovanje, je potrebno nekaj ročne nastavitve.

Ta ura ne uporablja modula RTC niti odmerka, ne uporablja "delay ();" ukaze.

Če radi uporabljate RTC z Arduinom, lahko ta koncept še vedno uporabljate. RTC vam bo dal vse potrebne informacije za dodajanje časa EDSC. Koda je lahko z modulom RTC precej drugačna, nisem je preučil. Če to počnete, ste precej sami, vendar je to odličen način za razgibavanje možganov.

2. korak: Kaj boste potrebovali

Kaj boste potrebovali
Kaj boste potrebovali
Kaj boste potrebovali
Kaj boste potrebovali
Kaj boste potrebovali
Kaj boste potrebovali

NAKUPOVALNI SEZNAM

1 Arduino Uno ali Mega2569 (nožici I2C sta A4 in A5 na UNO ter 20 in 21 na 2560 Mega)

Skoraj vsak drug Arduino bi moral delovati, uporabljeni zatiči so lahko drugačni. V tem primeru bo delovala vsaka krmilna plošča. Kodo za to ploščo ali proizvajalca boste morali prepisati.

1 1602 LCD zaslon (barva po vaši izbiri)

Z LCD -jem uporabljam hrbtni paket I2C, nastavitev mi je lažja in hitrejša.

Mostične žice

NEOBVEZNE OSKRBE

1 plošča za kruh srednje velikosti

1-3 kratki stikalni gumbi

1-3 10 K ohmski upori

Ta navodila so dolga, zato ne bom šel v montažo ali omaro, ki sem jo uporabil za prikaz ure. Če vam je ta projekt všeč in želite narediti trajno različico, jo oblikujte po svojih željah. Ta zasnova je kot nalašč zame, ker sem imel v škatli za smeti vse, kar sem potreboval, in všeč mi je njen videz.

OPOMBE:

Da bi se izognili padcem izpada električne energije, zadnjo uro napaja sončna plošča, ki jo imam zunaj. Sončna plošča ohranja 12 -voltno baterijo napolnjeno z regulatorjem na njej, da prepreči prekomerno polnjenje. Ta baterija je priključena na Arduino prek priključka za napajanje poleg vrat USB. Vrata USB imam priključena na omrežje, da zmanjšam porabo baterije. Oba vira napajanja lahko uporabljate hkrati brez poškodb Arduina. 12 -voltno baterijo lahko napolnite do največ 14,5 voltov, kar je za Arduino previsoko, zato uporabljam pretvornik za znižanje napajalne napetosti iz baterije na območje od 9 do 12 voltov. 12 -voltna baterija, ki jo hranim napolnjene, bo trajala 3 ali 4 dni, če so dnevi oblačni. Regulator, ki ga uporabljam, bo izklopil napajanje Arduina, če napetost baterije pade na 11 voltov. Akumulator, ki ga imam, prihaja iz sistema osvetlitve v sili za poslovne stavbe, njegova velikost je približno ena četrtina majhnega avtomobilskega akumulatorja. Če nameravate uporabiti avtomobilski akumulator, ga hranite v dobro prezračevanem prostoru (zunaj), saj akumulatorji med polnjenjem in praznjenjem oddajajo vodik in kisik, je to eksplozivna kombinacija.

OPOZORILO

AKUMULATOR VZDRŽITE

PREZRAČENO PODROČJE, ZUNAJ

3. korak: Ožičenje

Ožičenje
Ožičenje

Za vse povezave v tem projektu sem predložil shemo. Če uporabljate ploščico, boste potrebovali ploščo srednje velikosti, stikala bodo potrebovala prostor za razporeditev, da vezje ne bo zmedeno.

Zaslon LCD 1602 ima zaradi enostavnosti hrbtni paket I2C, če uporabljate povezave SPI, boste morali poiskati, kako ga uporabljati, in spremeniti kodo na začetku skice. Nikoli nisem uporabljal povezav SPI, zato zatiči 2, 3 in 4 morda niso na voljo za tri gumbe.

Trije gumbi se uporabljajo za nastavitev ure na uri. Napredujejo le čas (NAPREJ). V končnih nastavitvah naj bo ura v kodi na počasni strani (približno 1 do 2 sekundi na dan ali več dni), na ta način lahko po potrebi podaljšate čas. Vsak gumb napreduje čas za en prirastek na sekundo, spodnji gumb 2 sekundi na sekundo, srednji gumb 1 minuto na sekundo in zgornji gumb 1 uro na sekundo. Dokaj visoka stopnja natančnosti bi morala biti izvedljiva, zato vam je ne bo treba pogosto prilagajati.

Če nastavljate sekunde, minute ali ure (na primer, če so minute napredovale 58, 59, 00), se bo ura premaknila na naslednjo uro.

Ti trije gumbi so dodatek ure v zadnji minuti, delujejo dobro, vendar je morda boljši način. Ne pozabite, da če se zapletete s tem delom kode, bo "delay ();" ukaza ni mogoče uporabiti. To metodo sem uporabil, ker mi ni treba skrbeti zaradi odklopa stikal in čudnih skokov v času.

4. korak: Kaj prikazuje zaslon

Kaj prikazuje zaslon
Kaj prikazuje zaslon

Na LCD zaslon 1602 sem dal veliko informacij, ki jih je treba razložiti:

Vrstica 1 ali vrstica nič '0', ko govorite v kodi, prikazuje standardni čas. Na levi je 'STD', to pomeni 'STandarD' čas.

Naslednji v prvi vrstici na sredini je vaš lokalni standardni čas. Ne začnite s poletnim časom, ura bo to prikazala v drugi vrstici.

Ta časovna lestvica je 12 -urna ura, zato je na desni strani 'AM ali' PM ', ki označuje jutro ali popoldan.

Vrstica 2 Ali vrstica ena "1", ko govorite v kodi, prikazuje poletni čas, ki se razlikuje glede na dan v letu. "DST" na levi pomeni "poletni čas"

Sredi druge vrstice je vaš lokalni vojaški čas, ki je 24 -urna ura. Slišali boste na primer "oh šeststo ur".

Na desni strani je dan v letu, ki se nanaša na zimski solsticij, na severni polobli je 21. december (približno) dan nič '0', na južni polobli pa 21. junij (približno) dan nič '0'.

Za referenco sem ob prvi nastavitvi ure zagotovil dve datoteki.pdf. Izberite datoteko, ki se nanaša na poloblo, v kateri živite.

Trije gumbi na desni strani povečujejo sekunde, minute in ure od spodaj navzgor.

5. korak: Nastavitev skice

Sketch Setup
Sketch Setup

Za začetni zagon je treba nastaviti več vrstic kode. Nekatere od teh vrstic je treba spremeniti vsakič, ko odklopite uro in spremenite vrednosti spremenljivk na skici. Če zaženete uro za IDE, bo za nalaganje in zagon trajalo približno 6 sekund. Če skico naložite iz IDE, odklopite uro in jo znova zaženite s stenske bradavice ali napajalnika, se bo skica zagnala v približno 2,5 sekundah.

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

Ta vrstica obravnava LCD zaslon in nastavi pravilen naslov hrbtnega paketa I2C. 0x27 je naslov katerega koli nahrbtnika, ki sem ga kupil. Če vklopite uro, vendar podatki niso prikazani, vendar sveti, je naslov na vašem LCD -ju verjetno drugačen. Spodaj bom dal povezavo za opis, kako spremeniti naslov vašega nahrbtnika LCD ali najti naslov.

Vrstice 24 int minuteSt = 35;

Nastavite začetno minuto za standardno uro, običajno jo nastavite 5 minut pred začetkom ure, da omogočite čas nastavitve.

Vrstice 25 int uraSt = 18;

Nastavite uro na čas STD (24 -urna ura), ki se začne v. 18.00 bi bila ura 18.

Vrstica 26 int DSTdays = 339;

Prenesite in si oglejte datoteko PDF "Easy DST Clock Time Scale" (severna ali južna polobla), v kateri živite, poiščite datum in v to vrstico vnesite dan #. (Levi stolpec). Primer (24. november je dan #339 na severni polobli in dan #156 na južni polobli)

Vrstica 27 int DSTyear = 2019;

Vnesite tekoče leto.

Vrstica 92 if ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

"PreviousMasterTimeSt" je treba primerjati s številom milisekund, zato se bo morda "1000" spremenilo na 999, odvisno od notranje ure na plošči Arduino, nato pa prilagodite prejšnji MicroTime za natančno nastavitev ure. Notranja ura, čeprav ima 16MH različice od plošče do plošče.

"PreviousMicroTimeSt" natančno prilagodi notranjo uro, da pomaga odšteti natančno 1 sekundo. Če je ura prehitra, povečajte mikrosekunde in če je ura prepočasna, zmanjšajte mikrosekunde in po potrebi znižajte milisekunde na 999 in nato zaženite mikrosekunde pri približno 999, 990 ali povečajte hitrost ure.

Vsaka plošča Arduino ima nekoliko drugačno hitrost, zato se bodo te številke spreminjale z vsako ploščo, ki jo uporabljate. Del kode še ni bil preizkušen, to je vrstica 248 za vsako prestopno leto. V naslednjih nekaj tednih ga bom preizkusil in po potrebi objavil vse spremembe.

Korak 6: Končne opombe

Končne opombe
Končne opombe

Ta projekt je enostavno zgraditi, vendar sta lahko koncept in potrebne prilagoditve kode naloga, vzemite si čas in premislite, ura ne poteče do konca leta 2037. Bom pozorno spremljal svoje pošljite e -pošto za vprašanja, saj sem prepričan, da jih bo nekaj, nisem literarni genij, zato so nekateri moji opisi morda nekoliko blatni.

Vključeni sta dve datoteki.pdf. Prenesite datoteko za poloblo, v kateri živite. Ta datoteka vam bo dala potrebne podatke za natančen zagon ure.

Z informacijami, ki so na skici, bi bilo enostavno prikazati ne le standardni čas in čas poletnega / poletnega časa, temveč tudi dan in datum na LCD -prikazovalniku 2004A. Če so vam všeč izzivi, ki jih ponuja ta projekt, poskusite povezati zaslon LCD 2004A, nato dodajte kodo za prikaz dodatnih informacij ali če se pokaže dovolj zanimanja, bom naredil še eno različico tega projekta, vključno s temi dodatnimi informacijami.

Pri tem projektu sem poskušal biti vse vključujoč, vendar sem našel tri področja zadevnega sveta. Severni pol, južni tečaj in ekvator.

Ali je poletni in poletni čas potreben ali celo možen na severnem ali južnem polu?

Kdaj je ura na severnem ali južnem polu?

V katero smer bi odšli s severnega ali južnega pola?

V katero smer bi z južnega pola prišli do Avstralije, Severne Amerike, Evrope ali Azije?

V katerem časovnem pasu živi Božiček?

Ali potrebuje letni čas?

Kdaj je sploh ura na severnem polu?

V katero smer potuje Božiček, da dostavi vsa darila?

Na kateri zemljepisni širini je učinkovit letni čas?

Zdaj za ekvator;

Ali je ta ura uporabna na ekvatorju?

Ali bi uporabili lestvico severne ali južne poloble?

Kakšni so datumi za zimski in poletni solsticij?

Na kateri zemljepisni širini je učinkovit letni čas?

Ali pingvini potrebujejo letni čas?

Mislite, da sem čuden, ko razmišljam o teh vprašanjih?

Srečna gradnja vsem!

filmnut

7. korak: Druge povezave

To je povezava za določitev ali spremembo naslova v zadnjem paketu I2C:

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

PiotrS je napisal odlično navodilo za naslove strojne opreme I2C

playground.arduino.cc/Main/I2cScanner

Ta povezava bo skenirala vašo napravo I2C in vrnila naslov

Priporočena: