INHOUDSOPGAWE:

Maklike dagligklok: 7 stappe
Maklike dagligklok: 7 stappe

Video: Maklike dagligklok: 7 stappe

Video: Maklike dagligklok: 7 stappe
Video: Быстрая укладка плитки на стены в санузле. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #27 2024, Julie
Anonim
Maklike daglig klok
Maklike daglig klok
Maklike daglig klok
Maklike daglig klok

Verhaal

Hierdie projek was vir my 'n uitdaging om programmering (kodering) met die Arduino Uno en 'n enkele 1602A LCD -skerm te leer; ek wou eers die Arduino tot sy uiterste stoot vir akkuraatheid. Dit is 'n projek om 'n horlosie te bou sonder die gebruik van 'n RTC -module (Real Time Clock -module) en verder geen vertraging te gebruik nie (); bevele omdat die vertraging (); command stop die kode vir 'n bepaalde tyd. Terwyl ek die basiese tydsberekening deurgewerk het, het ek gedink dat dit 'n bietjie alledaags kan wees, en ek het besluit om 'n funksie vir daglig te voeg as 'n nuwe toevoeging om dinge op te kikker en moontlik 'n bietjie meer belangstelling in hierdie projek te skep. Die idee was aanvanklik louter nuut, maar hoe meer ek daarmee werk en kyk hoe die fisiese horlosie op my lessenaar loop, hoe meer prakties word die idee. Deur 'n RTC -module by te voeg en die kode aan te pas, sou hierdie horlosie jare lank akkuraat wees, en dit is baie goedkoop vir vervaardigers en die publiek wat so 'n horlosie koop.

Sommertyd of (DST) bestaan al meer as 100 jaar (Google dit het 'n baie kleurryke geskiedenis). Ek wil nie in die politiek daarvan ingaan nie, maar dit is 'n growwe en pynlike oefening wat die gewone mense (ek en jy) nie maklik maak nie. Ons geniet meestal die ekstra uur daglig, maar die manier waarop dit toegepas word, is wreed. Dit is tyd vir 'n groot opgradering na 'n baie ou idee.

Hierdie voorbeeld is maklik om mee saam te leef en met die digitale era en die vooruitgang in tegnologie wat maklik toegepas word op alle vorme van digitale horlosies, maar kan die afsterwe van die analoog horlosie help. In plaas van 'n sprong van 1 uur van standaardtyd na DST -tyd, dan is DST -tyd na standaardtyd gebaseer op die geleidelike verloop van tyd vanaf die wintersonstilstand na die somersonstilstand, dan terug na standaardtyd by die volgende wintersonstilstand jaar na jaar. Hierdie oorgang vind plaas vir 180 dae uit elke periode van 6 maande; die aanpassing is 20 sekondes per dag vir 360 dae, met die oorblywende 5 of 6 dae by die lengte van die sonstilstand. My voorbeeld hier is een keer elke drie dae 1 minuut binne die 180 dae siklus. Op of ongeveer 21 Junie van elke jaar is die klok 'n volle 1 uur voor en op of ongeveer 21 Desember van elke jaar het die klok teruggekeer na die standaardtyd. Skrikkeljaar is maklik verantwoordelik, veral as 'n RTC gebruik word. Die Suidelike Halfrond kan ook maklik by hierdie horlosie aangepas word; die skyfieskaal is net 6 maande uit fase van die noordelike halfrond.

Daar is drie plekke in die wêreld waar DST amper sou wees, behalwe die ekwatoriale gebied en die pole. Ek dink nie die daglig verander baie by die ewenaar nie, ek weet nie of enige van die tropiese gebiede selfs DST gebruik nie en die pole is weer 'n ander storie, maar 'WAT' tyd is dit in elk geval by die pole?

Stap 1: Oor die klok

Oor die klok
Oor die klok
Oor die klok
Oor die klok

Die horlosie wat ek geskep het, is gebaseer op standaardtyd wat nooit verskil van die internasionaal aanvaarde wêreldklok nie; dit word op die eerste reël van die 1602 LCD vertoon. Die tweede reël is dieselfde tydskaal, maar dit toon die afwyking van minute van die een sonstilstand na die volgende. Van die wintersonstilstand tot die somersonstilstand neem die verrekening elke drie dae een minuut toe tot 'n maksimum van sestig minute. Van die somersonstilstand tot die wintersonstilstand neem die verrekening elke drie dae een minuut af totdat standaardtyd en DST-tyd dieselfde is.

Vir hierdie voorbeeld het ek militêre tyd (24 uur) en standaardtyd (12 uur) AM en PM gebruik om mense wat nie vertroud is met die 24 uur tydskaal te help nie; stel van. Die kode kan verander word om die 12 -uur -klok te wys. Ek het drie drukknoppies bygevoeg wat gekoppel is aan digitale penne 2, 3 en 4 om die tyd aan te pas. Hierdie knoppies verhoog slegs sekondes, minute of ure. Die knoppies is opsioneel, die klok werk steeds goed as u nie die knoppies inskakel nie en u hoef nie die kode te verander nie. Ek sou aanbeveel dat u ten minste 'n knoppie gebruik om die sekondes aan te pas, en as u nie die volledige akkuraatheid kan bereik nie, hou die klok stadig, gaan die knoppie die tyd 1 sekonde per sekonde.

As u die klok vanaf die Arduino IDE begin, sal dit ongeveer 5,5 tot 6 sekondes neem om die skets te laai en op te laai. As u die skets op die Arduino gelaai het, steek dit dan in 'n muurwrat of kragtoevoer, sal dit ongeveer 2,5 tot 3 sekondes om te begin en te hardloop.

Daar is 'n handmatige opstelling nodig as u die horlosie uiteindelik gereed maak vir gebruik.

Hierdie horlosie gebruik nie 'n RTC -module nie, en gebruik ook nie 'delay ();' bevele.

As u die RTC saam met die Arduino wil gebruik, kan hierdie konsep steeds gebruik word. Die RTC gee u alle inligting wat u nodig het om die EDSC -tyd by te voeg. Die kode kan heel anders wees met 'n RTC -module; ek het nie daarna gekyk nie. U is redelik alleen, maar dit is 'n uitstekende manier om u brein te oefen.

Stap 2: wat u benodig

Wat u benodig
Wat u benodig
Wat u benodig
Wat u benodig
Wat u benodig
Wat u benodig

INKOPIELYS

1 Arduino Uno of Mega2569 (die I2C -penne is A4 en A5 op die UNO en 20 en 21 op die 2560 Mega)

Byna enige ander Arduino moet werk, die penne wat gebruik word, kan anders wees. In elk geval sal enige beheerraad werk. U sal die kode vir die bord of vervaardiger moet herskryf.

1 1602 LCD -skerm (kleur van u keuse)

Ek gebruik 'n I2C -rugsak met die LCD, en ek vind dit makliker en vinniger om op te stel.

Springdrade

OPSIONELE VOORSIENINGS

1 medium grootte broodbord

1-3 kort drukknoppies

1-3 10 K ohm weerstande

Hierdie instruksie is lank, so ek gaan nie in die houer of kas waarmee ek die horlosie vertoon het nie. As u van hierdie projek hou en 'n permanente weergawe wil maak, ontwerp dit na u smaak. Hierdie ontwerp is perfek vir my, want ek het alles wat ek nodig gehad het in my rommelbak gehad en ek hou van die voorkoms daarvan.

NOTAS:

Om die putval van kragonderbrekings te voorkom, word my laaste horlosie aangedryf deur 'n sonpaneel wat ek buite het. Die sonpaneel hou 'n 12 volt -battery gelaai met 'n reguleerder om te voorkom dat dit oorlaai word. Hierdie battery is aan die Arduino gekoppel via die kragaansluiting langs die USB -poort. Ek hou die USB -poort aan die netwerk gekoppel om die battery te verminder. Beide kragbronne kan gelyktydig gebruik word sonder skade aan die Arduino. 'N 12 volt -battery kan tot 14,5 volt opgelaai word, wat te hoog is vir die Arduino, so ek gebruik 'n boksomskakelaar om die voedingsspanning van die battery na 'n reeks van 9 tot 12 volt te verminder. Die 12 volt battery wat ek laai, sal 3 of 4 dae hou as die dae bewolk is. Die reguleerder wat ek gebruik, sal die krag van die Arduino onderbreek as die batteryspanning tot 11 volt daal. Die battery wat ek het, kom uit 'n noodligstelsel vir kommersiële geboue, ongeveer 'n kwart so groot as 'n klein motorbattery. As u van plan is om 'n motorbattery te gebruik, moet u dit in 'n goed geventileerde ruimte (buite) hou, motorbatterye gee waterstof en suurstofgas af terwyl dit laai en ontlaai, dit is 'n plofbare kombinasie.

WAARSKUWING

BEHOU BATTERY GOED

GEVENTILEERDE AREA, BUITE

Stap 3: Bedrading

Bedrading
Bedrading

Ek het 'n skematiese uiteensetting gegee van al die verbindings in hierdie projek; as u 'n broodbord gebruik, benodig u 'n mediumgrootte bord; die skakelaars moet ruimte hê om uit te brei sodat die kring nie verwarrend is nie.

Die 1602 LCD -skerm het 'n I2C -rugsak vir die eenvoud. As u SPI -verbindings gebruik, moet u kyk hoe u dit moet gebruik en die kode naby die begin van die skets moet verander. Ek het nog nooit die SPI -verbindings gebruik nie, sodat penne 2, 3 en 4 moontlik nie beskikbaar is vir die drie drukknoppies nie.

Die drie drukknoppies word gebruik om die tyd op die klok aan te pas. Hulle vorder slegs die tyd (VOORUIT). In die laaste aanpassings, hou die klok in die kode aan die stadige kant (ongeveer 1 tot 2 sekondes per dag of 'n paar dae), sodat u die tyd kan verleng indien nodig. Elke knoppie vorder die tyd een inkrement per sekonde, die onderste knoppie 2 sekondes per sekonde, die middelste knoppie 1 minuut per sekonde en die boonste knoppie 1 uur per sekonde. 'N Redelike hoë akkuraatheid behoort uitvoerbaar te wees, sodat u dit nie baie meer hoef aan te pas nie.

As u sekondes, minute of ure aanpas (byvoorbeeld as die minute 58, 59, 00 gevorder is) gaan die uur na die volgende uur.

Hierdie drie knoppies is 'n laaste toevoeging tot die klok; hulle werk goed, maar daar is moontlik 'n beter manier. Onthou net dat as u met hierdie deel van die kode mors, die "delay ();" bevel kan nie gebruik word nie. Ek het hierdie metode gebruik, want ek hoef nie bekommerd te wees oor die weerkaatsing van die skakelaar en vreemde spronge in die tyd nie.

Stap 4: Wat die skerm wys

Wat die skerm wys
Wat die skerm wys

Ek het baie inligting op die 1602 LCD -skerm geplaas wat 'n bietjie verduideliking benodig:

Reël 1 Of reël nul '0' as u in kode praat, toon die standaard tyd. Links is 'STD', dit staan vir 'STandarD' tyd.

Volgende op die eerste reël in die middel is u plaaslike standaardtyd. Moenie met somertyd begin nie; die klok sal dit op die tweede reël wys.

Hierdie tydskaal is 'n 12 -uurklok, so aan die regterkant is 'AM' of 'PM' om die oggend of na die middag aan te dui.

Reël 2 Of reël 1 '1' as u in kode praat, wys die somertyd wat wissel na gelang van die dag van die jaar. Die 'DST' aan die linkerkant beteken 'Sommertyd'

In die middel van die tweede reël is u plaaslike militêre tyd, 'n 24 -uurklok. U sal byvoorbeeld hoor dat dit 'o seshonderd uur' genoem word.

Aan die regterkant is die dag van die jaar soos verwys na die wintersonstilstand, op die 21ste Desember (ongeveer) is dag nul '0' en in die Suidelike Halfrond (ongeveer 21) dag nul '0'.

Ek het twee.pdf -lêers verskaf as verwysing vir die eerste keer om die klok op te stel. Kies die lêer wat verwys na die halfrond waarin u woon.

Die drie knoppies aan die regterkant verhoog sekondes, minute en ure van onder na bo.

Stap 5: Sketsopstelling

Sketsopstelling
Sketsopstelling

Daar is verskeie kode reëls wat opgestel moet word vir die eerste aanvang. Sommige van hierdie reëls moet veranderings wees elke keer as u die klok ontkoppel en die waardes van die veranderlikes in die skets verander. As u die horlosie vir die IDE begin, sal dit ongeveer 6 sekondes neem om te laai en te begin. As u die skets van die IDE laai, ontkoppel dan die horlosie en herlaai dit vanaf 'n muurwrat of kragtoevoer, die skets sal binne ongeveer 2,5 sekondes begin.

Reël 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Hierdie reël spreek die LCD -skerm aan en stel die regte adres van die I2C -rugsak in. 0x27 is die adres van enige van die rugsakke wat ek gekoop het. As u die klok aanskakel, maar daar word geen data vertoon nie, maar dit brand, is die adres waarskynlik anders op u LCD. Ek plaas 'n skakel hieronder vir 'n beskrywing van hoe u die adres van u LCD -rugsak kan verander of die adres kan vind.

Lyne 24 int minuteSt = 35;

Stel die beginminuut vir die standaardklok in, stel dit gewoonlik 5 minute voordat u die klok begin, sodat u die tyd kan instel.

Lyne 25 int uurSt = 18;

Stel die uur in op STD -tyd (24 uurhorlosie) wat begin. 18:00 sou uur 18 wees.

Reël 26 int DSTdays = 339;

Laai die pdf -lêer (Easy DST Clock Time Scale) af (verwys na die noordelike of suidelike halfrond) waarin u woon, kyk na die datum en voeg die dag # in hierdie reël in. (Linker kolom). Voorbeeld (24 November is dag #339 in die Noordelike Halfrond en dag #156 in die Suidelike Halfrond)

Reël 27 int DSTyear = 2019;

Voer die huidige jaar in.

Reël 92 if ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

Die "previousMasterTimeSt" moet vergelyk word met die aantal millisekondes, sodat hierdie '1000' moontlik na 999 moet verander, afhangende van die interne klok van die Arduino -bord, en pas dan die vorige MicroTime aan om die klok te verfyn. Die interne klok, hoewel 16MH, het variasies van die een bord na die volgende.

Die 'vorigeMicroTimeSt' verfyn die interne klok om 'n akkurate 1 sekonde af te tel. As die klok te vinnig is, verhoog die mikrosekondes en as die klok te stadig is, verminder die mikrosekondes, en laat die millisekondes na 999 toe en begin dan die mikrosekondes teen ongeveer 999, 990 of verhoog die spoed van die klok.

Elke Arduino -bord het 'n effens ander spoed, daarom verander hierdie getalle met elke bord wat u gebruik. 'N Deel van die kode is nog nie getoets nie; dit is reël 248 vir elke skrikkeljaar. In die volgende paar weke sal ek dit toets en indien nodig enige veranderinge plaas.

Stap 6: Laaste aantekeninge

Finale aantekeninge
Finale aantekeninge

Hierdie projek is maklik om te bou, maar die konsep en die nodige aanpassings in die kode kan 'n taak wees, neem u tyd en dink daaroor, die klok loop eers tot einde 2037. Ek hou my fyn dop e -pos vir vrae, want ek is seker daar is 'n paar; ek is nie 'n literêre genie nie, so sommige van my beskrywings kan 'n bietjie modderig wees.

Daar is twee.pdf -lêers ingesluit. Laai die lêer af vir die halfrond waarin u woon; hierdie lêer gee u die nodige inligting om die klok akkuraat te begin.

Met die inligting wat in die skets gemanipuleer is, sou dit maklik wees om nie net die standaardtyd en DST -tyd nie, maar ook dag en datum op 'n 2004A LCD te vertoon. As u van die uitdagings hou wat hierdie projek bied, probeer dan om 'n 2004A LCD -skerm aan te sluit, voeg dan kode by om die bykomende inligting te vertoon, of as daar genoeg belangstelling getoon word, sal ek 'n ander variasie van hierdie projek doen, insluitend hierdie bykomende inligting.

Ek het probeer om in hierdie projek allesomvattend te wees, maar ek het drie gebiede in die betrokke wêreld gevind. Die Noordpool, die Suidpool en die ewenaar.

Is DST nodig of selfs moontlik op die Noord- of Suidpool?

Hoe laat is dit op die Noord- of Suidpool?

In watter rigting sou u reis om die Noordpool of Suidpool te verlaat?

Watter rigting sou u vanaf die Suidpool reis om Austrailia, Noord -Amerika, Europa of Asië te bereik?

In watter tydsone woon Kersvader?

Het hy DST nodig?

Hoe laat is dit in elk geval op die Noordpool?

In watter rigting beweeg die kersvader om al sy geskenke af te lewer?

Op watter breedtegraad is DST effektief?

Nou vir die ewenaar;

Is hierdie horlosie bruikbaar by die ewenaar?

Sou hulle die skaal van die Noordelike of Suidelike Halfrond gebruik?

Wat is die datums vir die wintersonstilstand en somersonstilstand?

Op watter breedtegraad is DST effektief?

Het die pikkewyne DST nodig?

Dink jy ek is vreemd as ek aan hierdie vrae dink?

Lekker bou almal!

philmnut

Stap 7: Ander skakels

Dit is 'n skakel om die adres op die I2C -rugsak te bepaal of te verander:

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

PiotrS het 'n uitstekende instruksie vir I2C -hardeware -adresse geskryf

playground.arduino.cc/Main/I2cScanner

Hierdie skakel sal u I2C -toestel skandeer en die adres terugstuur

Aanbeveel: