Turinys:

Lengvas vasaros laikas: 7 žingsniai
Lengvas vasaros laikas: 7 žingsniai

Video: Lengvas vasaros laikas: 7 žingsniai

Video: Lengvas vasaros laikas: 7 žingsniai
Video: Svoris, grožis ir kiti stereotipai | Nusirenk iki pusės #7 2024, Lapkritis
Anonim
Lengvas vasaros laikas
Lengvas vasaros laikas
Lengvas vasaros laikas
Lengvas vasaros laikas

Istorija

Šis projektas prasidėjo kaip iššūkis man išmokti programuoti (kodavimą) naudojant „Arduino Uno“ir vieną 1602A skystųjų kristalų ekraną, pirmiausia norėjau perkelti „Arduino“į tikslumo ribas. Tai projektas, skirtas sukurti laikrodį nenaudojant RTC modulio („Real Time Clock“modulio) ir toliau nenaudoti jokio atidėjimo (); komandos, nes uždelsimas (); komanda sustabdo kodą tam tikrą laiką. Kai dirbau su pagrindiniu laiko laikymo kodu, maniau, kad tai gali būti šiek tiek kasdieniška, todėl nusprendžiau pridėti vasaros laiko funkciją kaip naują priedą, kuris pagyvintų ir galbūt sukeltų šiek tiek daugiau susidomėjimo šiuo projektu. Iš pradžių idėja buvo grynai nauja, tačiau kuo daugiau su ja dirbu ir žiūriu ant savo stalo bėgantį fizinį laikrodį, tuo praktiškesnė idėja tampa. Pridėjus RTC modulį ir pakoregavus kodą, šis laikrodis būtų tikslus daugelį metų, o gamintojai ir visuomenė, perkantys tokį laikrodį, kainuotų labai pigiai.

Vasaros laikas (DST) egzistuoja daugiau nei 100 metų („Google“, ji turi gana spalvingą istoriją). Nenoriu kištis į jos politiką, bet tai grubus ir skausmingas pratimas, kuris nepalengvina paprastų žmonių (jūs ir aš) gyvenimo. Dažniausiai džiaugiamės papildoma dienos šviesos valanda, tačiau jos taikymo būdas yra žiaurus. Atėjo laikas iš esmės atnaujinti labai seną idėją.

Su šiuo pavyzdžiu nesunku gyventi kartu su skaitmeniniu amžiumi, o technologijų pažanga lengvai pritaikoma visų formų skaitmeniniams laikrodžiams, tačiau gali padėti išnykti analoginiam laikrodžiui. Vietoj to, kad 1 valanda peršoktų nuo standartinio laiko iki DST laiko, tada DST laikas į standartinį laiką, šis laikrodis yra pagrįstas laipsnišku laiko progresu nuo žiemos saulėgrįžos iki vasaros saulėgrįžos, o po to grįžta į standartinį laiką kitą žiemos saulėgrįžą metai iš metų. Šis perėjimas vyksta 180 dienų iš kiekvieno 6 mėnesių laikotarpio, koregavimas yra 20 sekundžių per dieną 360 dienų, o likusios 5 ar 6 dienos pridedamos prie saulėgrįžų ilgio. Mano pavyzdys čia padidėja 1 minutę kartą per tris dienas per 180 dienų ciklą. Kiekvienų metų birželio 21 d. Arba maždaug tą pačią dieną laikrodis eina viena valanda į priekį, o kiekvienų metų gruodžio 21 d. - maždaug gruodžio 21 d. Keliamieji metai yra lengvai apskaitomi, ypač jei naudojamas RTC. Pietinis pusrutulis taip pat lengvai pritaikomas šiam laikrodžiui, skaidrių skalė yra tiesiog 6 mėnesiai nuo fazės nuo šiaurinio pusrutulio.

Pasaulyje yra trys vietos, kuriose DST būtų gana daug, nebent pusiaujo regionas ir poliai. Nemanau, kad pusiaujo dienos šviesa labai keičiasi, nežinau, ar kurioje nors atogrąžų vietovėje netgi naudojamas DST ir poliai - vėl kita istorija, tik „KAS“laikas prie ašigalių?

