» Elektronika » Arduino »Zegar binarny z budzikiem i timerem na Arduino Uno

Zegar binarny z budzikiem i timerem na Arduino Uno


Po otrzymaniu kilku desek Arduino, a także różne komponenty radiowe w celu zapoznania się z mikrokontrolerami, autor postanowił zrobić coś interesującego i jednocześnie użytecznego. Dysponując dużą liczbą diod LED, wpadł na pomysł stworzenia zegara binarnego.

Po stronie elektroniki zegar binarny nie jest szczególnie skomplikowany, ale autor skomplikował to zadanie i postanowił nie zapisywać przycisków i diod LED. Początkowo projekt polegał na zastosowaniu 22 diod LED, 6 przycisków i jednego głośnika wysokotonowego. Pomysł polegał również na zamontowaniu zegarka na Arduino Mega ze względu na większą liczbę pinów, ale rejestry zmiany 74HC595 okazały się zbawieniem.

Materiały:
- Arduino Uno
- 2 pełnowymiarowe deski do krojenia chleba
- Diody czerwone 7 szt
- Zielone diody LED 7 szt
- Niebieskie diody LED 6 szt
- 2 żółte i białe diody LED
- Rezystory 220 omów 25 szt
- Brzęczyk piezoelektryczny 1 szt
- 6 przycisków dotykowych
- Rejestry wyjściowe zmiany 74HC595 w pakiecie DIP-16 3 szt
- Przewody łączące 90 szt
- Moduł zegara czasu rzeczywistego oparty na układzie DS1307 RTC

Jak wszystko będzie działać
Istnieje około 10 rodzajów zegarów binarnych. Niektóre pokazują czas w formacie binarnym dziesiętnym (BCD), inne jako liczby binarne. Ponieważ autorowi nie podoba się szczególnie zegarek BCD, postanowił stworzyć swój czysty plik binarny. Niektórym trudniej jest odczytać, ale różnica nie jest duża, ponieważ tłumaczenie liczb z binarnych na dziesiętne jest łatwe. Warunkiem stworzenia zegarka było także wskazanie sekund na zegarku.

Ponadto zegarek ma 6 przycisków:
Set - odpowiada za tryb ustawiania zegara / alarmu i zapisywanie parametru w trybie ustawiania.
Tryb - odpowiedzialny za przełączanie między trybem zegara, budzika i trybem timera.
W górę - w ustawieniu zegara / alarmu / timera zwiększa parametr o jeden. W budziku i zegarze odpowiada za aktywację i dezaktywację wybranego trybu. Kiedy sygnał zostanie wyzwolony, wyłączy sygnał alarmu / timera.
W dół - w ustawieniu zegara / alarmu / timera spowoduje zmniejszenie parametru o jeden. Zegar zatrzyma go bez resetowania odliczania. Kiedy alarm się włączy, przekaże sygnał przez 5 minut.
24/12 - zmień format godziny.
Dim - odpowiedzialny za włączanie i wyłączanie diod LED (gdy diody są wyłączone, pozostałe przyciski przestają działać).
Schemat pozycjonowania LED:
Zegar binarny z budzikiem i timerem na Arduino Uno


Połączenie komponentowe
Autor połączy wszystkie diody LED szeregowo i rezystorem. Rezystor jest przylutowany do jednego z zacisków diod LED, nie ma znaczenia który z nich. Diody LED zostaną połączone za pomocą rejestrów przesuwnych, ten układ ma 16 styków.Ta liczba pinów pozwala na użycie dużej liczby pinów, biorąc tylko 3 szpilki na Arduino.

Shift Register Pinout 74HC595:
Q0-Q7 to wyniki rejestru, do którego zostaną podłączone diody LED.
Vcc - zostanie do niego dołączony pin zasilania 5V.
GND - masa podłączona do GND na Arduino.
OE - pin odpowiada za odwróconą aktywację pinów, ale nie będzie używany, jest po prostu zwarty do masy.
MR jest kasowanie rejestru odwróconego, nie musi być kontrolowany, dlatego zostanie podłączony do źródła zasilania 5 V.
ST_CP - pin odpowiada za aktualizację statusu rejestru. Podczas rejestrowania stanu należy zastosować NISKI, po nagraniu - WYSOKI, aby zaktualizować stan wyjść. Musi być podłączony do pinu Arduino. Możesz podłączyć ten pin w trzech rejestrach równolegle.
SH_CP - pin, odpowiedzialny za przesunięcie o 1 bit rejestru. Musi być podłączony do pinu Arduino. Są one połączone równolegle na mikroukładach.
DS - dane są wysyłane do tego pinu, są one podłączone do pinu Arduino.
Q7 '- ten pin służy do kaskadowego połączenia z innymi rejestrami 74HC595.

Schemat połączeń:


Brzęczyk piezoelektryczny zostanie podłączony do trzeciego styku Arduino szeregowo z rezystorem. Przed włączeniem głośnika wysokotonowego do obwodu autorka zbadała, które piny obsługują PWM, ponieważ jest to dla niej obowiązkowe. W Arduino Uno PWM obsługuje 3, 5, 6, 9, 10 i 11 pinów.


Przyciski są połączone za pomocą rezystorów wbudowanych w Arduino, z jedną stroną przycisków podłączoną do ziemi, a drugą do pinów Arduino.


Ostateczny wygląd wygląda następująco:


Zbuduj na Breadboard
Po uzyskaniu dodatkowych szczegółów autor zaczął montować projekt na płycie chlebowej zgodnie ze schematami. Wygląda na to, że można się było spodziewać, ponieważ Breadboard ogranicza swobodę w umieszczaniu komponentów, a wystające druty nie stwarzały przyjemności estetycznej. Ale płyta chodnikowa jest przecież przeznaczona do modeli makiet, ale nie do gotowych urządzeń.


Kod programu
Znając się na programowaniu, autor postanowił napisać własny kod, nie wykorzystując rozwoju innych osób. Pierwszym krokiem było napisanie podprogramu, który odpowiada za miganie wszystkich diod i dawanie sygnału piezo po włączeniu. Ta funkcja pomaga zweryfikować integralność obwodu, podobnie jak w wielu urządzeniach.

Szkic wyszedł dość duży, możesz więc rozważyć jego główne cechy.

Praca LED.
Ponieważ diody LED są dostępne poprzez rejestr przesuwny, po pierwsze konieczne było wdrożenie większej liczby procedur dla diod LED. Aby ułatwić obsługę diod, zaimplementowano szereg dodatkowych funkcji. Realizowane są różne efekty animacji diod. Gdy zegar nie jest ustawiony, diody odpowiedzialne za godziny i minuty zaczną migać (jak normalny zegar miga, gdy nie jest ustawiony). Diody LED odpowiedzialne za sekundy mają również własną animację, dioda może działać w lewo i prawo w trybie alarmowym lub w trybie ustawiania zegara.

Główna pętla.
Program jest skonfigurowany do pracy w następujący sposób: zegar wyświetla informacje w zależności od bieżącego stanu i zmienia swój stan w zależności od użycia przycisków i zdarzeń. Wszystko wygląda na znaczną liczbę zagnieżdżonych warunków. Stan diod jest aktualizowany za każdym razem po sprawdzeniu stanu timerów i przycisków za pomocą połączenia z ich obsługą.

Ponadto autor wykonał świetną robotę dla prawidłowego działania przycisków wejściowych i timerów. Kod źródłowy szkicu można pobrać pod artykułem.


Uruchom układ
Po włączeniu projektu na pierwszy rzut oka urządzenie działało poprawnie i stabilnie. Ale autor znalazł wadę, zegar był opóźniony o jedną sekundę na godzinę, przez długi czas byłby to duży błąd.


Po przestudiowaniu tego problemu okazało się, że oryginalny Arduino Uno wykorzystuje rezonator ceramiczny i brakuje mu dokładności do pomiaru czasu w długich okresach. Najbardziej racjonalnym rozwiązaniem było zakupienie zegara czasu rzeczywistego, a dzięki temu modułowi czas na zegarze nie pójdzie na manowce po wyłączeniu. Autor zakupił moduł Grove RTC od Seeed Studio. Jest to gotowa deska z chipem zegarowym. Autor podłączył piny modułu SDA i SCL do Arduino na pinach A4 i A5, GND do masy. Ponieważ napięcie 5 V jest zajęte przez płytkę zegara, nie było miejsca na podłączenie modułu. Autor postanowił zasilić moduł z jednego z pinów cyfrowych, który będzie stale zasilany.Ponadto autor musiał zmodyfikować kod źródłowy i dodać bibliotekę zegarów czasu rzeczywistego.


Obejrzyj montaż
Po zakończeniu długiej pracy nad kodem nadszedł czas, aby nadać urządzeniu pełny wygląd i przenieść go z płyty kontrolnej na płytkę drukowaną. Przede wszystkim konieczne było wykonanie okablowania do płytki. Wykorzystano do tego Fritzinga, ponieważ autor miał już pomysł na wygląd zegarka i zbudował schemat urządzenia. Autor również ręcznie prześledził tablicę, zajęło to dużo czasu.
Projekt produkcji płytek drukowanych:


Produkcja PCB została zamówiona w Chinach. Seeed Studio oferuje usługę płytek drukowanych Fusion. Przez Fritzing plik został wyeksportowany do formatu Extended Gerber, wielu producentów płyt z nim współpracuje. Dwa tygodnie później autor otrzymał długo oczekiwaną opłatę pocztą.


Pozostało tylko wlutować już trochę zakurzonych części na płytkę. Gotowy efekt po lutowaniu wyglądał znacznie lepiej niż układ na płycie Breadboard.


Autor projektu długo pracował ciężko i dostał to, czego chciał - unikalny zegar binarny z zegarem i budzikiem. Za pomocą komory baterii zegarek można umieścić w dowolnym miejscu. Arduino spełniło oczekiwania i całkowicie poradziło sobie z zadaniem.

binclock-master.zip [23.53 Kb] (pliki do pobrania: 175)
10
10
10

Dodaj komentarz

    • uśmiechnij sięuśmiecha sięxaxaoknie wiemyahoonea
      szefiezadrapaniegłupiectaktak-takagresywnysekret
      przepraszamtańczyćdance2dance3przebaczeniepomocnapoje
      przestańprzyjacieledobrzegoodgoodgwizdaćomdlećjęzyk
      palićklaskanierakdeklarowaćdrwiącydon-t_mentionpobierz
      ciepłożałujęśmiech 1mdaspotkaniemoskingnegatywne
      niepopcornukaraćczytaćprzestraszyćstraszyszukaj
      drwinadziękujętoto_clueumnikostryzgadzam się
      źlepszczołablack_eyeblum3rumienić sięchwalić sięnuda
      ocenzurowaneuprzejmośćsekret2grozićzwycięstwoyusun_bespectacled
      shokrespektlolprevedwitamykrutoyya_za
      ya_dobryipomocnikne_huliganne_othodifludzakazzamknij

Radzimy przeczytać:

Podaj go do smartfona ...