Sadržaj:

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

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

Video: Lagani sat za ljetno računanje vremena: 7 koraka
Video: Красивая история о настоящей любви! Мелодрама НЕЛЮБОВЬ (Домашний). 2024, Juli
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 je za mene počeo kao izazov za učenje programiranja (kodiranja) sa Arduino Uno i jednim LCD ekranom od 1602A, prvo sam htio Arduino dovesti do njegovih granica radi tačnosti. Ovo je projekt za izgradnju sata bez upotrebe 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 funkciju 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 sat bi bio tačan godinama koje dolaze i po vrlo niskim cijenama 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 historiju). 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 dnevne svjetlosti, ali način na koji se primjenjuje je brutalan. Vrijeme je za veliku nadogradnju na vrlo staru ideju.

Ovaj primjer je lak 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 postepenom napredovanju vremena od zimskog solsticija do ljetnog solsticija, a zatim iz godine u godinu natrag u standardno vrijeme. Ovaj prijelaz odvija se 180 dana od svakih 6 mjeseci, prilagođavanje je 20 sekundi dnevno tokom 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. Otprilike 21. juna svake godine sat je punih 1 sat unaprijed, a 21. decembra ili približno svake godine sat se pomaknuo nazad na standardno vrijeme. Prijestupna godina lako se računa, posebno ako se koristi RTC. Južna hemisfera se lako 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 mnogo, ne znam da li neko od tropskih područja uopće koristi 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 zasniva se na standardnom vremenu koje nikada ne varira od međunarodno prihvaćenog svjetskog sata, ovo se prikazuje u prvom retku LCD ekrana 1602. Druga linija je iste vremenske skale, ali prikazuje pomak minuta od jednog solsticija do drugog. Od zimskog i ljetnog solsticija, pomak se povećava za jednu minutu svaka tri dana do maksimalno šezdeset minuta. Od ljetnog solsticija do zimskog solsticija, pomak se smanjuje po jednu minutu svaka tri dana sve dok standardno vrijeme i ljetno računanje vremena nisu isti.

Za ovaj primjer koristio sam vojno vrijeme (24 sata) i standardno vrijeme (12 sati) AM i PM kako bih pomogao ljudima koji nisu upoznati sa 24 -satnom vremenskom skalom, a također mi je dalo sobu da prikaže broj dana na kojem je ljetno računanje vremena set from. 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. Ove tipke povećavaju samo sekunde, minute ili sate. Dugmad su opcionalna, sat će i dalje raditi dobro ako ne povežete dugmad 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, tipka pomiče vrijeme 1 sekundu u sekundi.

Ako pokrenete sat sa Arduino IDE -a, trebat će oko 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 pokretanje i pokretanje.

Potrebno je ručno podešavanje kada sat konačno bude spreman za rad.

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

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

Korak 2: Šta će vam trebati

Šta će vam trebati
Šta će vam trebati
Šta će vam trebati
Šta će vam trebati
Šta će vam trebati
Šta će vam trebati

LISTA KUPOVINA

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, korišteni pinovi mogu biti različiti. Što se toga tiče, bilo koja kontrolna ploča će raditi. Morat ćete prepisati kôd za tu ploču ili proizvođača.

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

Koristim I2C back pack s LCD -om, lakše i brže se postavljam.

Žice za kratkospojnike

OPCIONE OPSKRBE

1 daska za hleb srednje veličine

1-3 dugmad za trenutni kontakt

1-3 10 K ohmski otpornici

Ovo uputstvo je dugo, pa ne idem 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 svojoj kutiji za smeće imao sve što mi je potrebno i sviđa mi se njegov izgled.

NAPOMENE:

Da bih izbjegao nestanke struje, posljednji sat napaja solarna ploča koju imam vani. Solarni panel drži napunjenu bateriju od 12 volti s regulatorom na njoj kako bi se spriječilo prekomjerno punjenje. Ova baterija je spojena na Arduino putem utičnice za napajanje pored USB priključka. Držim USB priključak povezan 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 sistema 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 automobila ispuštaju vodik i kisik pri punjenju i pražnjenju, 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 prostor za raspodjelu kako krug ne bi bio zbunjujući.

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