1 žingsnis: Apie laikrodį

Apie laikrodį
Apie laikrodį
Apie laikrodį
Apie laikrodį

Mano sukurtas laikrodis yra pagrįstas standartiniu laiku, kuris niekada nesiskiria nuo tarptautiniu mastu pripažinto pasaulinio laikrodžio, jis rodomas pirmoje 1602 skystųjų kristalų ekrano eilutėje. Antroji eilutė yra ta pati laiko skalė, tačiau ji rodo minučių poslinkį nuo vienos saulėgrįžos iki kitos. Nuo žiemos saulėgrįžos iki vasaros saulėgrįžos kompensavimas padidėja viena minutė kas tris dienas iki daugiausiai šešiasdešimt minučių. Nuo vasaros saulėgrįžos iki žiemos saulėgrįžos poslinkis mažėja viena minute kas tris dienas, kol standartinis ir DST laikas yra vienodi.

Šiame pavyzdyje aš naudoju karinį laiką (24 valandų laikrodis) ir standartinį laiką (12 valandų laikrodis) AM ir PM, kad padėtų tiems žmonėms, kurie nėra susipažinę su 24 valandų laiko skale, taip pat suteikė mano kambariui rodyti dienos numerį DST nustatyti nuo. Kodą galima pakeisti, kad būtų rodomas 12 valandų laikrodis. Pridėjau tris mygtukus, prijungtus prie 2, 3 ir 4 skaitmeninių kaiščių, kad būtų galima reguliuoti laiką. Šie mygtukai padidins tik sekundes, minutes ar valandas. Mygtukai yra neprivalomi, laikrodis vis tiek veiks gerai, jei neprijungsite mygtukų ir nereikės keisti kodo. Rekomenduočiau bent naudoti mygtuką sekundėms reguliuoti, o jei nepavyksta pasiekti visiško tikslumo, laikrodį laikykite lėtai, mygtukas perkelia laiką 1 sekundę per sekundę.

Jei paleidžiate laikrodį iš „Arduino IDE“, eskizas įkeliamas ir paleidžiamas maždaug per 5,5–6 sekundes, jei eskizas yra įkeltas į „Arduino“, tada prijunkite jį prie sieninės karpos ar maitinimo šaltinio. 3 sekundės paleisti ir paleisti.

Kai pagaliau paruošiate laikrodį darbui, reikia atlikti rankinį nustatymą.

Šis laikrodis nenaudoja RTC modulio ir nedozuoja „delay ();“komandas.

Jei jums patinka naudoti RTC su „Arduino“, ši koncepcija vis tiek gali būti naudojama. RTC suteiks jums visą informaciją, kurios reikia norint pridėti EDSC laiką. Kodas gali būti visiškai kitoks naudojant RTC modulį, nesu jo pažvelgęs. Jei tai darote, esate gana savarankiškas, tačiau tai puikus būdas mankštinti smegenis.

2 žingsnis: ko jums reikės

Ko jums reikės
Ko jums reikės
Ko jums reikės
Ko jums reikės
Ko jums reikės
Ko jums reikės

PREKIŲ SĄRAŠAS

1 „Arduino Uno“arba „Mega2569“(I2C kaiščiai yra A4 ir A5 ant UNO, o 20 ir 21 - 2560 mega)

Beveik bet kuris kitas „Arduino“turėtų veikti, naudojami kaiščiai gali būti skirtingi. Šiuo tikslu veiks bet kuri valdiklio plokštė. Turėsite perrašyti tos plokštės ar gamintojo kodą.

1 1602 LCD ekranas (pasirinkta spalva)

Aš naudoju „I2C“atgalinę pakuotę su skystųjų kristalų ekranu, man lengviau ir greičiau nustatyti.

Jumperio laidai

PASIRENKAMOS PRIEMONĖS

1 vidutinio dydžio duonos lenta

1-3 momentiniai kontaktiniai mygtukai

1-3 10 K omų rezistoriai

Šis nurodymas yra ilgas, todėl nesileisiu į laikiklį ar spintelę, kuria naudoju rodyti laikrodį. Jei jums patinka šis projektas ir norite sukurti nuolatinę versiją, sukurkite jį pagal savo skonį. Šis dizainas man puikiai tinka, nes šiukšlių dėžėje turėjau viską, ko man reikėjo, ir man patinka jos išvaizda.

PASTABOS:

Kad išvengtumėte dingusio elektros energijos tiekimo, mano paskutinis laikrodis yra maitinamas saulės kolektoriaus, kurį turiu lauke. Saulės skydelis laiko 12 voltų bateriją, įkrautą su reguliatoriumi, kad būtų išvengta per didelio įkrovimo. Ši baterija prijungta prie „Arduino“per maitinimo lizdą, esantį šalia USB prievado. Aš palaikau USB prievadą prijungtą prie tinklo, kad sumažėtų akumuliatoriaus įkrova. Abu maitinimo šaltiniai gali būti naudojami vienu metu, nepažeidžiant „Arduino“. 12 voltų akumuliatorių galima įkrauti iki 14,5 voltų, o tai yra per daug „Arduino“, todėl aš naudoju „Buck“keitiklį, kad akumuliatoriaus maitinimo įtampa sumažėtų iki 9–12 voltų. Mano nuolat įkrauta 12 voltų baterija truks 3 ar 4 dienas, jei dienos bus apsiniaukusios. Mano naudojamas reguliatorius sumažins „Arduino“maitinimą, jei akumuliatoriaus įtampa nukris iki 11 voltų. Akumuliatorius, kurį turiu, yra iš komercinių pastatų avarinio apšvietimo sistemos, maždaug ketvirtadalio mažo automobilio akumuliatoriaus dydžio. Jei ketinate naudoti automobilio akumuliatorių, būtinai laikykite jį gerai vėdinamoje vietoje (lauke), nes automobilio akumuliatoriai kraunasi ir išsikrauna vandenilio ir deguonies dujų, tai yra sprogus derinys.

ĮSPĖJIMAS

GERAI LAIKYKITE BATERIJĄ

VENTILIUOTA PLOTAS, IŠORĖS

3 žingsnis: laidų prijungimas

Laidai
Laidai

Pateikiau visų šio projekto jungčių schemą, jei naudosite duonos lentą, jums reikės vidutinio dydžio plokštės, jungikliams reikės vietos, kad jie būtų išdėstyti, kad grandinė nebūtų paini.

1602 skystųjų kristalų ekrane yra „I2C“paketas, kad būtų lengviau, jei naudosite SPI jungtis, turėsite išsiaiškinti, kaip juo naudotis, ir pakeisti kodą eskizo pradžioje. Niekada nenaudojau SPI jungčių, todėl 2, 3 ir 4 kaiščiai gali būti nepasiekiami trims mygtukams.

Trys mygtukai naudojami laikrodžio laikui reguliuoti. Jie tik perkelia laiką (AHEAD). Paskutiniuose koregavimuose laikykite laikrodį lėtoje pusėje (apie 1–2 sekundes per dieną arba kelias dienas), tokiu būdu, jei reikia, galite pailginti laiką. Kiekvienas mygtukas padidina laiką vienu žingsniu per sekundę, apatinis mygtukas - 2 sekundes per sekundę, vidurinis mygtukas - 1 minutę per sekundę, o viršutinis mygtukas - 1 valandą per sekundę. Turėtų būti pasiektas gana didelis tikslumas, todėl jums nereikės jo labai dažnai koreguoti.

Jei koreguojate sekundes, minutes ar valandas (pvz., Jei minutės yra padidintos 58, 59, 00), valanda pereina į kitą valandą.

Šie trys mygtukai yra paskutinės minutės laikrodžio priedas, jie veikia gerai, tačiau gali būti ir geresnis būdas. Tiesiog nepamirškite, kad jei sugadinsite šią kodo dalį, „delay ();“komanda negali būti naudojama. Aš naudoju šį metodą, nes man nereikia jaudintis dėl perjungimo perjungimo ir keistų šuolių bėgant laikui.

4 veiksmas: ką rodo ekranas

Ką rodo ekranas
Ką rodo ekranas

Į 1602 skystųjų kristalų ekraną įdėjau daug informacijos, kurią reikia šiek tiek paaiškinti:

1 eilutė arba nulinė eilutė „0“, kai kalbama kodu, rodo standartinį laiką. Kairėje yra „STD“, tai reiškia „STandarD“laikas.

Kitas pirmoje eilutėje viduryje yra jūsų vietinis standartinis laikas. Nepradėkite vasaros laiko, laikrodis tai parodys antroje eilutėje.

Ši laiko skalė yra 12 valandų laikrodis, todėl dešinėje pusėje yra „AM“arba „PM“, rodantis rytą arba po pietų.

2 eilutė arba pirmoji eilutė „1“, kai kalbama kodu, rodo vasaros laiką, kuris skiriasi priklausomai nuo metų dienos. „DST“kairėje reiškia „vasaros laikas“

Antrosios eilutės viduryje yra jūsų vietinis karinis laikas, kuris yra 24 valandų laikrodis. Išgirsite, pavyzdžiui, „šešis šimtus valandų“.

Dešinėje pusėje yra metų diena, nurodyta žiemos saulėgrįžoje, Šiaurės pusrutulyje gruodžio 21 d. (Apytiksliai) yra nulinė diena „0“, o pietiniame pusrutulyje birželio 21 d. (Apytiksliai) yra nulinė diena „0“.

Pirmą kartą nustatydamas laikrodį pateikiau du.pdf failus. Pasirinkite failą, nurodantį pusrutulį, kuriame gyvenate.

Trys mygtukai dešinėje padidina sekundes, minutes ir valandas iš apačios į viršų.

5 žingsnis: eskizų sąranka

Eskizo sąranka
Eskizo sąranka

Pradiniam paleidimui reikia nustatyti kelias kodo eilutes. Kai kurias iš šių eilučių reikia keisti kiekvieną kartą, kai atjungiate laikrodį ir keičiate eskizo kintamųjų reikšmes. Jei paleisite IDE laikrodį, įkėlimas ir paleidimas užtruks apie 6 sekundes. Jei įkeliate eskizą iš IDE, tada atjunkite laikrodį ir paleiskite jį iš sienos karpos ar maitinimo šaltinio, eskizas bus paleistas maždaug per 2,5 sekundės.

11 eilutė „LiquidCrystal_I2C lcd“(0x27, 2, 1, 0, 4, 5, 6, 7);

Ši eilutė skirta LCD ekranui ir nustato tinkamą I2C atgalinės pakuotės adresą. 0x27 yra bet kurios pirktos atgalinės pakuotės adresas. Jei įjungiate laikrodį, bet nerodomi jokie duomenys, bet jis užsidega, jūsų LCD ekrane tikriausiai skiriasi adresas. Žemiau įdėsiu nuorodą, kurioje bus aprašyta, kaip pakeisti LCD atgalinės pakuotės adresą arba rasti adresą.

24 eilutės per minutęSt = 35;

Nustatykite standartinio laikrodžio pradžios minutę, paprastai nustatykite ją likus 5 minutėms iki laikrodžio paleidimo, kad būtų nustatytas nustatymo laikas.

25 eilutės per valandąSt = 18;

Nustatykite valandą į STD laiką (24 valandų laikrodis) prasideda. 18 val. Būtų 18 valanda.

26 eilutė DST dienomis = 339;

Atsisiųskite PDF failą „Lengvas DST laikrodžio laiko skalė“(šiaurinis arba pietinis pusrutulis), kuriame gyvenate, suraskite datą ir įveskite dieną # į šią eilutę. (Kairysis stulpelis). Pavyzdys (lapkričio 24 d. Yra 339 diena Šiaurės pusrutulyje ir #156 diena pietiniame pusrutulyje)

27 eilutė int DSTyear = 2019;

Įveskite einamuosius metus.

92 eilutė, jei ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

„PreviousMasterTimeSt“reikia palyginti su milisekundžių skaičiumi, todėl šį „1000“gali tekti pakeisti į 999, atsižvelgiant į vidinį „Arduino“plokštės laikrodį, tada pakoreguokite „previousMicroTime“, kad tiksliai sureguliuotumėte laikrodį. Vidinis laikrodis, nors 16MH gali skirtis nuo vienos plokštės prie kitos.

„PreviousMicroTimeSt“tiksliai sureguliuoja vidinį laikrodį, kad padėtų skaičiuoti tikslią 1 sekundę. Jei laikrodis per greitas, padidinkite mikrosekundes, o jei laikrodis - per lėtas, sumažinkite mikrosekundes ir, jei reikia, sumažinkite milisekundes iki 999, tada pradėkite mikrosekundes maždaug 999, 990 arba padidinkite laikrodžio greitį.

Kiekvienos „Arduino“plokštės greitis yra šiek tiek kitoks, todėl šie skaičiai keisis naudojant kiekvieną lentą. Dalis kodo dar nebuvo išbandyta, tai yra 248 eilutė, skirta kiekvieniems keliamiesiems metams. Per ateinančias kelias savaites aš jį išbandysiu ir prireikus paskelbsiu visus pakeitimus.

6 žingsnis: paskutinės pastabos

Baigiamosios pastabos
Baigiamosios pastabos

Šį projektą lengva sukurti, tačiau koncepcija ir būtini kodo koregavimai gali būti užduotis, neskubėkite ir pagalvokite, laikrodis nesibaigs iki 2037 m. Pabaigos. Aš atidžiai stebėsiu savo laišką, nes esu tikra, kad tokių bus, nesu literatūros genijus, todėl kai kurie mano aprašymai gali būti šiek tiek purvini.

Įtraukti du.pdf failai. Atsisiųskite pusrutulio, kuriame gyvenate, failą. Šis failas suteiks jums reikiamos informacijos, kad tiksliai paleistumėte laikrodį.

Naudojant eskize apdorotą informaciją, būtų lengva 2004A skystųjų kristalų ekrane rodyti ne tik standartinį laiką ir DST laiką, bet ir dieną bei datą. Jei jums patinka šio projekto iššūkiai, pabandykite prijungti 2004A skystųjų kristalų ekraną, tada pridėkite kodą, kad būtų rodoma papildoma informacija, arba jei bus rodomas pakankamas susidomėjimas, atliksiu kitą šio projekto variantą, įskaitant šią papildomą informaciją.

Bandžiau visapusiškai dalyvauti šiame projekte, tačiau aptikau tris aptariamo pasaulio sritis. Šiaurės ašigalis, Pietų ašigalis ir pusiaujas.

Ar DST yra būtinas ar net įmanomas Šiaurės ar Pietų ašigaliuose?

Kiek laiko yra Šiaurės ar Pietų ašigalyje?

Kokia kryptimi keliautumėte palikti Šiaurės ašigalį ar Pietų ašigalį?

Kokia kryptimi iš Pietų ašigalio keliautumėte, kad pasiektumėte Australiją, Šiaurės Ameriką, Europą ar Aziją?

Kokioje laiko juostoje gyvena Kalėdų Senelis?

Ar jam reikia DST?

Kiek laiko šiaip yra Šiaurės ašigalyje?

Kokia kryptimi keliauja Kalėdų Senelis, norėdamas pristatyti visas dovanas?

Kokioje platumoje DST yra veiksminga?

Dabar dėl pusiaujo;

Ar šį laikrodį galima naudoti pusiaujo pusėje?

Ar jie naudotų Šiaurės ar Pietų pusrutulio skalę?

Kokios yra žiemos ir vasaros saulėgrįžos datos?

Kokioje platumoje DST yra veiksminga?

Ar pingvinams reikia DST?

Ar manote, kad man keista galvoti apie šiuos klausimus?

Laimingo statybos visiems!

filmo riešutas

7 žingsnis: kitos nuorodos

Tai yra nuoroda, skirta nustatyti ar pakeisti „I2C“pakuotės adresą:

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

„PiotrS“parašė puikią instrukciją I2C aparatinės įrangos adresams

playground.arduino.cc/Main/I2cScanner

Ši nuoroda nuskaitys jūsų I2C įrenginį ir grąžins adresą

Rekomenduojamas: