Nakon što je primio nekoliko dasaka Težak, i razne radio komponente kako bi se upoznao s mikrokontrolerima, autor je odlučio napraviti nešto zanimljivo i istodobno korisno. Imajući na zalihi veliki broj LED-ova, pojavila se ideja stvoriti binarni sat.
S elektroničke strane, binarni sat nije osobito kompliciran, ali autor je zakomplicirao zadatak i odlučio ne štedjeti gumbe i LED. U početku je projekt bio da se koriste 22 LED, 6 tipki i jedan visokotonac. Postojala je i ideja o sastavljanju satova na Arduino Megi zbog većeg broja pinova, ali registar promjene 74HC595 pokazao se kao spas.
materijali:
- Arduino Uno
- 2 krušne ploče
- LED crvene boje 7 kom
- Zelene LED 7 kom
- plave LED 6 kom
- 2 žute i bijele LED
- Otpornici 220 ohma 25 kom
- Piezo zujalica 1 kom
- 6 gumba za takt gumbe
- Shift izlazni registri 74HC595 u DIP-16 paketu 3 kom
- Spajanje žica 90 kom
- Modul sata u stvarnom vremenu temeljen na čipu DS1307 RTC
Kako će sve raditi.
Postoji oko 10 vrsta binarnih satova. Neki prikazuju vrijeme u binarnom decimalnom (BCD) formatu, drugi kao binarni brojevi. Kako autor posebno ne voli BCD-sat, odlučio je napraviti svoj čisti binarni sat. Nekima je teže čitati, ali razlika nije velika, jer je prevođenje brojeva iz binarnih u decimalno jednostavno. Također preduvjet tvorca sata bio je prikaz sekundi na satu.
Pored toga, sat ima 6 gumba:
Set - odgovoran je za podešavanje sata / alarma i za spremanje parametra u načinu podešavanja.
Način rada - odgovoran za prebacivanje između režima sata, alarma i odbrojavanja.
Gore - u postavci sata / alarma / odbrojavanja, povećava parametar za jedan. U alarmu i brojaču, odgovoran je za aktiviranje i deaktiviranje odabranog načina. Kad se aktivira signal, isključit će signal alarma / odbrojavanja.
Dolje - u postavci sata / alarma / odbrojavanja, smanjit će parametar za jedan. Mjerač vremena pauzirat će ga bez resetiranja odbrojavanja. Kad se alarm ugasi, signal će prenijeti 5 minuta.
24/12 - promjena formata vremena.
Zatamnjen - odgovoran za uključivanje i isključivanje LED dioda (kada su LED diode isključene, preostali gumbi prestaju raditi).
LED pozicioni dijagram:
Spajanje komponenata
Autor će sve serijske LED diode spojiti s otpornikom. Otpornik je lemljen na jednom od terminala LED-ova, nije važno koji. LED će biti povezani preko registara promjene, ovaj čip ima 16 kontakata.Ovaj broj igara omogućuje vam korištenje velikog broja igara, uzimajući samo 3 igle na Arduinu.
Izgled registra smjene 74HC595:
Q0-Q7 nalazi se u registru u koji će se LED LED-ovi povezati.
Vcc - na njega će se primijeniti 5V utikač za napajanje.
GND - zemlja povezana s GND-om na Arduinu.
OE - pin je odgovoran za obrnutu aktivaciju iglica, ali neće se koristiti, jednostavno je kratko spojen na masu.
MR je obrnuto brisanje registra, nije ga potrebno kontrolirati, stoga će biti spojeno na 5V napajanje.
ST_CP - pin je odgovoran za ažuriranje statusa registra. Prilikom snimanja stanja potrebno je na njega primijeniti LOW, nakon snimanja - VISOKO, za ažuriranje statusa izlaza. Na Arduinu ga treba spojiti iglom. Možete spojiti ovaj pin u tri registra paralelno.
SH_CP - pin, odgovoran za pomak od 1 bita registra. Na Arduinu ga treba spojiti iglom. Oni su spojeni na mikrovezu paralelno.
DS - podaci se šalju na ovaj pin, spojen je na pin na Arduino.
Q7 '- ovaj se pin koristi za kaskadno povezivanje s drugim registrima 74HC595.
Dijagram ožičenja:
Piezo zujalica bit će spojena na treći Arduino pin u seriji s otpornikom. Prije uključivanja visokotonca u krug, autor je pogledao koje pinovi podržavaju PWM jer je za nju to obavezno. Na Arduino Uno-u, PWM podržava 3, 5, 6, 9, 10 i 11 pinova.
Gumbi su povezani pomoću otpornika ugrađenih u Arduino, s jedne strane tipki spojenih na zemlju, a druge na Arduino igle.
Dakle, konačni dizajn izgleda:
Gradite na krušnoj ploči
Nakon što je stekao dodatne detalje, autor je počeo sastavljati projekt na ploči u skladu sa shemama. Izgled je trebao biti očekivan, jer ploča za ploče ograničava slobodu u smještanju komponenata, a zalijepljene žice nisu stvorile estetski užitak. Ali ipak je ploča namijenjena modelima, ali ne i gotovim uređajima.
Programski kod.
Imajući pamet u programiranju, autor je odlučio sam napisati kôd, bez korištenja tuđih razvoja. Prvi korak je bio pisanje potprograma, ono je odgovorno za treptanje svih dioda i davanje piezo signala kad je uključen. Ova funkcija pomaže u provjeri integriteta kruga, sličnog onome koji je implementiran na mnogim uređajima.
Skica je izašla prilično velika, onda možete razmotriti njezine glavne značajke.
LED rad.
Budući da se LED-ovima pristupa kroz registar pomaka, prije svega bilo je potrebno implementirati više rutina za LED-ove. Radi lakšeg rada s diodama, implementirano je niz dodatnih funkcija. Provode se različiti učinci animacije dioda. Kad sat nije postavljen, diode koje su odgovorne za sate i minute počet će bljeskati (kao što normalan sat treperi kad nije postavljen). LED diode odgovorne za sekunde također imaju svoju animaciju, dioda se može pokrenuti lijevo i desno u načinu alarma ili u načinu podešavanja sata.
Glavna petlja.
Program je konfiguriran tako da radi na sljedeći način: sat prikazuje informacije ovisno o trenutnom stanju i mijenja njegovo stanje ovisno o upotrebi tipki i događaja. Sve to izgleda kao velika količina ugniježđenih uvjeta. Stanje dioda ažurira se svaki put nakon provjere statusa vremena i tipki s pozivom na njihov rukovatelj.
Autor je također napravio sjajan posao za ispravan rad tipki za unos i timera. Izvorni kod skice možete preuzeti ispod članka.
Pokretanje izgleda
Nakon uključivanja projekta, na prvi pogled uređaj je radio ispravno i stabilno. No, autor je pronašao propust, sat je zaostajao za jednu sekundu na sat, dugo bi to bila velika pogreška.
Proučavanjem ovog problema ustanovljeno je da originalni Arduino Uno koristi keramički rezonator i nedostaje mu točnosti za mjerenje vremena u dugim razdobljima. Najracionalnije rješenje bilo je kupiti sat u stvarnom vremenu, plus što zbog ovog modula vrijeme na satu neće zalutati kad ga isključite. Autor je kupio Grove RTC modul od tvrtke Seeed Studio. To je gotova ploča s satom čipa. Autor je povezao nožice SDA i SCL modula s Arduino na igle A4 i A5, GND uz zemlju. Budući da napajanje od 5 V zauzima ploča sata, modul nije bilo nigdje za spajanje. Autor je odlučio napajati modul iz jednog od digitalnih pinova koji će se stalno napajati.Autor je također trebao izmijeniti izvorni kod i dodati knjižnicu satova u stvarnom vremenu.
Pazite na montažu
Nakon dugog rada na kodu, vrijeme je da uređaj dobije cjelovit izgled i prebaci ga s ploče na tiskanu ploču. Prije svega, bilo je potrebno napraviti ožičenje za ploču. Za to se koristio fritzing jer je autor već imao predodžbu o izgledu sata, pa je izgradio dijagram uređaja. Autor je također ručno pronašao ploču, trebalo joj je puno vremena.
Projekt za proizvodnju tiskanih pločica:
Proizvodnja PCB-a naručena je u Kini. Seeed Studio ima uslugu ploče Fusion PCB. Kroz Fritzing je datoteka izvezena u formatu Extended Gerber, a mnogi proizvođači ploča rade s njom. Dva tjedna kasnije, autor je u poštu primio dugo očekivani honorar.
Ostalo je samo lemiti ionako malo prašnjavih dijelova na ploču. Gotov rezultat nakon lemljenja izgledao je puno bolje od izgleda na ploči za kruh.
Autor projekta dugo je naporno radio i dobio je ono što je želio - jedinstveni binarni sat s timerom i budilicom. Sat pomoću baterije može se postaviti bilo gdje. Arduino je ispunio očekivanja i potpuno se nosio sa zadatkom.