Tri tastera se koriste za podešavanje vremena na satu. Oni samo unaprjeđuju vrijeme (NAPRIJED). U konačnim podešavanjima, držite sat u kodu na sporoj strani (oko 1 do 2 sekunde dnevno ili nekoliko dana), na ovaj način možete po potrebi unaprijediti vrijeme. Svako dugme napreduje za jedan korak u sekundi, donje dugme 2 sekunde u sekundi, srednje dugme 1 minutu u sekundi i gornje dugme 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 preći na sljedeći sat.

Ova tri dugmeta su dodatak satu u zadnji čas, dobro rade, ali možda postoji bolji način. Samo zapamtite da 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: Šta prikazuje ekran

Šta prikazuje ekran
Šta prikazuje ekran

Stavio sam mnogo informacija na 1602 LCD ekran koji trebaju neko objašnjenje:

Linija 1 ili linija nula '0' kada razgovarate u kodu prikazuje standardno vrijeme. S lijeve strane je 'STD', ovo znači 'STandarD' vrijeme.

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

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

Red 2 Ili prvi red '1' kada govorite 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 -satno. Na primjer, čut ćete da se naziva 'oh šest stotina sati'.

Na desnoj strani je dan u godini prema zimskom solsticiju, na sjevernoj hemisferi 21. decembar (približno) je nulti dan '0', a na južnoj hemisferi 21. jun (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 dugmeta na desnoj strani povećavaju sekunde, minute i sate odozdo prema gore.

Korak 5: Postavljanje skice

Sketch Setup
Sketch Setup

Postoji nekoliko redova koda koje je potrebno postaviti za početno pokretanje. Neke od ovih redova potrebno je mijenjati svaki put kada isključite sat i promijenite vrijednosti varijabli u skici. Ako pokrenete sat za IDE, bit će potrebno oko 6 sekundi za učitavanje i pokretanje. Ako učitate skicu iz IDE -a, odspojite sat i ponovo 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 se odnosi na LCD ekran i postavlja ispravnu adresu I2C paketa. 0x27 je adresa bilo kojeg ranca koji sam kupio. Ako uključite sat, ali nema prikazanih podataka, ali on svijetli, adresa se vjerojatno razlikuje na vašem LCD ekranu. 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 nego što pokrenete sat 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 red. (Lijeva kolona). Primjer (24. novembar je dan #339 na sjevernoj hemisferi i dan #156 na južnoj hemisferi)

Red 27 int DSTyear = 2019;

Unesite tekuću godinu.

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

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

"PreviousMicroTimeSt" fino podešava unutrašnji sat kako bi pomogao odbrojati preciznih 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 red 248 za svaku prijestupnu godinu. U sljedećih nekoliko sedmica testirat ću ga i po potrebi objaviti sve promjene.

Korak 6: Završne napomene

Završne napomene
Završne napomene

Ovaj projekt je lako izgraditi, ali koncept i potrebna prilagođavanja koda mogu biti zadatak, odvojite vrijeme i razmislite, sat ne ističe do kraja 2037. Pažljivo ću paziti na svoj e -poštom za pitanja jer sam siguran da će ih biti, nisam književni genije pa bi neki moji opisi mogli biti pomalo blatnjavi.

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

Pomoću informacija koje se manipuliraju skicom bilo bi lako prikazati ne samo standardno vrijeme i ljetno računanje vremena nego i dan i datum na LCD displeju od 2004A. Ako vam se sviđaju izazovi koje ovaj projekt pruža, pokušajte spojiti 2004A LCD zaslon, 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?

S južnog pola u kojem biste smjeru putovali do Australije, Sjeverne Amerike, Evrope 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 kom smjeru ide Djed Mraz kako bi isporučio sve svoje darove?

Na kojoj geografskoj širini je efikasan DST?

Sada za ekvator;

Može li se ovaj sat koristiti na ekvatoru?

Da li bi koristili skalu sjeverne ili južne hemisfere?

Koji su datumi za zimski i ljetni solsticij?

Na kojoj geografskoj širini je efikasan DST?

Treba li pingvinima ljetno računanje vremena?

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

Sretna zgrada svima!

philmnut

Korak 7: Ostale veze

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

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

PiotrS je napisao odlične instrukcije za I2C hardverske adrese

playground.arduino.cc/Main/I2cScanner

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

Preporučuje se: