Talaan ng mga Nilalaman:

Madaling Daylight Savings Clock: 7 Hakbang
Madaling Daylight Savings Clock: 7 Hakbang

Video: Madaling Daylight Savings Clock: 7 Hakbang

Video: Madaling Daylight Savings Clock: 7 Hakbang
Video: 【MULTI SUB】Anti-routine system EP1-80 2024, Hulyo
Anonim
Madaling Daylight Savings Clock
Madaling Daylight Savings Clock
Madaling Daylight Savings Clock
Madaling Daylight Savings Clock

Kwento

Ang proyektong ito ay nagsimula bilang hamon para sa akin upang malaman ang pag-program (coding) sa Arduino Uno at isang solong 1602A LCD display, una kong nais na itulak ang Arduino sa mga limitasyon nito para sa kawastuhan. Ito ay isang proyekto upang bumuo ng isang orasan nang hindi gumagamit ng isang module ng RTC (module ng Real Time Clock) at higit na hindi gumagamit ng anumang pagkaantala (); utos sapagkat ang pagkaantala (); ihinahinto ng utos ang code para sa isang tinukoy na haba ng oras. Habang nagtatrabaho ako sa pangunahing code ng pagpapanatili ng oras naisip ko na ito ay maaaring maging maliit na pangkaraniwan kaya't napagpasyahan kong magdagdag ng isang tampok sa oras ng pagtitipid ng araw bilang isang karagdagan sa nobela upang pagandahin ang mga bagay at posibleng lumikha ng kaunting interes sa proyektong ito. Sa una ang ideya ay pulos nobela ngunit mas nakikipagtulungan ako rito at pinapanood ang pisikal na orasan na tumatakbo ako sa aking lamesa mas praktikal ang ideyang naging. Sa pamamagitan ng pagdaragdag ng isang module ng RTC at pag-aayos ng code ang orasan na ito ay magiging tumpak sa mga darating na taon at sa napakababang gastos sa mga tagagawa at sa publiko na bumili ng naturang orasan.

Ang Daylight Savings Time o (DST) ay nasa loob ng 100+ taon (Google ito, mayroon itong isang makulay na kasaysayan). Ayokong makapasok sa politika nito ngunit ito ay isang krudo at masakit na ehersisyo na hindi ginagawang madali ang buhay para sa karaniwang mga tao (ikaw at ako). Para sa pinaka-bahagi nasisiyahan kami sa sobrang oras ng liwanag ng araw ngunit ang paraan kung paano ito inilapat ay brutal. Panahon na para sa isang pangunahing pag-upgrade sa isang napaka-lumang ideya.

Ang halimbawang ito ay madaling mabuhay at kasama ang digital na edad at mga pagsulong sa teknolohiya na madaling mailapat sa lahat ng mga porma ng mga digital na orasan, ngunit maaaring makatulong sa pagkamatay ng analog na orasan. Sa halip na isang 1 oras na pagtalon mula sa karaniwang oras hanggang sa oras ng DST pagkatapos ang oras ng DST hanggang sa karaniwang oras na orasan na ito ay batay sa unti-unting pag-unlad ng oras mula sa winter solstice hanggang sa summer solstice pagkatapos ay bumalik sa karaniwang oras sa susunod na winter solstice taon taon. Ang paglipat na ito ay nagaganap para sa 180 araw sa bawat 6 na buwan na panahon, ang pagsasaayos ay 20 segundo sa isang araw para sa 360 araw na may natitirang 5 o 6 na araw na idinagdag sa haba ng mga solstice. Ang aking halimbawa dito ay nagdaragdag ng 1 minuto minsan bawat tatlong araw sa loob ng 180 araw na ikot. Sa o tungkol sa Hunyo 21 ng bawat taon ang orasan ay isang buong 1 oras nang maaga at sa o tungkol sa Disyembre 21 ng bawat taon ang orasan ay dumulas pabalik sa karaniwang oras. Ang taong tumatalon ay madaling accounted lalo na kung ang isang RTC ay ginagamit. Ang Timog Hemisphere ay madaling iniakma sa orasan na ito pati na rin, ang slide scale ay 6 na buwan lamang na wala sa phase mula sa hilagang hemisphere.

Mayroong tatlong mga lugar sa mundo na ang DST ay medyo maliban kung, rehiyon ng ekwador, at ang mga poste. Sa palagay ko ay hindi nagbabago ang sikat ng araw sa ekwador, hindi ko alam kung alinman sa mga tropikal na lugar ang gumagamit ng DST at ang mga poste ay ibang kuwento muli, 'ANONG' na lang ang oras sa mga poste?

Hakbang 1: Tungkol sa Orasan

Tungkol sa Orasan
Tungkol sa Orasan
Tungkol sa Orasan
Tungkol sa Orasan

Ang orasan na aking nilikha ay batay sa pamantayan ng oras na hindi kailanman nag-iiba mula sa internasyonal na tinatanggap na orasan sa mundo, ipinapakita ito sa unang linya ng 1602 LCD. Ang pangalawang linya ay pareho ang sukat ng oras ngunit ipinapakita nito ang off-set ng mga minuto mula sa isang solstice hanggang sa susunod. Mula sa winter solstice hanggang summer solstice ang off-set ay nagdaragdag ng isang minuto bawat tatlong araw hanggang sa maximum na animnapung minuto. Mula sa summer solstice hanggang winter solstice ang off-set ay bumababa ng isang minuto bawat tatlong araw hanggang sa karaniwang oras at oras ng DST ay pareho.

Para sa halimbawang ito nagamit ko ang oras ng militar (24 oras na orasan) at karaniwang oras (12 oras na orasan) AM at PM upang matulungan ang mga taong hindi pamilyar sa sukat ng oras na 24 na oras, binigyan din nito ang aking silid upang ipakita ang bilang ng araw na ang DST ay itinakda mula sa. Maaaring baguhin ang code upang maipakita ang 12 oras na orasan. Nagdagdag ako ng tatlong mga pindutan ng push na konektado sa mga digital na pin 2, 3 at 4 upang ayusin ang oras. Ang mga pindutan na ito ay tataas lamang ng mga segundo, minuto o oras lamang. Ang mga pindutan ay opsyonal, gagana pa rin ang orasan kung hindi ka nag-wire sa mga pindutan at hindi na kailangang baguhin ang code. Inirerekumenda ko na hindi bababa sa paggamit ng isang pindutan upang ayusin ang mga segundo at kung ang kumpletong kawastuhan ay hindi makamit panatilihin ang orasan sa mabagal na bahagi, isulong ng pindutan ang oras na 1 segundo bawat segundo.

Kung sinimulan mo ang orasan mula sa Arduino IDE aabutin ng 5.5 hanggang 6 segundo para mai-load at i-boot ang sketch, kung mayroon kang sketch na na-load sa Arduino pagkatapos ay i-plug ito sa isang wall wart o power supply ay aabutin ng 2.5 hanggang 3 segundo upang mag-boot at tumakbo.

Mayroong ilang manu-manong pag-setup na kinakailangan kapag sa wakas ay nakahanda ka na para sa operasyon.

Ang orasan na ito ay hindi gumagamit ng isang module ng RTC o dosis na ginagamit nito "pagkaantala ();" utos.

Kung nais mong gamitin ang RTC sa Arduino ang konsepto na ito ay maaari pa ring magamit. Bibigyan ka ng RTC ng lahat ng impormasyong kailangan mo upang maidagdag ang oras ng EDSC. Ang code ay maaaring magkakaiba sa isang module ng RTC, hindi ko pa ito tiningnan. Ikaw ay magkano sa iyong sarili kung gagawin mo ngunit ito ay isang mahusay na paraan upang magamit ang iyong utak.

Hakbang 2: Ano ang Kakailanganin Mo

Ano ang Kakailanganin Mo
Ano ang Kakailanganin Mo
Ano ang Kakailanganin Mo
Ano ang Kakailanganin Mo
Ano ang Kakailanganin Mo
Ano ang Kakailanganin Mo

LISTAHAN NG BIBILHIN

1 Arduino Uno o Mega2569 (ang mga pin ng I2C ay A4 at A5 sa UNO at 20 at 21 sa 2560 Mega)

Halos sa anumang ibang Arduino ay dapat na gumana, ang mga ginamit na pin ay maaaring magkakaiba. Para sa bagay na iyon, gagana ang anumang board ng magsusupil. Kailangan mong muling isulat ang code para sa board o tagagawa na iyon.

1 1602 LCD display (kulay na iyong pinili)

Gumagamit ako ng isang I2C back pack na may LCD, mas madali ko ito at mas mabilis na mag-set up.

Jumper wires

OPSYONAL NA SUPPLY

1 daluyan ng laki ng tinapay board

1-3 pansamantalang mga pindutan ng push push

1-3 10 K ohm resistors

Mahaba ang itinuturo na ito, kaya't hindi ako pupunta sa mounting o gabinete na ginamit ko upang ipakita ang orasan. Kung gusto mo ang proyektong ito at nais na gumawa ng isang permanenteng bersyon na idisenyo ito ayon sa gusto mo. Ang disenyo na ito ay perpekto para sa akin dahil nagkaroon ako ng lahat ng kailangan ko sa aking junk box at gusto ko ang hitsura nito.

TANDAAN:

Upang maiwasan ang hukay na bumagsak ng pagkawala ng kuryente ang aking pangwakas na orasan ay pinalakas ng isang solar panel na mayroon ako sa labas. Pinapanatili ng solar panel ang isang 12 volt na baterya na sisingilin ng isang regulator dito upang maiwasan ang labis na pagsingil. Ang baterya na ito ay konektado sa Arduino sa pamamagitan ng power jack sa tabi ng USB port. Pinananatili kong konektado ang USB port sa grid upang mabawasan ang pagguhit sa baterya. Ang parehong mga mapagkukunan ng kuryente ay maaaring magamit nang sabay na walang pinsala sa Arduino. Ang isang 12 volt na baterya ay maaaring singilin sa 14.5 volts max na masyadong mataas para sa Arduino kaya't gumagamit ako ng isang buck converter upang bawasan ang supply boltahe mula sa baterya sa isang saklaw na 9 hanggang 12 volts. Ang 12 volt na baterya na pinapanatili kong sisingilin ay tatagal ng 3 o 4 na araw kung ang mga araw ay overcast. Ang gagamitin kong regulator ay magpaputol ng lakas sa Arduino kung ang boltahe ng baterya ay bumaba sa 11 volts. Ang baterya na mayroon ako ay nagmula sa emergency light system para sa mga komersyal na gusali, halos isang-kapat ang laki ng isang maliit na baterya ng kotse. Kung balak mong gumamit ng isang baterya ng kotse siguraduhing panatilihin ito sa isang mahusay na maaliwalas na lugar (sa labas), ang mga baterya ng kotse ay nagbibigay ng hydrogen at oxygen gas habang nagcha-charge at naglalabas ito, ito ay isang paputok na kombinasyon.

BABALA

Panatilihing mabuti ang BATTERY

VENTILATED AREA, SA LABAS

Hakbang 3: Mga kable

Kable
Kable

Nagbigay ako ng isang eskematiko para sa lahat ng mga koneksyon sa proyektong ito, kung gagamit ka ng isang breadboard kakailanganin mo ang isang medium size board, ang mga switch ay kailangan ng silid upang maikalat upang ang circuit ay hindi nakalilito.

Ang 1602 LCD display ay may I2C back pack para sa pagiging simple, kung gumagamit ka ng mga koneksyon sa SPI kakailanganin mong tingnan kung paano ito gamitin at baguhin ang code malapit sa simula ng sketch. Hindi ko pa nagamit ang mga koneksyon sa SPI kaya ang mga pin 2, 3 at 4 ay maaaring hindi magagamit para sa tatlong mga pindutan ng push.

Ginagamit ang tatlong push button upang ayusin ang oras sa orasan. Isusulong lang nila ang oras (SA SABIHAN). Sa huling mga pagsasaayos panatilihin ang orasan sa code sa mabagal na bahagi (mga 1 hanggang 2 segundo bawat araw o maraming araw) sa ganitong paraan maaari mong maisulong ang oras kung kinakailangan. Ang bawat pindutan ay sumusulong sa oras ng isang pagtaas bawat segundo, ang pindutan sa ibaba 2 segundo bawat segundo, ang gitnang pindutan ng 1 minuto bawat segundo at ang tuktok na pindutan ng 1 oras bawat segundo. Ang isang medyo mataas na antas ng kawastuhan ay dapat gawin upang hindi mo na kailangang ayusin pa ito.

Kung nag-aayos ka ng mga segundo, minuto o oras (halimbawa kung ang mga minuto ay advanced 58, 59, 00) ang oras ay uusad sa susunod na oras.

Ang tatlong mga pindutan na ito ay isang huling minutong karagdagan sa orasan, gumagana ang mga ito ng maayos ngunit maaaring mayroong isang mas mahusay na paraan. Tandaan lamang na kung magulo mo ang bahaging ito ng code ang "pagkaantala ();" hindi maaaring gamitin ang utos. Ginamit ko ang pamamaraang ito dahil hindi ko kailangang mag-alala tungkol sa switch bounce at mga kakaibang paglukso sa pagsulong ng oras.

Hakbang 4: Ano ang Ipinapakita ng Display

Ano ang Ipinapakita ng Display
Ano ang Ipinapakita ng Display

Naglagay ako ng maraming impormasyon sa display ng 1602 LCD na nangangailangan ng ilang paliwanag:

Ang linya 1 O linya zero '0' kapag nagsasalita sa code, ipinapakita ang karaniwang oras. Sa kaliwa ay 'STD', ito ay nangangahulugang oras na 'STandarD'.

Susunod sa unang linya sa gitna ay ang iyong lokal na pamantayan ng oras. Huwag magsimula sa oras ng pagtipig ng daylight, ipapakita ito ng orasan sa pangalawang linya.

Ang scale ng oras na ito ay 12 oras na orasan kaya sa kanang bahagi ay 'AM o' PM 'upang ipahiwatig ang umaga o pagkatapos ng tanghali.

Ang linya 2 O linya ng isang '1' kapag nagsasalita sa code, ipinapakita ang oras ng pagtipig ng araw na nag-iiba ayon sa araw ng taon. Ang 'DST' sa kaliwa ay nangangahulugang 'Daylight Savings Time'

Sa gitna ng pangalawang linya ay ang iyong lokal na oras ng militar na isang 24 na oras na orasan. Naririnig mong tinukoy ito bilang 'oh anim na raang oras' halimbawa.

Sa kanang bahagi ay ang araw ng taon na isinangguni mula sa winter solstice, sa Hilagang Hemisperyo Disyembre 21 (tinatayang) araw na zero '0' at sa Timog Hemisphere Hunyo 21 (tinatayang) ay araw na zero '0'.

Nagbigay ako ng dalawang.pdf file para sa sanggunian noong unang pag-set up ng orasan. Piliin ang file na tumutukoy sa hemisphere na iyong tinitirhan.

Ang tatlong mga pindutan sa tamang pagtaas ng segundo, minuto at oras mula sa ibaba.

Hakbang 5: Pag-setup ng Sketch

Pag-set up ng Sketch
Pag-set up ng Sketch

Mayroong maraming mga linya ng code na kailangang i-set up para sa paunang pagsisimula. Ang ilan sa mga linyang ito ay kailangang mga pagbabago sa tuwing ididiskonekta mo ang orasan at binabago ang mga halaga ng mga variable sa sketch. Kung sinimulan mo ang orasan para sa IDE tatagal ng halos 6 segundo upang mai-load at magsimula. Kung na-load mo ang sketch mula sa IDE pagkatapos ay idiskonekta ang orasan at i-restart ito mula sa isang wall wart o power supply ang sketch ay mag-boot sa loob ng 2.5 segundo.

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

Tinutugunan ng linyang ito ang LCD display at itinakda ang tamang address ng I2C back pack. Ang 0x27 ay ang address ng alinman sa mga back pack na binili ko. Kung pinapagana mo ang orasan ngunit walang ipinapakitang data ngunit sinisindi nito ang address ay maaaring naiiba sa iyo ng LCD. Maglalagay ako ng isang link sa ibaba para sa isang paglalarawan kung paano baguhin ang address ng iyong LCD back pack o hanapin ang address.

Mga linya 24 int minutoSt = 35;

Itakda ang panimulang minuto para sa karaniwang orasan, karaniwang itakda ito ng 5 minuto bago mo simulan ang orasan upang payagan ang oras ng pag-setup.

Mga linya 25 int orasSt = 18;

Itakda ang oras sa oras ng STD (24 na oras na orasan) ay nagsisimula sa. 6 PM ay magiging oras 18.

Linya 26 int DSTday = 339;

Mag-download at mag-refer sa "Easy DST Clock Time Scale" na file na pdf (Hilaga o Timog Hemisphere) na iyong tinitirhan, hanapin ang petsa at ipasok ang Araw # sa linyang ito. (Kaliwang haligi). Halimbawa (Nobyembre 24 ay araw # 339 sa Hilagang Hemisphere at araw # 156 sa Timog Hemisphere)

Line 27 int DSTyear = 2019;

Ipasok ang kasalukuyang taon.

Linya 92 kung ((masterTime - nakaraangMasterTimeSt> = 1000) && (microTime - nakaraangMicroTimeSt> = 500)) {

Ang "nakaraangMasterTimeSt" ay kailangang ihambing sa bilang ng mga milliseconds kaya't ang '1000' na ito ay maaaring kailanganing baguhin sa 999 depende sa panloob na orasan ng Arduino board pagkatapos ay ayusin ang nakaraangMicroTime upang maayos ang oras. Ang panloob na orasan kahit na ang 16MH ay may mga pagkakaiba-iba mula sa isang board hanggang sa susunod.

Pinapahusay ng "nakaraangMicroTimeSt" na panonood sa panloob na orasan upang makatulong na mabilang ang isang tumpak na 1 segundo. Kung ang orasan ay masyadong mabilis dagdagan ang microseconds at kung ang orasan ay masyadong mabagal bawasan ang microseconds at kung kinakailangan ay i-drop ang milliseconds sa 999 at pagkatapos ay simulan ang microseconds tungkol sa 999, 990 o dagdagan ang bilis ng orasan.

Ang bawat board ng Arduino ay may bahagyang kakaibang bilis samakatuwid ang mga numerong ito ay magbabago sa bawat board na iyong ginagamit. Ang bahagi ng code ay hindi pa nasubok, ito ang linya na 248 sa account para sa bawat leap year. Sa mga susunod na linggo susubukan ko ito at mai-post ang anumang mga pagbabago kung kinakailangan.

Hakbang 6: Huling Mga Tala

Pangwakas na Tala
Pangwakas na Tala

Madaling maitayo ang proyektong ito ngunit ang konsepto at mga kinakailangang pagsasaayos sa code ay maaaring isang gawain, maglaan ng oras at pag-isipan ito, ang relo ay hindi mag-e-expire hanggang sa pagtatapos ng 2037. Titignan ko ng mabuti ang aking email para sa mga katanungan dahil sigurado akong magkakaroon, hindi ako isang henyo sa panitikan kaya't ang ilan sa aking mga paglalarawan ay maaaring medyo maputik.

Mayroong dalawang.pdf file na kasama, i-download ang file para sa hemisphere na iyong tinitirhan, bibigyan ka ng file na ito ng kinakailangang impormasyon upang masimulan nang tumpak ang orasan.

Sa manipulasyong impormasyon sa sketch madali itong ipapakita hindi lamang sa karaniwang oras at oras ng DST kundi pati na rin araw at petsa sa isang 2004A LCD. Kung nais mo ang mga hamon na ibinibigay ng proyektong ito subukang kumonekta sa isang display ng LCD na 2004A pagkatapos magdagdag ng code upang maipakita ang karagdagang impormasyon o kung may sapat na interes na ipinakita ay gagawin ko ang isa pang pagkakaiba-iba ng proyektong ito kasama ang karagdagang impormasyong ito.

Sinubukan kong maging all-inclussive sa proyektong ito ngunit nakakita ako ng tatlong mga lugar sa mundo na pinag-uusapan. Ang Hilagang Pole, ang South Pole at ang Equator.

Kailangan ba ang DST o posible pa rin sa Hilaga o Timog na mga Polyo?

Anong oras na sa Hilaga o Timog na Pole?

Anong direksyon ang iyong paglalakbay upang umalis sa North Pole o South Pole?

Mula sa South Pole anong direksyon ang iyong paglalakbay upang maabot ang Austrailia, Hilagang Amerika, Europa o Asya?

Anong time zone ang tinitirhan ni Santa?

Kailangan ba niya ng DST?

Anong oras pa rin ito sa North Pole?

Anong direksyon ang nilalakbay ni Santa upang maihatid ang lahat ng kanyang mga regalo?

Sa anong latitude mabisa ang DST?

Ngayon para sa Equator;

Magagamit ba ang orasan na ito sa Equator?

Gagamitin ba nila ang laki ng Hilaga o Timog Hemisperyo?

Ano ang mga petsa para sa winter solstice at summer solstice?

Sa anong latitude mabisa ang DST?

Kailangan ba ng mga penguin ng DST?

Sa palagay mo ba kakaiba ako sa pag-iisip tungkol sa mga katanungang ito?

Maligayang pagbuo ng lahat!

philmnut

Hakbang 7: Iba Pang Mga Link

Ito ay isang link upang matukoy o baguhin ang address sa I2C back pack:

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

Ang PiotrS ay nagsulat ng isang mahusay na itinuturo para sa mga address ng hardware ng I2C

playground.arduino.cc/Main/I2cScanner

I-scan ng link na ito ang iyong I2C aparato at ibabalik ang address

Inirerekumendang: