Sadržaj:

Jednostavan sat za ljetno računanje vremena: 7 koraka
Jednostavan sat za ljetno računanje vremena: 7 koraka

Video: Jednostavan sat za ljetno računanje vremena: 7 koraka

Video: Jednostavan sat za ljetno računanje vremena: 7 koraka
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Srpanj
Anonim
Jednostavan sat za ljetno računanje vremena
Jednostavan sat za ljetno računanje vremena
Jednostavan sat za ljetno računanje vremena
Jednostavan sat za ljetno računanje vremena

Priča

Ovaj projekt započeo mi je kao izazov za učenje programiranja (kodiranja) s Arduino Uno i jednim LCD zaslonom od 1602A. Prvo sam htio Arduino dovesti do krajnjih granica radi točnosti. Ovo je projekt izgradnje sata bez korištenja RTC modula (modul sata u stvarnom vremenu) i dalje bez korištenja kašnjenja (); naredbe jer delay (); naredba zaustavlja kôd na određeno vrijeme. Dok sam radio na osnovnom čuvanju vremena, mislio sam da bi ovo moglo biti malo svjetovno pa sam odlučio dodati značajku ljetnog računanja vremena kao nov dodatak koji će začiniti stvari i možda stvoriti malo više interesa za ovaj projekt. U početku je ideja bila čisto nova, ali što više radim s njom i gledam fizički sat koji mi radi na stolu, ideja postaje praktičnija. Dodavanjem RTC modula i prilagođavanjem koda ovaj bi sat bio točan godinama koje dolaze i uz vrlo niske troškove za proizvođače i javnost koji kupuju takav sat.

Ljetno računanje vremena (DST) postoji već više od 100 godina (Google, ima prilično šaroliku povijest). Ne želim ulaziti u politiku toga, ali to je gruba i bolna vježba koja ne olakšava život običnim ljudima (ti i ja). Uglavnom uživamo u dodatnom satu dnevnog svjetla, ali način na koji se primjenjuje je brutalan. Vrijeme je za veliku nadogradnju na vrlo staru ideju.

Ovaj je primjer jednostavan za život i sa digitalnim dobom, a napredak tehnologije lako se primjenjuje na sve oblike digitalnih satova, ali bi mogao pomoći u propadanju analognog sata. Umjesto skoka od 1 sata sa standardnog vremena na ljetno računanje vremena, tada je ljetno računanje vremena na standardno vrijeme zasnovano na postupnom napredovanju vremena od zimskog suncostaja do ljetnog solsticija, a zatim iz godine u godinu natrag u standardno vrijeme sljedećeg zimskog solsticija. Taj prijelaz odvija se 180 dana od svakih 6 mjeseci, prilagodba je 20 sekundi dnevno tijekom 360 dana, a preostalih 5 ili 6 dana dodaje se dužini solsticija. Moj primjer ovdje povećava 1 minutu svaka tri dana unutar ciklusa od 180 dana. Na dan 21. lipnja svake godine sat ili sat otprilike jedan sat unaprijed i 21. prosinca svake godine sat se pomaknuo natrag na standardno vrijeme. Prijestupna godina lako se računa, osobito ako se koristi RTC. Južna hemisfera lako se prilagođava i ovom satu, skala klizanja je jednostavno 6 mjeseci izvan faze sa sjeverne hemisfere.

Postoje tri mjesta na svijetu na kojima bi ljetno računanje vremena bilo prilično, osim ako, ekvatorijalna regija i polovi. Mislim da se dnevno svjetlo na ekvatoru ne mijenja puno, ne znam koriste li neka od tropskih područja čak i ljetno računanje vremena, a polovi su opet druga priča, samo 'KOLIKO' je vrijeme uopće na polovima?

Korak 1: O satu

O satu
O satu
O satu
O satu

Sat koji sam stvorio temelji se na standardnom vremenu koje se nikada ne razlikuje od međunarodno prihvaćenog svjetskog sata, to je prikazano u prvom retku LCD zaslona 1602. Drugi redak je iste vremenske ljestvice, ali prikazuje pomak minuta od jednog solsticija do drugog. Od zimskog solsticija do ljetnog solsticija, pomak se povećava jednu minutu svaka tri dana do maksimalno šezdeset minuta. Od ljetnog solsticija do zimskog solsticija, pomak se smanjuje jednu minutu svaka tri dana sve dok standardno vrijeme i ljetno računanje vremena nisu isti.

