Efter at have modtaget et par bestyrelser Arduino, og forskellige radiokomponenter for at blive bekendt med mikrokontrollere, besluttede forfatteren at gøre noget interessant og på samme tid nyttigt. Efter at have på lager et stort antal LED'er kom ideen op til at skabe et binært ur.
På elektroniksiden er et binært ur ikke særlig kompliceret, men forfatteren komplicerede opgaven og besluttede ikke at gemme knapper og LED'er. Oprindeligt skulle projektet bruge 22 lysdioder, 6 knapper og en tweeter. Der var også en idé om at samle et ur på Arduino Mega på grund af et større antal stifter, men skiftregistrene 74HC595 viste sig at være en frelse.
materialer:
- Arduino Uno
- 2 brødbrædder i fuld størrelse
- Lysdioder røde 7 stk
- Grønne lysdioder 7 stk
- Blå LED 6 stk
- 2 gule og hvide lysdioder
- Modstande 220 ohm 25 stk
- Piezo summer 1 stk
- 6 knapper takt knapper
- Skiftoutputregistre 74HC595 i DIP-16-pakke 3 stk
- Tilslutning af ledninger 90 stk
- Realtidsurmodul baseret på DS1307 RTC-chip
Hvordan alt fungerer.
Der er omkring 10 typer binære ure. Nogle viser tiden i binært decimal (BCD) -format, andre som binære tal. Da forfatteren ikke særligt kan lide BCD-uret, besluttede han at lave sin rene binære. Nogle mennesker synes, det er sværere at læse, men forskellen er ikke stor, fordi det er let at oversætte tal fra binært til decimal. En forudsætning for, at urets skaber var en indikation af sekunderne på uret.
Derudover har uret 6 knapper:
Sæt - er ansvarlig for ur / alarmindstillingsfunktion og gemmer parameteren i indstillingsmodus.
Mode - ansvarlig for at skifte mellem ur-, alarm- og timertilstand.
Op - i indstillingen af ur / alarm / timer øges parameteren med en. I vækkeuret og timeren er det ansvarligt for at aktivere og deaktivere den valgte tilstand. Når et signal udløses, slukker det alarm / timer-signalet.
Nede - i indstillingen af ur / alarm / timer reducerer den parameteren med en. Timeren sætter den på pause uden at nulstille nedtællingen. Når alarmen går, overfører den signalet i 5 minutter.
24/12 - ændre tidsformatet.
Dim - ansvarlig for at tænde og slukke lysdioderne (når lysdioderne er slukket, stopper de resterende knapper med at virke).
LED positioneringsdiagram:
Komponentforbindelse
Forfatteren forbinder alle lysdioder i serie og med en modstand. Modstanden er loddet til en af terminalerne på lysdioderne, det betyder ikke noget, hvilken. LED'er tilsluttes via skiftregistre, denne chip har 16 kontakter.Dette antal stifter giver dig mulighed for at bruge et stort antal stifter, der kun tager 3 stifter på Arduino.
Skiftregister Pinout 74HC595:
Q0-Q7 er resultaterne af det register, som LED'erne vil være forbundet til.
Vcc - en 5V strømforsyningsnål påføres den.
GND - jord forbundet til GND på Arduino.
OE - stiften er ansvarlig for den inverterede aktivering af stifterne, men den vil ikke blive brugt, den kortsluttes simpelthen til jorden.
MR er en inverteret registering, den behøver ikke at kontrolleres, derfor vil den være tilsluttet en 5V strømforsyning.
ST_CP - pin er ansvarlig for at opdatere status for registeret. Når der optages tilstand, er det nødvendigt at anvende LAV på den, efter optagelse - HØJ, for at opdatere status for output. Den skal tilsluttes en pin på Arduino. Du kan tilslutte denne pin i tre registre parallelt.
SH_CP - pin, ansvarlig for skiftet med 1 bit af registeret. Den skal tilsluttes en pin på Arduino. De er også forbundet parallelt på mikrokredsløb.
DS - data bliver sendt til denne pin, de er forbundet til stiften på Arduino.
Q7 '- denne pin bruges til kaskadeforbindelse med andre registre 74HC595.
Ledningsdiagram:
Piezo-summeren forbindes til den tredje Arduino-stift i serie med modstanden. Før forfatteren inkluderede diskanten, kiggede forfatteren på, hvilke stifter der understøtter PWM, da dette er obligatorisk for hende. På Arduino Uno understøtter PWM 3, 5, 6, 9, 10 og 11 pins.
Knapperne er forbundet ved hjælp af modstande, der er indbygget i Arduino, med den ene side af knapperne forbundet til jorden og den anden til Arduino-stifterne.
Så det endelige design ser ud:
Byg på brødbræt
Efter at have erhvervet yderligere detaljer, begyndte forfatteren at samle projektet på en brødbræt i henhold til skemaerne. Udseende var ved at blive forventet, fordi Breadboard begrænser friheden i placeringen af komponenter, og klæbende ledninger skabte ikke æstetisk fornøjelse. Men brødbrættet er trods alt beregnet til brødplademodeller, men ikke til færdige enheder.
Programkode.
Efter at have haft en god programmering besluttede forfatteren at skrive kode på egen hånd uden at bruge andres udvikling. Det første trin var at skrive en subroutine, det er ansvarlig for at blinke alle dioder og give piezosignalet, når det tændes. Denne funktion hjælper med at verificere kredsløbets integritet, svarende til den implementeret på mange enheder.
Skitsen kom ganske stor ud, så kan du overveje dens vigtigste funktioner.
LED arbejde.
Da LED'erne fås adgang gennem skiftregisteret, var det først og fremmest nødvendigt at implementere flere rutiner til LED'erne. For at lette betjening med dioder er en række yderligere funktioner implementeret. Forskellige effekter af animation af dioder implementeres. Når uret ikke er indstillet, begynder de dioder, der er ansvarlige for timer og minutter, at blinke (da et normalt ur blinker, når det ikke er indstillet). LED'erne, der er ansvarlige for sekunder, har også deres egen animation, dioden kan køre til venstre og højre i alarmtilstand eller i urindstillingsfunktion.
Hovedsløjfe.
Programmet er konfigureret til at fungere som følger: uret viser information afhængigt af den aktuelle tilstand og ændrer dets tilstand afhængigt af brugen af knapper og begivenheder. Det hele ser ud som en betydelig mængde indlejrede forhold. Diodenes tilstand opdateres hver gang efter kontrol af timerne og knappernes status med et opkald til deres handler.
Forfatteren gjorde også et godt stykke arbejde for den korrekte betjening af inputknapperne og timerne. Kildekoden til skitsen kan downloades under artiklen.
Start layout
Efter at have tændt for projektet, arbejdede enheden ved første øjekast korrekt og stabilt. Men forfatteren fandt en fejl, uret var bag ved et sekund i timen, i lang tid ville det blive en stor fejl.
Efter at have undersøgt dette problem viste det sig, at den originale Arduino Uno bruger en keramisk resonator, og at den mangler nøjagtighed til at måle tid i lange perioder. Den mest rationelle løsning var at købe et realtidsur, plus på grund af dette modul vil tiden på uret ikke komme på afveje, når den er slukket. Forfatteren købte Grove RTC-modulet fra Seeed Studio. Det er et færdigt bord med en urchip. Forfatteren sluttede stifterne på SDA og SCL-modulet til Arduino på stifterne A4 og A5, GND, til jorden. Da 5V-strømmen er optaget af uret, er der ingen steder at forbinde modulet. Forfatteren besluttede at tænde modulet fra en af de digitale stifter, som konstant får strøm.Forfatteren havde også brug for at ændre kildekoden og tilføje et bibliotek med ure i realtid.
Se samling
Efter at have afsluttet et langt arbejde med koden, er det tid til at give enheden et komplet udseende og overføre det fra brødbrættet til det trykte kredsløbskort. Først og fremmest var det nødvendigt at foretage ledninger til brættet. Fritzing blev brugt til dette, da forfatteren allerede havde en idé om urets udseende, og han byggede et enhedsdiagram. Forfatteren trak også manuelt op på tavlen, det tog meget tid.
Projekt til produktion af trykte kredsløb:
PCB-fremstilling blev bestilt i Kina. Seeed Studio har en Fusion PCB-korttjeneste. Gennem Fritzing blev filen eksporteret til det udvidede Gerber-format, mange bordproducenter arbejder med den. To uger senere modtog forfatteren det længe ventede gebyr i posten.
Det blev kun tilbage at lodde allerede lidt støvede dele på brættet. Det færdige resultat efter lodning så meget bedre ud end layoutet på Breadboard.
Forfatteren af projektet arbejdede hårdt i lang tid og fik det, han ville - et unikt binært ur med en timer og et vækkeur. Ved hjælp af batterirummet kan uret placeres hvor som helst. Arduino opfyldte forventningerne og klarede opgaven fuldstændigt.