Saatuaan pari lautaa Työläs, ja erilaisia radiokomponentteja tutustumaan mikrokontrollereihin, kirjoittaja päätti tehdä jotain mielenkiintoista ja samalla hyödyllistä. Koska varastossa oli suuri määrä LED-laitteita, tuli idea luoda binaarikello.
Elektroniikkapuolella binaarikello ei ole erityisen monimutkainen, mutta kirjoittaja monimutkaisti tehtävää ja päätti olla tallentamatta painikkeita ja LED-valoja. Aluksi projektissa oli tarkoitus käyttää 22 LEDiä, 6 painiketta ja yksi tweeter. Oli myös ajatus koota kello Arduino Megaan suuremman nastamäärän vuoksi, mutta siirtorekisterit 74HC595 osoittautuivat pelastukseksi.
materiaalit:
- Arduino Uno
- 2 täysikokoista leipää
- punaiset LEDit 7 kpl
- vihreitä LED-valoja 7 kpl
- Siniset LEDit 6 kpl
- 2 keltaista ja valkoista LEDiä
- Vastukset 220 ohmia 25 kpl
- Pietsosummeri 1 kpl
- 6 nappia hienosäätöpainiketta
- Vaihtolähtörekisterit 74HC595 DIP-16-paketissa 3 kpl
- Liitäntäjohdot 90 kpl
- Reaaliaikainen kellomoduuli, joka perustuu DS1307 RTC-siruun
Kuinka kaikki toimii.
Binaarikelloja on noin 10 tyyppiä. Jotkut näyttävät ajan binaarimuodossa (BCD), toiset binaarilukuina. Koska kirjailija ei erityisen pidä BCD-kellosta, hän päätti tehdä puhtaasta binaarista. Joidenkin ihmisten on vaikeampi lukea, mutta ero ei ole suuri, koska numeroiden kääntäminen binääristä desimaaliin on helppoa. Kellon luojana oli myös edellytys kellon sekuntien ilmoittamiselle.
Lisäksi kellossa on 6 painiketta:
Aseta - vastaa kellon / hälytyksen asetustilasta ja parametrin tallentamisesta asetustilaan.
Tila - vastaa vaihtaa kello-, hälytys- ja ajastintoimintojen välillä.
Ylös - kello / hälytys / ajastin -asetuksessa, lisää parametria yhdellä. Herätyskellossa ja ajastimessa se vastaa valitun tilan aktivoimisesta ja deaktivoinnista. Kun signaali laukaistaan, se sammuttaa hälytys- / ajastinsignaalin.
Alas - kello / hälytys / ajastin -asetuksessa se pienentää parametria yhdellä. Ajastin keskeyttää sen nollaamatta ajastinta. Kun hälytys sammuu, se siirtää signaalia viiden minuutin ajan.
24/12 - muuttaa aikamuotoa.
Himmennys - vastuussa LEDien kytkemisestä ja sammuttamisesta (kun LEDit eivät pala, jäljellä olevat painikkeet lopettavat toiminnan).
LED-sijoituskaavio:
Komponenttiliitäntä
Kirjailija yhdistää kaikki LEDit sarjaan ja vastukseen. Vastus on juotettu yhteen LEDien liittimistä, sillä ei ole väliä kumpi. LEDit kytketään siirtorekisterien kautta, tällä sirulla on 16 kosketinta.Tämä nastatapa antaa sinun käyttää suurta määrää nastaita, ottaen vain 3 nastaa Arduinossa.
Vaihtorekisteri Pinout 74HC595:
Q0-Q7 ovat sen rekisterin havainnot, johon LEDit kytketään.
Vcc - siihen syötetään 5 V: n virtalähdetappi.
GND - maa kytketty GND: hen Arduinolla.
OE - tappi vastaa tappien käänteisestä aktivoinnista, mutta sitä ei käytetä, se on yksinkertaisesti oikosuljettu.
MR on käänteinen rekisterin selvitys, jota ei tarvitse ohjata, joten se kytketään 5 V: n virtalähteeseen.
ST_CP - pin vastaa rekisterin tilan päivittämisestä. Tilaa nauhoitettaessa on tarpeen soveltaa siihen LOW, nauhoituksen jälkeen - HIGH, päivittää lähtöjen tila. Se on kytkettävä Arduinon napaan. Voit yhdistää tämän nastaa kolmeen rekisteriin samanaikaisesti.
SH_CP - nasta, joka vastaa siirrosta 1 bitillä rekisteriä. Se on kytkettävä Arduinon napaan. Ne on kytketty mikropiireihin myös rinnakkain.
DS - tietoja lähetetään tähän nastaan, se on kytketty Arduinon nastaan.
Q7 '- tätä nastaa käytetään kaskadiliitäntään muihin rekistereihin 74HC595.
Kytkentäkaavio:
Pietsosummeri kytketään sarjaan kolmanteen Arduino-tappiin vastuksen kanssa. Ennen tweeterin sisällyttämistä piiriin kirjailija tarkasteli, mitkä tapit tukevat PWM: ää, koska tämä on hänelle pakollinen. Arduino Unossa PWM tukee 3, 5, 6, 9, 10 ja 11 nastaa.
Painikkeet kytketään käyttämällä Arduinoon rakennettuja vastuksia, painikkeiden toinen puoli on kytketty maahan ja toinen Arduino-nastaisiin.
Joten lopullinen suunnittelu näyttää:
Rakenna leipätaululle
Saatuaan lisätietoja, kirjailija aloitti projektin kokoamisen leipälevylle kaavioiden mukaisesti. Ulkonäköä oli odotettavissa, koska leipälauta rajoittaa komponenttien sijoittamisen vapautta, eikä johtimien kiinnittäminen ole luonut esteettistä nautintoa. Mutta leipälauta on kuitenkin tarkoitettu leipälautamalleille, mutta ei valmiille laitteille.
Ohjelman koodi.
Ohjelmoinnissaan osaavalla tavalla kirjoittaja päätti kirjoittaa koodin omin keinoin käyttämättä muiden ihmisten kehitystä. Ensimmäinen askel oli aliohjelman kirjoittaminen, se on vastuussa kaikkien diodien vilkkumisesta ja pietsosignaalin antamisesta, kun virta on kytketty. Tämä toiminto auttaa varmistamaan piirin eheyden, samoin kuin monissa laitteissa.
Luonnos tuli melko suuri, niin voit harkita sen pääpiirteitä.
LED-työ.
Koska LEDeihin pääsee siirtorekisterin kautta, ensinnäkin oli tarpeen toteuttaa enemmän rutiineja LEDeille. Diodien käytön helpottamiseksi on toteutettu joukko lisätoimintoja. Toteutetaan erilaisia diodien animaation vaikutuksia. Kun kelloa ei ole asetettu, tunneista ja minuutteista vastaavat diodit alkavat vilkkua (normaali kello vilkkuu, kun sitä ei ole asetettu). Sekuntia vastaavilla LED-valoilla on myös oma animaatio, diodi voi ajaa vasemmalle ja oikealle hälytystilassa tai kellon asetustilassa.
Pääsilmukka.
Ohjelma on määritetty toimimaan seuraavasti: kello näyttää tiedot nykyisestä tilasta riippuen ja muuttaa sen tilaa painikkeiden ja tapahtumien käytöstä riippuen. Se kaikki näyttää huomattavalta määrältä sisäkkäisiä olosuhteita. Diodien tila päivitetään joka kerta, kun ajastimien ja painikkeiden tila on tarkistettu soittamalla niiden käsittelijälle.
Kirjailija teki myös hienoa työtä syöttöpainikkeiden ja ajastimien oikeassa toiminnassa. Luonnoksen lähdekoodi voidaan ladata artikkelista.
Käynnistä asettelu
Projektin käynnistämisen jälkeen laite näytti ensi silmäyksellä oikein ja vakaasti. Mutta kirjoittaja löysi vian, kello oli takana sekunnilla tunnissa, pitkään se olisi iso virhe.
Tutkittuaan tätä ongelmaa, havaittiin, että alkuperäinen Arduino Uno käyttää keraamista resonaattoria ja että sillä ei ole tarkkuutta mittaamaan aikaa pitkiä aikoja. Järkevin ratkaisu oli ostaa reaaliaikainen kello, plus tämän moduulin takia kellon aika ei harhaan, kun se sammutetaan. Kirjailija osti Grove RTC -moduulin Seeed Studiosta. Se on viimeistelty lauta, jossa on kellosiru. Kirjoittaja liitti SDA: n ja SCL-moduulin tapit Arduinoon A4 ja A5, GND -tappien maahan. Koska kellotaulu käyttää 5 V: n virtaa, moduulia ei ollut liitetty mihinkään. Kirjoittaja päätti virrata moduulin yhdestä digitaalisesta nastasta, joka saa jatkuvan virran.Tekijän piti myös muokata lähdekoodia ja lisätä reaaliaikaisten kellojen kirjasto.
Kellon kokoonpano
Suoritettuaan pitkän koodin käsittelyn on aika antaa laitteelle täydellinen ilme ja siirtää se leipätaulusta piirilevylle. Ensinnäkin oli tarpeen tehdä levyn johdotus. Tätä varten käytettiin hienostusta, koska kirjoittajalla oli jo käsitys kellon ulkonäöstä ja hän rakensi laitekaavion. Kirjailija jäljitti myös taulun manuaalisesti, se vei paljon aikaa.
Piirilevyjen valmistusprojekti:
Piirilevyjen valmistus tilattiin Kiinasta. Seeed Studiossa on fuusiopiirilevy-palvelu. Fritzingin kautta tiedosto vietiin Extended Gerber -muotoon, monet levyvalmistajat työskentelevät sen kanssa. Kaksi viikkoa myöhemmin kirjoittaja sai kauan odotetun palkkion postitse.
Jäi vain juottaa jo pienet pölyiset osat levylle. Lopullinen tulos juottamisen jälkeen näytti paljon paremmalta kuin leipälevyn asettelu.
Projektin tekijä työskenteli pitkään ahkerasti ja sai mitä halusi - ainutlaatuisen binaarikello ajastimella ja herätyskellon. Paristolokeron avulla kello voidaan sijoittaa mihin tahansa. Arduino täytti odotukset ja selvisi tehtävästä täysin.