Talaan ng mga Nilalaman:

Retire Clock / Count Up / Dn Clock: 4 Hakbang (na may Mga Larawan)
Retire Clock / Count Up / Dn Clock: 4 Hakbang (na may Mga Larawan)

Video: Retire Clock / Count Up / Dn Clock: 4 Hakbang (na may Mga Larawan)

Video: Retire Clock / Count Up / Dn Clock: 4 Hakbang (na may Mga Larawan)
Video: The Essentials of Prayer | E M Bounds | Free Christian Audiobook 2024, Nobyembre
Anonim
Orasan ng Pagreretiro / Bilangin / Dn Clock
Orasan ng Pagreretiro / Bilangin / Dn Clock

Mayroon akong ilan sa mga 8x8 LED dot-matrix na ipinapakita sa drawer at iniisip kung ano ang gagawin sa kanila. May inspirasyon ng iba pang mga itinuturo, nakuha ko ang ideya na bumuo ng isang count down / up na display upang mabilang sa isang hinaharap na petsa / oras at kung lumipas ang target na oras, bilangin mula rito. Ginawa ko ito ngayon ang aking relo sa pagreretiro na nakaupo sa istante.

Ang ideya na ilagay ito sa isang bote ay higit pa sa isang aksidente habang iniisip ang tungkol sa isang pambalot. Ang iba ay naglalagay ng mga barko sa isang bote, bakit hindi isang orasan?

Nais ko ring gawin ang orasan na sumunod sa oras ng pag-save ng daylight at syempre alalahanin ang mga setting at oras kapag na-unplug. Pinapagana ko ang orasan sa pamamagitan ng USB na ginagawang muli itong ma-program kung nais mong gumawa ng ibang bagay o magdagdag lamang ng mga tampok sa code. Ang code ay medyo simple at maaari ring gumamit ng maraming pag-optimize. Hindi ko alagang-alaga ang tungkol sa pagkonsumo ng RAM na dapat kong aminin. Kung nakuha ko ang oras at pagganyak, babalik ako rito.

Mga gamit

1. Arduino Nano

2. RTC (Ginamit ko ang karaniwang DS3231 na mayroon ding EEPROM)

3. 12x 8x8 dot matrix module. (Nagkaroon ako ng mga quad module na mas madaling mag-line up)

4. LDR upang ayusin ang liwanag ng display

5. Resistor 10 kOhm

6. Capacitor 5x 100 uF suppressing spike mula sa display

7. Upang madagdagan ang kaibahan ng mga modyul na 8x8, ginamit ko ang madilim na makulay na "Window Film". Ipinapakita ng Display ang mga LED bilang puting tuldok kung hindi naiilawan. Ginawang isang makintab na itim na hitsura ng window film.

Hakbang 1: Ikonekta ang Mga Sangkap

Ikonekta ang Mga Sangkap
Ikonekta ang Mga Sangkap
Ikonekta ang Mga Sangkap
Ikonekta ang Mga Sangkap

Gumamit ako ng tatlo sa mga quad display upang tipunin ang display. Upang maipakita ang isang petsa na may mga slash at oras sa mga colon, kailangan namin ng puwang para sa 8 character. Gamit ang karaniwang 5x7 font, kakailanganin namin ng anim na 8x8 na mga bloke bawat hilera. Pinagputol ko ang isa sa mga quad block sa kalahati at inayos ang mga ito bilang dalawang mga hilera sa pamamagitan ng anim na mga bloke tulad ng ipinakita sa iskema ng breadboard.

Hakbang 2: Mga Naka-print na Bahaging 3D

Mga Naka-print na Bahaging 3D
Mga Naka-print na Bahaging 3D
Mga Naka-print na Bahaging 3D
Mga Naka-print na Bahaging 3D
Mga Naka-print na Bahaging 3D
Mga Naka-print na Bahaging 3D

Upang hawakan ang dalawang hilera ng display at iposisyon ang mga ito sa bote na naka-print ko ang mga bilog na singsing para sa display frame. Idinagdag ko ang mga file na ginamit ko sa ibaba. Upang mai-print ang mga ito nang walang suporta, nahahati sila sa mga bahagi. Ipinapakita ng screenshot ang dalawang singsing na nakadikit sa display frame. Ang takip ng leeg ng bote ay ang pabahay ng tatlong mga pindutan upang lumipat sa pagitan ng mga mode ng pagpapakita at pagtatakda ng kasalukuyang oras at target na oras. Ang takip ng leeg ng bote ay na-print ko sa TPU na nagpapahintulot na i-slide ang USB cable sa takip nang hindi pinuputol ang mga konektor at itali ito sa ilang mga paikot-ikot na kawad. Nakalimutan kong banggitin na gumamit ako ng isang 1.5 L na bote ng alak na pinutol ko sa pinakailalim. Ang lahat ng mga bahagi na mai-print ay umaangkop sa isang 20x20 cm (8x8 in) printer bed.

Hakbang 3: Ang Code

Ang Arduino code ay gumagamit ng ilang karaniwang ginagamit na mga aklatan.

