Ang pagkakaroon ng natanggap ng isang pares ng mga board Arduino, at iba't ibang mga bahagi ng radyo upang makilala ang mga microcontroller, nagpasya ang may-akda na gumawa ng isang bagay na kawili-wili at sa parehong oras ay kapaki-pakinabang. Ang pagkakaroon sa stock ng isang malaking bilang ng mga LED, ang ideya ay dumating upang lumikha ng isang binary na orasan.
Sa panig ng electronics, ang isang binary clock ay hindi partikular na kumplikado, ngunit kumplikado ng may-akda ang gawain at nagpasya na huwag i-save ang mga pindutan at LED. Sa una, ang proyekto ay gumamit ng 22 LEDs, 6 na pindutan, at isang tagasisi. Ito rin ay isang ideya na mag-ipon ng isang relo sa Arduino Mega dahil sa isang mas malaking bilang ng mga pin, ngunit ang shift registro 74HC595 ay naging isang kaligtasan.
Mga Materyales:
- Arduino Uno
- 2 full-size na mga breadboard
- Mga LED na pulang 7 mga PC
- Mga berdeng LED 7 mga PC
- Mga Blue LED 6 na PC
- 2 dilaw at puting LEDs
- Mga Resistor 220 ohms 25 mga PC
- Piezo buzzer 1 pc
- 6 na mga pindutan ng taktika ng taktika
- Ang rehistro ng shift output ay 74HC595 sa DIP-16 package 3 na mga PC
- Pagkonekta ng mga wire 90 mga PC
- Module ng real-time na orasan batay sa DS1307 RTC chip
Paano gagana ang lahat.
Mayroong tungkol sa 10 mga uri ng mga binary na orasan. Ang ilan ay nagpapakita ng oras sa format na binary decimal (BCD), ang iba bilang mga numero ng binary. Yamang hindi gusto ng may-akda lalo na ang BCD-relo, nagpasya siyang gawin ang kanyang purong binary. Ang ilang mga tao ay nahihirapang basahin, ngunit ang pagkakaiba ay hindi malaki, dahil ang pagsalin ng mga numero mula sa binary hanggang desimal ay madali. Gayundin isang kinakailangan para sa tagalikha ng relo ay isang indikasyon ng mga segundo sa relo.
Bilang karagdagan, ang relo ay may 6 na pindutan:
Itakda - ay responsable para sa mode / setting ng setting ng alarm at i-save ang parameter sa mode ng setting.
Mode - responsable para sa paglipat sa pagitan ng mga mode ng orasan, alarma at timer.
Up - sa setting ng orasan / alarma / timer, pinapataas ang parameter ng isa. Sa alarm clock at timer, responsable para sa pag-activate at pag-deactivate sa napiling mode. Kapag ang isang signal ay na-trigger, i-off ang signal ng alarm / timer.
Down - sa setting ng orasan / alarm / timer, babawasan nito ang parameter nang isa. I-pause ito ng timer nang hindi na-reset ang countdown. Kapag nawala ang alarma, ililipat nito ang signal sa loob ng 5 minuto.
24/12 - baguhin ang format ng oras.
Dim - responsable para sa pag-on at off ang mga LED (kapag ang mga LED ay naka-off, ang natitirang mga pindutan ay tumigil sa pagtatrabaho).
LED diagram ng pagpoposisyon:
Component na Koneksyon
Ikokonekta ng may-akda ang lahat ng mga LED sa serye at may isang risistor. Ang risistor ay ibinebenta sa isa sa mga terminal ng mga LED, hindi mahalaga kung alin ang. Ang mga LED ay konektado sa pamamagitan ng mga registro ng shift, ang chip na ito ay may 16 na mga contact.Pinapayagan ka ng bilang ng mga pin na ito na gumamit ng isang malaking bilang ng mga pin, kumukuha lamang ng 3 pin sa Arduino.
Shift Register Pinout 74HC595:
Ang Q0-Q7 ay ang mga natuklasan ng rehistro kung saan ang mga LED ay konektado.
Ang Vcc - isang 5V power supply pin ay ilalapat dito.
GND - lupa na konektado sa GND sa Arduino.
OE - ang pin ay may pananagutan para sa baligtad na pag-activate ng mga pin, ngunit hindi ito gagamitin, ito ay simpleng pinaikling sa lupa.
Ang MR ay isang baligtad na pag-clear ng rehistro, hindi ito kailangang kontrolado, samakatuwid ito ay konektado sa isang 5V na supply ng kuryente.
Ang ST_CP - pin ay responsable para sa pag-update ng katayuan ng rehistro. Kapag nagre-record ng estado, kinakailangan na mag-aplay ng LOW dito, pagkatapos maitala ang - HIGH, upang mai-update ang katayuan ng mga output. Kailangan itong konektado sa isang pin sa Arduino. Maaari mong ikonekta ang pin na ito sa tatlong mga rehistro na kahanay.
SH_CP - pin, na responsable para sa paglipat ng 1 bit ng rehistro. Kailangan itong konektado sa isang pin sa Arduino. Ang mga ito ay konektado sa mga microcircuits din kahanay.
DS - ipinadala ang data sa pin na ito, nakakonekta ito sa pin sa Arduino.
Q7 '- ang pin na ito ay ginagamit para sa koneksyon ng kaskad sa iba pang mga rehistro 74HC595.
Mga diagram ng kable:
Ang piezo buzzer ay konektado sa ikatlong Arduino pin sa serye kasama ang risistor. Bago isama ang tweeter sa circuit, tiningnan ng may-akda kung aling mga pin ang sumusuporta sa PWM, dahil ito ay sapilitan para sa kanya. Sa Arduino Uno, sinusuportahan ng PWM ang 3, 5, 6, 9, 10, at 11 Pins.
Ang mga pindutan ay konektado gamit ang mga resistor na binuo sa Arduino, na may isang bahagi ng mga pindutan na konektado sa lupa at ang iba pa sa mga Arduino pin.
Kaya, ang panghuling disenyo ay mukhang:
Bumuo sa Breadboard
Matapos makuha ang karagdagang mga detalye, sinimulan ng may-akda ang pag-iipon ng proyekto sa isang breadboard ayon sa mga scheme. Ang hitsura ay malapit nang asahan, dahil ang Breadboard ay pinigilan ang kalayaan sa paglalagay ng mga bahagi, at ang pagdikit ng mga wire ay hindi lumikha ng aesthetic kasiyahan. Ngunit ang tabon pagkatapos ng lahat ay inilaan para sa mga modelo ng breadboard, ngunit hindi para sa mga natapos na aparato.
Program code.
Ang pagkakaroon ng isang savvy sa programming, nagpasya ang may-akda na magsulat ng code sa kanyang sarili, nang hindi gumagamit ng mga kaunlaran ng ibang tao. Ang unang hakbang ay ang pagsulat ng isang subroutine, responsable para sa pagkislap ng lahat ng mga diode at pagbibigay ng signal ng piezo kapag naka-on. Ang function na ito ay tumutulong upang i-verify ang integridad ng circuit, na katulad ng ipinatupad sa maraming mga aparato.
Ang sketch ay lumabas na malaki, pagkatapos ay maaari mong isaalang-alang ang mga pangunahing tampok.
Gumagana ang LED.
Dahil ang mga LED ay na-access sa pamamagitan ng rehistro ng shift, una sa lahat, kinakailangan upang maipatupad ang mas maraming mga gawain para sa mga LED. Para sa mas madaling operasyon na may mga diode, naipatupad ang isang bilang ng mga karagdagang pag-andar. Ang iba't ibang mga epekto ng animation ng mga diode ay ipinatupad. Kapag ang orasan ay hindi nakatakda, ang mga diode na responsable para sa mga oras at minuto ay magsisimulang mag-flash (bilang isang normal na orasan ay kumikislap kapag hindi nakatakda). Ang mga LED na responsable para sa mga segundo ay mayroon ding kanilang sariling animation, ang diode ay maaaring tumakbo pakaliwa at pakanan sa mode ng alarma, o sa mode ng setting ng orasan.
Pangunahing loop.
Ang programa ay na-configure upang gumana tulad ng sumusunod: ang orasan ay nagpapakita ng impormasyon depende sa kasalukuyang estado, at baguhin ang estado nito depende sa paggamit ng mga pindutan at kaganapan. Ang lahat ng ito ay mukhang isang malaking halaga ng mga nested kondisyon. Ang estado ng mga diode ay ina-update tuwing matapos suriin ang katayuan ng mga timer at mga pindutan na may isang tawag sa kanilang handler.
Gayundin, ang may-akda ay gumawa ng isang mahusay na trabaho para sa tamang operasyon ng mga pindutan ng input at timer. Ang source code ng sketch ay maaaring ma-download sa ilalim ng artikulo.
Ilunsad ang layout
Matapos i-on ang proyekto, sa unang sulyap, ang aparato ay gumana nang tama at stably. Ngunit natagpuan ng may-akda ang isang kapintasan, ang orasan ay nasa likuran ng isang segundo bawat oras, sa mahabang panahon ay magiging isang malaking pagkakamali.
Ang pagkakaroon ng pag-aralan ang problemang ito, natagpuan na ang orihinal na Arduino Uno ay gumagamit ng isang ceramic resonator, at wala itong katumpakan para sa pagsukat ng oras sa mahabang panahon. Ang pinakapangangatwiran na solusyon ay ang pagbili ng real-time na orasan, kasama ang modyul na ito, ang oras sa orasan ay hindi maliligaw kapag naka-off. Binili ng may-akda ang module ng Grove RTC mula sa Seeed Studio. Ito ay isang tapos na board na may isang chip ng orasan. Ikinonekta ng may-akda ang mga pin ng module ng SDA at SCL sa Arduino sa mga pin ng A4 at A5, GND sa lupa. Dahil ang kapangyarihan ng 5V ay inookupahan ng orasan board, wala kahit saan upang ikonekta ang module. Nagpasya ang may-akda na kapangyarihan ang modyul mula sa isa sa mga digital na pin, na kung saan ay palaging pasiglahin.Gayundin, kailangan ng may-akda na baguhin ang source code at magdagdag ng isang library ng mga real-time na orasan.
Watch Assembly
Ang pagkumpleto ng isang mahabang trabaho sa code, oras na upang bigyan ang aparato ng isang kumpletong hitsura at ilipat ito mula sa breadboard sa nakalimbag na circuit board. Una sa lahat, kinakailangan upang gawin ang mga kable para sa board. Ginamit ang Fritzing para dito, dahil mayroon nang ideya ang may-akda sa hitsura ng relo, at nagtayo siya ng isang diagram ng aparato. Manu-manong sinusubaybayan din ng may-akda ang board, tumagal ng maraming oras.
Proyekto para sa paggawa ng nakalimbag na circuit board:
Ang pagmamanupaktura ng PCB ay iniutos sa China. Ang Nakakita sa Studio ay may serbisyo ng board ng Fusion PCB. Sa pamamagitan ng Fritzing, ang file ay na-export sa Pinalawak na format ng Gerber, maraming mga tagagawa ng board ang nagtatrabaho dito. Pagkalipas ng dalawang linggo, natanggap ng may-akda ang pinakahihintay na bayad sa koreo.
Nanatili lamang ito sa panghinang na may isang maliit na maalikabok na bahagi sa board. Ang natapos na resulta matapos ang paghihinang ay mukhang mas mahusay kaysa sa layout sa Breadboard.
Ang may-akda ng proyekto ay nagtrabaho nang husto sa loob ng mahabang panahon at nakuha ang nais niya - isang natatanging binary orasan na may isang timer at isang alarm clock. Gamit ang kompartimento ng baterya, ang relo ay maaaring mailagay kahit saan. Natugunan ni Arduino ang mga inaasahan at ganap na kinaya ang gawain.