Arduino Powered Binary Clock: 5 Steps (na may Mga Larawan)

Arduino Powered Binary Clock: 5 Steps (na may Mga Larawan)

Talaan ng mga Nilalaman:

Anonim

Ang itinuturo na ito ay tutulong sa iyo na bumuo ng isang Arduino Binary Clock. Ang orignial na ideya para sa instructable na ito ay dinisenyo ni Daniel Andrade. Ang aking mga instructable ay gumagamit ng mga bahagi ng mount sa ibabaw, ngunit maaaring madaling iniakma sa mga butas sa pamamagitan ng butas kung nais mo. Maaari mong sundin ang aking iba pang mga Instructable para sa Building Your Own Arduino upang makapagsimula.

Gusto ko hikayatin mong bigyan ang ibabaw mount isang pagtatangka gayunpaman bilang ang proyektong ito ay isang mahusay na paraan upang simulan ang pag-aaral sa panghinang ibabaw mount components.

Para sa aking orasan, mayroon akong display set sa tuktok ng lalagyan. Ginagamit ko ito sa aking workbench na karaniwang nakatayo sa akin, kaya mas madaling makita ang ganitong paraan. Lumilikha din ito ng magandang nagliliwanag na epekto kapag ang mga ilaw ay mababa o bumababa, na inihuhulog ang asul na kulay paitaas sa silid.

Maaari kang pumili ng isang lalagyan ayon sa iyong gusto at ilagay ang orasan sa mukha kung paano ito pinakamahusay na naaangkop sa iyong mga pangangailangan.

Mga Kagamitan:

Hakbang 1: Listahan ng Listahan ng Bahagi

Nasa ibaba ang isang listahan ng lahat ng mga item na kakailanganin mo upang makumpleto ang proyektong ito. Sinubukan kong isama ang mga lugar kung saan maaari kang mag-order mula sa pati na rin ang mga opsyonal na mga bahagi na maaaring gusto mong kunin.

Ang listahan na ito ay para sa mga bagay na may mount sa ibabaw. Kung nagpasya kang pumunta sa pamamagitan ng mga butas sa pamamagitan ng butas, ang mga mapagkukunang nalista ko ay nagbebenta rin ng mga ito pati na rin at maaari ka lamang maghanap sa bahagi.

Ang iyong kailangan:

  1. ATmega168 may Arduino Bootloader - Magagamit sa FunGizmos para sa $ 4.00
  2. 10K Resistor - Magagamit sa Jameco - Halaga 0.01 (ea./100 para sa $ 1.00) Item # 1877832
  3. 220 Ohm Resistor - Magagamit sa Jameco - Halaga 0.01 (ea. / 100 para sa $ 1.00) Item # 1878149
  4. 22pF Capacitor - Magagamit sa Jameco - Gastos 0.06 (ea. / 100 para sa $ 6.00) Item # 1856783
  5. 10uF Capacitor - Magagamit sa Jameco - Gastos 0.12 (ea. / 10 para sa $ 1.20) Item # 1858797
  6. Pushbutton Switch - Magagamit sa Jameco - Gastos.35 ea. Item # 2076236
  7. LM78L05AC Voltage Regulator - Magagamit sa Jameco - Gastos.39 ea. Item # 902186
  8. 13 LED's. Ginamit ko ang Blue, ngunit maaari mong gamitin ang anumang kulay. Magagamit sa Jameco - Gastos.25 ea Item # 2046441
  9. 16MHz Crystal - Magagamit sa SparkFun.com - Gastos 1.50 e SKU: COM-00536
  10. DC Power Jack Connector - Magagamit sa SparkFun.com - Gastos 1.25 at. PRT-00119
  11. Kung wala ka pa, isang Arduino Board. Magagamit sa SparkFun.com - Gastos 29.95 DEV-00666 o Buuin ang Iyong Sariling Arduino
  12. PC Board (Perf Board / Proto Board) - Magagamit sa Radioshack - mga varries ng gastos.
  13. Opsyonal na Protoboard - Magagamit sa Wright Hobbies - Gastos 3.99 Item # PB400. Gustong-gusto ko ang mga ito!
  14. Project Container. Ito ay gagamitin upang ilagay ang iyong orasan. Nagpunta ako sa Hobby Lobby craft store at kinuha ang isang murang kahon sa kahoy para sa $ 1.99, at ang ilang mga scrap trim na paghubog mula sa Lowes para sa.25
  15. Translucent Acrylic - Kinuha ko ang ilang puting translucent acrylic mula sa isang lokal na tindahan na nagkakahalaga ng $ 1 kada pound.
  16. x2 SPDT Pushbuttons - Magagamit sa RadioShack -Post $ 3.99 - Catalog #: 275-1549

Hakbang 2: 8421 Binary at 24 Oras Oras

Una, hinahayaan kang tingnan kung paano maunawaan ang 8421 Binary system. Ang iyong orasan ay magkakaroon ng dalawang haligi para sa "oras" at dalawang haligi para sa "mga minuto".

Gumagamit kami ng isang 24 na oras na sistema ng oras.

Gamit ang sinabi, kung 8:00 ng umaga, ang oras ay 0800 oras at kung 8:00 ng umaga, ang oras ay mababasa bilang 20:00 na oras. Sa pangunahing pagsasanay ng US Army, kapag una mong natutunan ang sistema ng oras na ito, itinuro nila sa amin na mag-count pabalik sa pamamagitan ng 2 para sa mga oras ng PM. Kaya halimbawa, kung ako ay sinabihan na maging nasa bituin sa pamamagitan ng 2100 na oras. Sa aking ulo ay iniisip ko 2100 - kaya 1, 0, 9 at alam nila ang ibig sabihin ng 9 PM.

O kung wala kaming trabaho sa 1630 na oras, sa aking ulo ay iniisip ko ang 1630 - kaya 6, 5, 4 at alam na ang araw ay tapos na sa 4:30 PM. Umaasa ako na may katuturan, naramdaman ko ang pangangailangan na ipaliwanag para sa sinuman na hindi ginagamit sa pagsasabi ng oras sa pamamaraang ito.

Sa pagtingin sa 8421 na imahe ng Binary Example, sa unang haligi ng oras na humantong, kung ang unang panuntunan ay naiilawan, ang halaga nito ay nagkakahalaga ng 1 at sa pangalawang haligi kung ang ika-4 (tuktok) na humantong ay naiilawan, ang halaga nito ay magiging nagkakahalaga ng 8. Samakatuwid ay mayroon kang 18.

Ngayon sa minutong mga leds, ipaalam sa sabihin ang unang hanay ay ang pangatlong pinuno at ang unang humantong lit up. Ang halagang ito ay magiging 4 + 1 = 5. Ang pangalawang haligi, ang ikatlong panukala ay naiilawan ay magbibigay ng isang halaga ng 4. Kaya magkasama magkakaroon ka ng 54.

Ang pangkalahatang oras ay babasahin bilang 18:54 na magiging 6:54 PM

Tingnan ang pangalawang halimbawa ng imahe. Ang oras ay 21:37

Mga halimbawa Mga larawan mula kay Daniel Andrade

Hakbang 3: Paglikha ng Arduino Binary Clock PCB

Mayroon kang ilang mga pagpipilian sa hakbang na ito. Maaari mong gamitin ang iyong Arduino board at patakbuhin ang lahat ng mga sangkap dito. Gayunpaman ang pagpipiliang ito, ikaw ay may access sa iyong Arduino hangga't ikaw ay gumagamit ng orasan: (kaya kailangan mong bumili ng isa pa.

Maaari mong Buuin ang Iyong Sariling Arduino sa isang piraso ng Protoboard, at pagkatapos ay patakbuhin ang mga wires ng koneksyon sa isang magkahiwalay na protoboard na may LED sa ito. Ito ang paraan na ginamit ko para sa aking unang disenyo ng orasan.

Ang isang mas mahusay na diskarte ay upang mag-etch ang iyong sariling tanso PCB. Ang ikalawang orasan na dinisenyo ko ay nagpunta ako sa ganitong paraan. Mayroong pleanty ng Instructables kung paano ito gagawin. Dahil ang pamamaraang ito ay nangangailangan ng mas maraming kagamitan, pupuntahan ko ang unang disenyo ng orasan para sa mga layunin ng pagtuturo. Mamaya o sa iyong sarili maaari mong pananaliksik ang iba pang mga pamamaraan kung nais mong subukan ang pag-ukit ng iyong sariling PCB.

Sa sandaling mayroon ka ng protoboard na gagamitin bilang iyong Arduino nakumpleto. Gamitin ang iyong aktwal na Arduino board, at i-upload ang sketch na ibinigay sa dulo ng tutorial na ito. Pop na mag-chip out, at ilagay ito sa protoboard Arduino.

Ang resistors at leds ay konektado mula sa ikalawang protoboard, pababa sa iyong dinisenyo Arduino board. Sundin ang nakalakip na eskematiko sa hakbang na ito.

Nag-uugnay ang Arduino Pin 1 sa Resistor 1 na nag-uugnay sa LED 1, na nag-uugnay sa GND.

Nag-uugnay ang Arduino Pin 2 sa Resistor 2 na nag-uugnay sa LED 2, na nag-uugnay sa GND.

* ulitin ang prosesong ito para sa lahat ng 13 resistors, Pins at lead's.

SOLDERING TIP.

Maglagay ng isang maliit at manipis na layer ng soldering papunta sa lugar na ikaw ay magparehistro sa una, pagkatapos ay sa isang kamay na may hawak na bakal na panghinang, at ang iba pang gamit ang isang pares ng tweezers, ilagay ang bahagi sa lugar upang maging soldered sa. Hawakan ito gamit ang mga tiyani, at pagkatapos ay ulitin ang panghinang. Patuloy na gamitin ang presyur gamit ang mga tiyani at ilipat ang iron solder. Ngayon ay maaari mong ipaalam sa pumunta sa mga tweezers at ang bahagi ay konektado sa lugar. Higit pang mga Instructable para sa paghihinang.

Hakbang 4: Kaso ng Orasan

Ang susunod na hakbang ay upang sukatin at kunin ang acrylic. Pinuputol ko nang bahagya ang halaga ng mga protobo para ako ay may silid upang ilipat ang lokasyon ng LED sa paligid upang maging medyo nakasentro.

Para sa pabahay ng orasan, pinili ko ang isang kahon na may malalim na takip. Ito ay nagpapahintulot sa akin upang ma-akma ang mga protoboards sa ito, at pa rin magkaroon ng kuwarto upang gumawa ng isang patag na takip upang itago ang lahat ng bagay kapag ang talukap ng mata ay binuksan.

Drew ko ang isang parisukat na pattern para sa kung saan ang mukha ay, pagkatapos ay drilled isang butas sa sulok. Ito ay nagpapahintulot sa akin na gumamit ng isang maliit na copping nakita upang pagkatapos ay tanggalin ang hugis. Ang mga pagbawas ay uri ng magaspang, kaya idinagdag ko ang pumantay sa pag-molde sa paligid ng pagbubukas upang itago ito. Ginagawa rin nito itong mas tapos na tapos na.

Pagkatapos kong sanded at marumi ang kahon, inilagay ko ang acrylic at sangkap sa at sinusukat kung saan matatagpuan ang pushbuttons at power jack. Sa isang drill bit at counter sink, ginawa ko ang mga butas para sa kanila. Maingat na ipasok ang iyong arduino binary clock board sa talukap ng mata.

Hakbang 5: Arduino Sketch

/*

Isang open-source binary clock para sa Arduino.

Batay sa code mula sa Rob Faludi (http://www.faludi.com)

Code sa ilalim (cc) ni Daniel Spillere Andrade, www.danielandrade.net

creativecommons.org/license/cc-gpl

*/

Int pangalawang = 0, minuto = 0, oras = 0; / / simulan ang oras sa 00:00:00

int munit, hunit, valm = 0, valh = 0, ledstats, i;

walang bisa setup () {// set outputs at inputs

pinMode (1, Output); pinMode (2, Output); pinMode (3, Output); pinMode (4, Output); pinMode (5, Output);

pinMode (6, Output); pinMode (7, Output); pinMode (8, Output); pinMode (9, Output); pinMode (10, Output);

pinMode (11, Output); pinMode (12, Output); pinMode (13, Output);

pinMode (0, INPUT);

}

walang bisa loop () {

static unsigned long lastTick = 0; / / set up ng isang lokal na variable upang i-hold ang huling oras namin inilipat pasulong isang segundo

// (static na mga variable ay sinimulan ng isang beses at panatilihin ang kanilang mga halaga sa pagitan ng mga function ng mga tawag)

// sumulong sa isang segundo bawat 1000 milliseconds

kung (millis () - lastTick> = 1000) {

lastTick = millis ();

ikalawang ++;

}

// sumulong nang isang minuto bawat 60 segundo

kung (pangalawang> = 60) {

minutong ++;

pangalawang = 0; // i-reset ang mga segundo sa zero

}

// sumulong nang isang oras bawat 60 minuto

kung (minutong> = 60) {

oras ++;

minuto = 0; // i-reset ang mga minuto sa zero

}

kung (oras> = 24) {

oras = 0;

minuto = 0; // i-reset ang mga minuto sa zero

}

munit = minuto% 10; / / Nagtatakda ng variable munit at hunit para sa mga numero ng unit

hunit = oras% 10;

ledstats = digitalRead (0); / / basahin ang halaga ng pag-input, para sa setting na humantong off, ngunit iingat count

kung (ledstats == mababa) {

para sa (i = 1; i <= 13; i ++) {

digitalWrite (i, LOW);}

} else {

// mga yunit ng minuto

(munit == 1 || munit == 3 || munit == 5 || munit == 7 || munit == 9) {digitalWrite (1, HIGH);} else {digitalWrite (1, LOW);}

kung (munit == 2 || munit == 3 || munit == 6 || munit == 7) {digitalWrite (2, HIGH);} else {digitalWrite (2, LOW);}

kung (munit == 4 || munit == 5 || munit == 6 || munit == 7) {digitalWrite (3, HIGH);} else {digitalWrite (3, LOW);}

kung (munit == 8 || munit == 9) {digitalWrite (4, HIGH);} else {digitalWrite (4, LOW);}

// minuto

(minutong> = 10 && minuto <20) || (minuto> = 30 && minuto <40) || (minuto> = 50 && minuto <60)) {digitalWrite (5, HIGH);} 5, mababa);}

kung (minutong> = 20 && minutong <40) {digitalWrite (6, HIGH);} else {digitalWrite (6, LOW);}

kung (minutong> = 40 && minuto <60) {digitalWrite (7, HIGH);} else {digitalWrite (7, LOW);}

// mga yunit ng oras

(hunit == 1 || hunit == 3 || hunit == 5 || hunit == 7 || hunit == 9) {digitalWrite (8, HIGH);} else {digitalWrite (8, LOW);}

kung (hunit == 2 || hunit == 3 || hunit == 6 || hunit == 7) {digitalWrite (9, HIGH);} else {digitalWrite (9, LOW);}

kung (hunit == 4 || hunit == 5 || hunit == 6 || hunit == 7) {digitalWrite (10, HIGH);} else {digitalWrite (10, LOW);}

kung (hunit == 8 || hunit == 9) {digitalWrite (11, HIGH);} else {digitalWrite (11, LOW);}

//oras

kung (oras> = 10 && oras <20) {digitalWrite (12, HIGH);} else {digitalWrite (12, LOW);}

kung (oras> = 20 && oras <24) {digitalWrite (13, HIGH);} else {digitalWrite (13, LOW);}

}

valm = analogRead (0); / magdagdag ng isang minuto kapag pinindot

kung (valm <800) {

minutong ++;

pangalawang = 0;

pagkaantala (250);

}

valh = analogRead (5); / magdagdag ng isang oras kapag pinindot

kung (valh <800) {

oras ++;

pangalawang = 0;

pagkaantala (250);

}

}

Finalist sa

Arduino Contest