MD_MAX72xx

SPI

Kawad

RTClib

Timezone

TimeLib

Mayroong ilang mga linya sa INO file na maaaring mangailangan ng pagbabago:

Linya 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- nakasalalay sa 8x8 module at ang oryentasyon nito

sa halip na FC16_HW maaari itong isa sa:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Gumagamit ang code ng mga setting para sa oras ng US Central at kailangan ng pagsasaayos para sa iba pang mga time zone:

Linya 53/54:

TimeChangeRule myDST = {"CDT", Pangalawa, Araw, Mar, 2, -300}; // Daylight Time UTC-5TimeChangeRule mySTD = {"CST", Una, Araw, Nob, 2, -360}; // Standard time UTC -6

Madali itong ayusin. Ang pangalang CST / CDT ay dapat lamang magkaroon ng isang sanggunian. Hindi ko ipinapakita ang pagdadaglat ng tatlong titik, kaya't hindi ito mahalaga. Ang mga susunod na parameter ay tumutukoy sa kung aling araw sa buwan ang switch ay nangyayari. Ilang minuto ang pagsasaayos, kaya gagana rin ang mga lokasyon na gumagamit ng +/- 30 minuto na mga pagsasaayos.

Ang RTC ay tumatakbo nang panloob sa UTC-Time na nagpapahintulot sa library ng timezone na gumana tulad ng nilalayon. Maaari kang magtaka kung bakit ang code ay tumutukoy sa mas matandang DS1307 chip salungat sa orasan na ginamit ko, ngunit hindi ito mahalaga. Ang library ay gumagana nang maayos sa alinman sa maliit na tilad. Ang DS1307 ay may kaugaliang naaanod ng higit sa DS3132. ang DS3132 ang ginustong orasan. Para sa mga nais magdagdag ng oras sa internet, isang ESP8266 ang gagawing madali ang trabaho. Maaari nitong gawing lipas ang RTC. Kung ginagawa mo ang mga pagbabagong ito, gamitin ang Arduino EEPROM upang maiimbak ang oras ng target, ginamit ko ang RTC EEPROM upang gawin ito.

Hakbang 4: Pagpapatakbo at Mga Setting

Pagpapatakbo at Mga Setting
Pagpapatakbo at Mga Setting
Pagpapatakbo at Mga Setting
Pagpapatakbo at Mga Setting
Pagpapatakbo at Mga Setting
Pagpapatakbo at Mga Setting

Mayroong tatlong mga pindutan

1. Menu / setting

2. Pataas

3. Pababa

Pinapayagan ng pindutan ng menu ang pagbibisikleta sa pamamagitan ng tatlong display typess: Kasalukuyang oras, Target na oras, Oras ng Delta. Ipinapakita ng oras ng Delta ang bilang ng mga araw, ang HH / MM / SS sa pagitan ng kasalukuyang oras at oras ng target. Ipapakita itong t- at pagbibilang kung ang target ay nasa hinaharap o t + at pagbibilang kung ang target ay nasa nakaraan.

Upang ayusin ang kasalukuyan o target na oras, piliin ang kasalukuyang oras o display ng target na oras. Upang baguhin ang oras, pindutin nang matagal ang pindutan ng menu ng 2 segundo at palabasin na magdadala sa iyo sa setting mode. Ang kalapit na "/" o ":" ay magiging "" upang ipahiwatig kung aling digit ang iyong inaayos. Gamitin ang mga pindutan ng pataas / pababa upang ayusin ang indibidwal na hh / mm / ss at mm / dd / yy. Hindi ako nagdagdag ng isang setting upang lumipat sa pagitan ng mm / dd / yy at dd / mm / yy, nangangailangan ito ng pagbabago sa code o baka may isang taong nais na idagdag ang tampok na ito.

Mapapansin mo na kung susundan mo ang mga minuto nang higit sa 59 o mas mababa sa 00, ang display ng oras ay aakma din. totoo ang pareho sa mga segundo, oras at araw na binabago ang susunod na mas mataas na halaga kung tumatawid sa ibaba 0 o mas mataas sa max para sa digit na ito. Ginawa ko ito upang maiwasan ang pag-program ng iba`t ibang mga limitasyon ng mga indibidwal na buwan at kung ang Pebrero ay nangangailangan ng 29 araw sa isang leap year. Ang pagsasaayos ng oras ay talagang tapos na sa epoch-time, segundo mula Enero-1-1970.

Nagdagdag ako ng isang simpleng video upang maipakita ang pagbibilang. Nais kong gawin ang mga ito tulad ng isang display ng pagulong ng gulong. Kung nais mong ayusin ang tagal ng pagbabago, ang linya 69 sa INO ay magbibigay sa iyo ng ilang mga pagpipilian upang mapabilis o mabagal ang pagbabago. 120ms ay gagawing mabagal ang mga digit na mag-scroll ng sapat dahil ito ay magiging isang tuloy-tuloy na gulong.

Inaasahan kong nasiyahan ka sa pagtuturo na ito.

Patrick Geschwindner

Inirerekumendang: