» Elektronica » Arduino »Binaire klok met alarm en timer op Arduino Uno

Binaire klok met alarm en timer op Arduino Uno


Ik heb een paar borden ontvangen Arduino, en verschillende radiocomponenten om kennis te maken met microcontrollers, besloot de auteur om iets interessants en tegelijkertijd nuttig te doen. Met een groot aantal LED's op voorraad kwam het idee om een ​​binaire klok te maken.

Aan de elektronische kant is een binaire klok niet bijzonder ingewikkeld, maar de auteur heeft de taak ingewikkelder gemaakt en heeft besloten om knoppen en LED's niet op te slaan. Aanvankelijk zou het project 22 leds, 6 knoppen en één tweeter gebruiken. Het was ook een idee om een ​​horloge op de Arduino Mega te monteren vanwege een groter aantal pinnen, maar de schuifregisters 74HC595 bleken een redding te zijn.

Materialen:
- Arduino Uno
- 2 full-size breadboards
- LED's rood 7 stuks
- Groene leds 7 stuks
- Blauwe LED's 6 stuks
- 2 gele en witte leds
- Weerstanden 220 ohm 25 st
- Piëzo-zoemer 1 st
- 6 knoppen tactknoppen
- Shift output registers 74HC595 in DIP-16 pakket 3 stuks
- Aansluitdraden 90 stuks
- Real-time klokmodule op basis van de DS1307 RTC-chip

Hoe alles werkt.
Er zijn ongeveer 10 soorten binaire klokken. Sommige tonen tijd in binair decimaal (BCD) formaat, andere als binaire getallen. Omdat de auteur de BCD-watch niet zo mooi vindt, besloot hij zijn pure binary te maken. Sommige mensen vinden het moeilijker om te lezen, maar het verschil is niet groot, omdat het eenvoudig is om getallen van binair naar decimaal te vertalen. Een voorwaarde voor de maker van het horloge was ook een indicatie van de seconden op het horloge.

Daarnaast heeft het horloge 6 knoppen:
Set - is verantwoordelijk voor de klok / alarminstellingsmodus en het opslaan van de parameter in de instellingsmodus.
Modus - verantwoordelijk voor het schakelen tussen de klok-, alarm- en timermodi.
Omhoog - verhoogt in de klok / alarm / timer-instelling de parameter met één. In de wekker en timer is het verantwoordelijk voor het activeren en deactiveren van de geselecteerde modus. Wanneer een signaal wordt geactiveerd, wordt het alarm- / timersignaal uitgeschakeld.
Omlaag - in de klok / alarm / timer-instelling zal het de parameter met één verlagen. De timer pauzeert het zonder het aftellen te resetten. Wanneer het alarm afgaat, zal het het signaal gedurende 5 minuten overdragen.
24/12 - verander het tijdformaat.
Dim - verantwoordelijk voor het in- en uitschakelen van de LED's (als de LED's uit zijn, werken de resterende knoppen niet meer).
LED-positioneringsschema:
Binaire klok met alarm en timer op Arduino Uno


Component-verbinding
De auteur verbindt alle leds in serie en met een weerstand. De weerstand is aan een van de klemmen van de leds gesoldeerd, het maakt niet uit welke. LED's worden aangesloten via schuifregisters, deze chip heeft 16 contacten.Met dit aantal pinnen kun je een groot aantal pinnen gebruiken, met slechts 3 pinnen op de Arduino.

Schuifregister Pinout 74HC595:
Q0-Q7 zijn de bevindingen van het register waarop de LED's zullen worden aangesloten.
Vcc - er wordt een 5V-voedingspen op aangebracht.
GND - aarde verbonden met GND op Arduino.
OE - de pin is verantwoordelijk voor de omgekeerde activering van de pinnen, maar deze wordt niet gebruikt, hij is gewoon kortgesloten naar de aarde.
MR is een omgekeerde registerverwijdering, het hoeft niet te worden bestuurd, daarom wordt het aangesloten op een 5V-voeding.
ST_CP - pin is verantwoordelijk voor het bijwerken van de status van het register. Bij het opnemen van de status is het noodzakelijk om LOW hierop toe te passen, na opname - HIGH, om de status van de uitgangen bij te werken. Het moet worden aangesloten op een pin op de Arduino. U kunt deze pin in drie registers parallel aansluiten.
SH_CP - pin, verantwoordelijk voor de verschuiving met 1 bit van het register. Het moet worden aangesloten op een pin op de Arduino. Ze zijn ook parallel op microschakelingen aangesloten.
DS - data wordt naar deze pin gestuurd, deze wordt aangesloten op de pin op de Arduino.
Q7 '- deze pin wordt gebruikt voor cascadeverbinding met andere registers 74HC595.

Aansluitschema:


De piëzo-zoemer wordt in serie met de weerstand aangesloten op de derde Arduino-pin. Voordat de tweeter in het circuit werd opgenomen, bekeek de auteur welke pinnen PWM ondersteunen, omdat dit voor haar verplicht is. Op de Arduino Uno ondersteunt PWM 3, 5, 6, 9, 10 en 11 pinnen.


De knoppen zijn verbonden met behulp van weerstanden die in de Arduino zijn ingebouwd, waarbij de ene kant van de knoppen op de grond is aangesloten en de andere op de Arduino-pinnen.


Het uiteindelijke ontwerp ziet er dus uit:


Bouw op Breadboard
Na het verkrijgen van aanvullende details, begon de auteur het project op een breadboard te monteren volgens de schema's. Uiterlijk was te verwachten, omdat de Breadboard de vrijheid bij het plaatsen van componenten beperkt en de uitstekende draden geen esthetisch plezier creëerden. Maar de breadboard is immers bedoeld voor breadboard-modellen, maar niet voor afgewerkte apparaten.


Programmacode.
Omdat de programmeur verstand had van programmeren, besloot hij zelf code te schrijven, zonder de ontwikkelingen van anderen te gebruiken. De eerste stap was het schrijven van een subroutine, deze is verantwoordelijk voor het knipperen van alle diodes en het geven van het piëzosignaal wanneer ingeschakeld. Deze functie helpt de integriteit van het circuit te verifiëren, vergelijkbaar met die op veel apparaten.

De schets kwam vrij groot uit, dan kun je de belangrijkste kenmerken ervan beschouwen.

LED-werk.
Omdat de LED's toegankelijk zijn via het schuifregister, was het allereerst nodig om meer routines voor de LED's te implementeren. Voor een eenvoudigere bediening met diodes zijn er een aantal extra functies geïmplementeerd. Verschillende effecten van animatie van diodes zijn geïmplementeerd. Als de klok niet is ingesteld, beginnen de diodes die verantwoordelijk zijn voor de uren en minuten te knipperen (zoals een normale klok knippert als deze niet is ingesteld). De LED's die verantwoordelijk zijn voor seconden hebben ook hun eigen animatie, de diode kan links en rechts lopen in de alarmmodus of in de klokinstellingsmodus.

Hoofdlus.
Het programma is geconfigureerd om als volgt te werken: de klok geeft informatie weer afhankelijk van de huidige status en verandert de status afhankelijk van het gebruik van knoppen en gebeurtenissen. Het ziet er allemaal uit als een aanzienlijk aantal geneste omstandigheden. De status van de diodes wordt elke keer bijgewerkt nadat de status van timers en knoppen is gecontroleerd met een oproep aan hun handler.

Ook heeft de auteur geweldig werk verricht voor de juiste werking van de invoerknoppen en timers. De broncode van de schets is te downloaden onder het artikel.


Start lay-out
Na het inschakelen van het project werkte het apparaat op het eerste gezicht correct en stabiel. Maar de auteur vond een fout, de klok stond een seconde per uur achter, lange tijd zou het een grote fout zijn.


Na dit probleem te hebben bestudeerd, bleek dat de originele Arduino Uno een keramische resonator gebruikt en deze mist nauwkeurigheid voor het meten van tijd in lange perioden. De meest rationele oplossing was het kopen van een real-time klok, en door deze module zal de tijd op de klok niet afdwalen als hij uit staat. De auteur kocht de Grove RTC-module van Seeed Studio. Het is een afgewerkt bord met een klokchip. De auteur verbond de pinnen van de SDA- en SCL-module met de Arduino op de pinnen van A4 en A5, GND naar aarde. Omdat de 5V-voeding wordt ingenomen door het klokbord, kon de module nergens worden aangesloten. De auteur besloot om de module van stroom te voorzien via een van de digitale pinnen, die constant van stroom wordt voorzien.Ook moest de auteur de broncode wijzigen en een bibliotheek met realtime klokken toevoegen.


Bekijk montage
Na lang aan de code te hebben gewerkt, is het tijd om het apparaat een compleet uiterlijk te geven en het van de breadboard naar de printplaat over te brengen. Allereerst was het nodig om de bedrading voor het bord te maken. Hiervoor werd fritsen gebruikt, omdat de auteur al een idee had van het uiterlijk van het horloge en hij een apparaatdiagram bouwde. De auteur traceerde ook handmatig het bord, het kostte veel tijd.
Project voor de productie van printplaten:


PCB-productie werd besteld in China. Seeed Studio heeft een Fusion printplaat service. Via Fritzing werd het bestand geëxporteerd naar het Extended Gerber-formaat, waar veel bordfabrikanten mee werken. Twee weken later ontving de auteur de langverwachte vergoeding per post.


Het bleef alleen om al een beetje stoffige delen op het bord te solderen. Het eindresultaat na het solderen zag er veel beter uit dan de lay-out op de Breadboard.


De auteur van het project heeft lang hard gewerkt en gekregen wat hij wilde: een unieke binaire klok met een timer en een wekker. Door het batterijvakje is het horloge overal te plaatsen. Arduino voldeed aan de verwachtingen en voldeed volledig aan de taak.

binclock-master.zip [23.53 Kb] (downloads: 175)
10
10
10

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten

We raden je aan om te lezen:

Geef het voor de smartphone ...