Za ovaj primjer koristio sam vojno vrijeme (24 -satni sat) i standardno vrijeme (12 -satni sat) AM i PM kako bih pomogao ljudima koji nisu upoznati s 24 -satnom vremenskom skalom. Također mi je dalo sobu da prikaže broj dana po zimskom / zimskom vremenu. postavljeno iz. Kôd se može promijeniti tako da prikazuje 12 -satni sat. Dodao sam tri tipke spojene na digitalne pinove 2, 3 i 4 za podešavanje vremena. Ovi gumbi povećavaju samo sekunde, minute ili sate. Gumbi su izborni, sat će i dalje raditi dobro ako ne povežete gumbe i ne morate mijenjati kôd. Preporučio bih barem korištenje gumba za podešavanje sekundi, a ako se ne može postići potpuna točnost, držite sat na sporoj strani, gumb pomiče vrijeme za 1 sekundu u sekundi.

Ako pokrenete sat s Arduino IDE -a, trebat će otprilike 5,5 do 6 sekundi da se skica učita i pokrene, ako ste skicu učitali na Arduino, uključite je u zidnu bradavicu ili napajanje, bit će potrebno oko 2,5 do 3 sekunde za podizanje sustava i pokretanje.

Kada sat konačno bude spreman za rad, potrebno je ručno postavljanje.

Ovaj sat ne koristi RTC modul niti dozira, koristi "delay ();" naredbe.

Ako volite koristiti RTC s Arduinom, ovaj koncept se i dalje može koristiti. RTC će vam dati sve potrebne podatke za dodavanje vremena EDSC. Kod može biti sasvim drugačiji s RTC modulom, nisam ga proučavao. Ako to učinite, prilično ste sami, ali to je sjajan način za vježbanje mozga.

Korak 2: Ono što će vam trebati

Ono što će vam trebati
Ono što će vam trebati
Ono što će vam trebati
Ono što će vam trebati
Ono što će vam trebati
Ono što će vam trebati

POPIS ZA KUPOVINU

1 Arduino Uno ili Mega2569 (I2C pinovi su A4 i A5 na UNO i 20 i 21 na 2560 Mega)

Skoro svaki drugi Arduino bi trebao raditi, upotrijebljene iglice mogu biti različite. Što se toga tiče, svaka kontrolna ploča će raditi. Morat ćete prepisati kôd za tu ploču ili proizvođača.

1 1602 LCD zaslon (boja po vašem izboru)

Koristim I2C stražnji paket s LCD -om, postavljanje mi je lakše i brže.

Kratkospojne žice

NEOBVEZNE OPSKRBE

1 daska za kruh srednje veličine

1-3 tipke za trenutni kontakt

1-3 10 K ohmski otpornici

Ovo uputstvo je dugo, pa ne ulazim u montažu ili ormar koji sam koristio za prikaz sata. Ako vam se sviđa ovaj projekt i želite napraviti stalnu verziju, dizajnirajte ga po svom ukusu. Ovaj dizajn je savršen za mene jer sam u kutiji za smeće imao sve što mi je potrebno i sviđa mi se njegov izgled.

BILJEŠKE:

Da bih izbjegao nestanke struje, posljednji sat napaja solarna ploča koju imam vani. Solarna ploča drži napunjenu bateriju od 12 volti s regulatorom na njoj kako bi se spriječilo prekomjerno punjenje. Ova je baterija spojena na Arduino putem utičnice za napajanje pored USB priključka. Držim USB priključak spojen na mrežu kako bih smanjio potrošnju baterije. Oba izvora napajanja mogu se koristiti istovremeno bez oštećenja Arduina. Baterija od 12 volti može se puniti do 14,5 volti max što je previsoko za Arduino pa koristim pretvarač u dolarima da smanjim napon napajanja iz baterije na raspon od 9 do 12 volti. Baterija od 12 volti koju držim napunjenom trajat će 3 ili 4 dana ako su dani oblačni. Regulator koji koristim isključit će napajanje Arduina ako napon baterije padne na 11 volti. Baterija koju imam dolazi iz sustava svjetla za hitne slučajeve za poslovne zgrade, otprilike je jedna četvrtina veličine akumulatora za male automobile. Ako namjeravate koristiti automobilski akumulator, svakako ga držite u dobro prozračenom prostoru (vani), akumulatori tijekom punjenja i pražnjenja ispuštaju vodik i kisik, ovo je eksplozivna kombinacija.

UPOZORENJE

ODRŽAVAJTE BATERIJU U DOBROJ

VENTILIRANO PODRUČJE, IZVAN

Korak 3: Ožičenje

Ožičenje
Ožičenje

Dao sam shemu za sve veze u ovom projektu. Ako koristite matičnu ploču, trebat će vam ploča srednje veličine, prekidačima će trebati prostora za raspodjelu kako krug ne bi bio zbunjujući.

LCD zaslon 1602 ima I2C stražnji paket radi jednostavnosti. Ako koristite SPI veze, morat ćete potražiti kako ga koristiti i promijeniti kôd blizu početka skice. Nikada nisam koristio SPI veze pa pinovi 2, 3 i 4 možda neće biti dostupni za tri tipke.

Tri tipke koriste se za podešavanje vremena na satu. Oni samo unaprjeđuju vrijeme (NAPRIJED). U posljednjim prilagodbama držite sat u kodu na sporoj strani (oko 1 do 2 sekunde dnevno ili nekoliko dana) na ovaj način možete prema potrebi unaprijediti vrijeme. Svaki gumb pomiče vrijeme za jedan prirast u sekundi, donji gumb 2 sekunde u sekundi, srednji gumb 1 minutu u sekundi, a gornji gumb 1 sat u sekundi. Prilično visok stupanj točnosti trebao bi biti izvediv pa ga nećete morati često prilagođavati.

Ako podešavate sekunde, minute ili sate (na primjer, ako su minute napredovale 58, 59, 00), sat će se pomaknuti na sljedeći sat.

Ova tri gumba dodatak su satu u zadnji čas, dobro rade, ali možda postoji bolji način. Sjetite se samo ako se petljate u ovaj dio koda "delay ();" naredba se ne može koristiti. Koristio sam ovu metodu jer ne moram brinuti o odbijanju prekidača i čudnim skokovima u vremenu.

Korak 4: Što prikazuje zaslon

Što prikazuje zaslon
Što prikazuje zaslon

Na 1602 LCD zaslon stavio sam mnogo informacija koje trebaju neko objašnjenje:

Redak 1 ili redak nula '0' kada razgovarate u kodu, prikazuje standardno vrijeme. S lijeve strane je 'STD', što znači 'STandarD' vrijeme.

Sljedeće na prvom retku u sredini je vaše lokalno standardno vrijeme. Nemojte počinjati s ljetnim računanjem vremena, sat će to prikazati u drugom retku.

Ova vremenska skala je 12 -satni sat pa je s desne strane 'AM ili' PM 'za označavanje jutra ili poslije podne.

Redak 2 ili redak 1 '1' kada razgovarate u kodu, prikazuje ljetno računanje vremena koje varira ovisno o danu u godini. "DST" s lijeve strane znači "Ljetno računanje vremena"

U sredini drugog reda nalazi se vaše lokalno vojno vrijeme koje je 24 -satni sat. Na primjer, čut ćete ga kao 'oh šest stotina sati'.

Na desnoj strani je dan u godini prema zimskom solsticiju, na sjevernoj hemisferi 21. prosinca (otprilike) je nulti dan '0', a na južnoj hemisferi 21. lipnja (približno) je nulti dan '0'.

Dao sam dvije.pdf datoteke za referencu pri prvom postavljanju sata. Odaberite datoteku koja se odnosi na hemisferu u kojoj živite.

Tri gumba s desne strane povećavaju sekunde, minute i sate odozdo prema gore.

Korak 5: Postavljanje skice

Postavljanje skice
Postavljanje skice

Postoji nekoliko redaka koda koje je potrebno postaviti za početno pokretanje. Neke od ovih redaka potrebno je mijenjati svaki put kada isključite sat i promijenite vrijednosti varijabli na skici. Ako pokrenete sat za IDE, učitavanje i pokretanje trajat će oko 6 sekundi. Ako umetnete skicu iz IDE -a, odspojite sat i ponovno ga pokrenite sa zidne bradavice ili napajanja, skica će se pokrenuti za oko 2,5 sekunde.

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

Ova linija obraća LCD zaslon i postavlja ispravnu adresu I2C paketa. 0x27 je adresa bilo kojeg ruksaka koji sam kupio. Ako uključite sat, ali nema prikazanih podataka, ali on svijetli, adresa se vjerojatno razlikuje na vašem LCD zaslonu. U nastavku ću staviti vezu za opis kako promijeniti adresu vašeg LCD zaslona ili pronaći adresu.

Linije 24 int minuteSt = 35;

Postavite početnu minutu za standardni sat, obično je postavite 5 minuta prije pokretanja sata kako biste omogućili vrijeme postavljanja.

Linije 25 int hourSt = 18;

Postavljanje sata na STD vrijeme (24 -satni sat) počinje u. 18 sati bi bilo 18 sati.

Red 26 int DSTdays = 339;

Preuzmite i pogledajte pdf datoteku "Easy DST Clock Time Scale" (Sjeverna ili južna hemisfera) u kojoj živite, potražite datum i umetnite Dan # u ovaj redak. (Lijevi stupac). Primjer (24. studenog je dan #339 na sjevernoj hemisferi i dan #156 na južnoj hemisferi)

Red 27 int DSTyear = 2019;

Unesite tekuću godinu.

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

"PreviousMasterTimeSt" treba se usporediti s brojem milisekundi pa će se možda "1000" morati promijeniti na 999 ovisno o unutarnjem satu Arduino ploče, a zatim prilagoditi prethodni MicroTime za fino podešavanje sata. Unutarnji sat iako 16MH ima varijacije od ploče do ploče.

"PreviousMicroTimeSt" fino podešava unutarnji sat kako bi pomogao odbrojati točnih 1 sekundu. Ako je sat prebrz, povećajte mikrosekunde, a ako je prespor, smanjite mikrosekunde i po potrebi smanjite milisekunde na 999, a zatim pokrenite mikrosekunde na oko 999, 990 ili povećajte brzinu sata.

Svaka Arduino ploča ima malo drugačiju brzinu pa će se ti brojevi mijenjati sa svakom pločom koju koristite. Dio koda još nije testiran, ovo je redak 248 za svaku prijestupnu godinu. U sljedećih nekoliko tjedana testirat ću ga i po potrebi objaviti sve promjene.

Korak 6: Završne napomene

Završne bilješke
Završne bilješke

Ovaj projekt je lako izgraditi, ali koncept i potrebne prilagodbe koda mogu biti zadatak, odvojite vrijeme i razmislite, sat ne ističe do kraja 2037. Pomno ću paziti na svoj e -poštom za pitanja jer sam siguran da će ih biti, nisam književni genij pa neki moji opisi mogu biti pomalo blatnjavi.

Uključene su dvije.pdf datoteke. Preuzmite datoteku za hemisferu u kojoj živite. Ova će vam datoteka dati potrebne podatke za točno pokretanje sata.

S podacima manipuliranim skicom bilo bi lako prikazati ne samo standardno vrijeme i ljetno računanje vremena već i dan i datum na LCD -u od 2004A. Ako vam se sviđaju izazovi koje ovaj projekt pruža, pokušajte spojiti LCD zaslon od 2004A, zatim dodajte kôd za prikaz dodatnih informacija ili ako se pokaže dovoljno interesa, učinit ću još jednu varijaciju ovog projekta, uključujući ove dodatne informacije.

Pokušao sam biti sveobuhvatan u ovom projektu, ali pronašao sam tri područja u pitanju. Sjeverni pol, južni pol i ekvator.

Je li ljetno računanje vremena potrebno ili čak moguće na sjevernom ili južnom polu?

Koliko je sati na sjevernom ili južnom polu?

U kojem biste smjeru putovali da napustite Sjeverni ili Južni pol?

U kojem biste smjeru s južnog pola putovali do Australije, Sjeverne Amerike, Europe ili Azije?

U kojoj vremenskoj zoni živi Djed Mraz?

Treba li mu ljetno računanje vremena?

Koliko je sati uopće na Sjevernom polu?

U kojem smjeru ide Djed Mraz kako bi isporučio sve svoje darove?

Na kojoj geografskoj širini je učinkovit DST?

Sada za ekvator;

Može li se ovaj sat koristiti na ekvatoru?

Bi li koristili ljestvicu sjeverne ili južne hemisfere?

Koji su datumi za zimski i ljetni solsticij?

Na kojoj geografskoj širini je učinkovit DST?

Trebaju li pingvini ljetno računanje vremena?

Mislite li da sam čudan što razmišljam o ovim pitanjima?

Sretna gradnja svima!

orah

Korak 7: Ostale veze

Ovo je veza za određivanje ili promjenu adrese na pozadini paketa I2C:

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

PiotrS je napisao izvrsne upute za I2C hardverske adrese

playground.arduino.cc/Main/I2cScanner

Ova će veza skenirati vaš I2C uređaj i vratiti adresu

Preporučeni: