


Witam Kolegów Elektrodowiczów.
Jakiś czas temu, zainspirowany konstrukcją zegarów na diodach WS2812, postanowiłem spróbować zrobić coś takiego samemu. Konstrukcja powstała dla "cieszenia oczu" i własnej satysfakcji z takiego zegara. Sam projekt powstawał może ze 3 wieczory + poprawki ("wyjątki"), o których mowa później. Sama konstrukcja elektroniczna jest prosta, nie ma potrzeby rysowania schematu. Całość napędza klon Arduino nano, moduł zegara to DS1307 podpięty pod I2C. Diody to metrowa taśma WS2812B (60LED/m) z kondensatorem 470uF (w sumie chyba niepotrzebny, ale przylutowałem i został). Do tego czujka PIR HC-SR501, z której sygnał (stan wysoki) kierowany jest na wejście Arduino (równocześnie podpięte do masy przez rezystor 10k, aby przy stanie niskim nie działało jak antena i nie łapało zakłóceń).
Co do zasady działania całego zegara. Zanim zabrałem się do pracy, miałem ściągnięte jakieś gotowe przykłady, ale sama idea wydawała się na tyle ciekawa, że postanowiłem napisać kod samemu. Pokrótce: diody są numerowane w zakresie 0 (u mnie godzina 12) do 59. Następnie odczytuje aktualny czas, przelicza go na trzy zmienne: godziny (w zakresie 0-12), minuty (0-60) i sekundy (0-60). Program ustala, w jaki sposób ma następować wyświetlanie. Można to rozwiązać na dwa sposoby:
-(łatwy) "na sztywno" wyświetlać godzinę poprzez zapalenie odpowiednich diod dla danej godziny, przez co "wskazówka" nie porusza się (60:12 = 5, czyli np. dla godziny trzeciej wskazówka "pokazuje" 15-tą z kolei diodę, o numerze w kodzie 14.)
-(trudniejszy) "ożywiając" wskazówkę godzinową tak, by przesuwała się ona, wraz z postępem danej godziny, podobnie jak ma to miejsce w prawdziwych zegarach.
W moim przypadku zrealizowałem drugi wariant, całość jest w sumie dość prosta. Największy problem to "zakodowanie wyjątków", jak ja to nazwałem, czyli np. godziny 00.00 - powinny się wyświetlać nie tylko diody o numerach 0-3, ale również te "z drugiego końca", czyli 59 itp. Takich przypadków jest trochę, co zostało ujęte w programie. Bardzo ważna jest kolejność opisywania instrukcji zapalania LED-ów, ponieważ jedna komenda może nadpisać drugą, co czasami jest pożądane. Np. wskazówka godzinowa ma czerwoną barwę i "grubość" 5 led, minutowa i sekundowa odpowiednio 3 i 1. Są one uwzględnione w kodzie również w tej kolejności. Dzięki temu nawet po nałożeniu się wszystkich "wskazówek" (00:00), są one widoczne.
Zegar po zmontowaniu cieszył oczy, jednak trochę żal było mi tego, że przez cały czas świeci się z maksymalną jasnością, nawet gdy nikogo nie ma w domu. Jako że miałem w zapasie kilka czujek ruchu, wykorzystałem jedną z nich. Przy uruchomieniu zegar wyświetla krótką "animację" (czujka musi się ustabilizować, bo zaraz po włączeniu daje stan wysoki), a następnie sprawdza, czy zostało wywołane świecenie z pełną jasnością. Jeżeli nie, to rozpoczyna pracę przy niskiej intensywności świecenia. Jeżeli czujka wykryje ruch, to zegar przechodzi w tryb maksymalnej jasności i "zapamiętuje", by po upływie godziny się przyciemnić. Jeżeli w czasie pełnego świecenia czujka znowu kogoś wykryje, nadpisuje czas włączenia trybu oszczędnego aktualnym. Dla własnej satysfakcji, zegar wyświetla, kiedy nastąpi przyciemnienie - jedna z diod świeci na biało i wskazuje miejsce, do którego musi dojść minutnik. Wykrycie kogoś sygnalizowane jest szybkim miganiem diody na płytce Arduino.
Prośba do moderatorów: zegar jest już ukończony pod względem elektronicznym i programowym, nie planuję wprowadzać żadnych zmian, to też proszę o nieprzenoszenie go do działu "niedokończone". Brakuje mi jedynie obudowy i "tła" pod taśmę, co może jeszcze trochę potrwać. Zastanawiam się nad lustrem. Myślałem nad płytą winylową, niestety są one minimalnie zbyt małe. Gdyby ktoś miał jeszcze jakieś pomysły, chętnie wysłucham.

Dodaję również kod, jest sporo komentarzy (pisałem po angielsku), także całość powinna nie sprawiać problemów przy analizie.
Koszt: taśma LED z przesyłką ok 80 zł, czujka PIR jakieś 5 złotych + przesyłka. Klon Arduino to ok. 10 PLN z darmową wysyłką zza granicy (nie opłaca się w Polsce nawet Atmegi kupić

Zapraszam do komentowania.
Przepraszam za jakość VIDEO - filmowane komórką. Pod koniec filmu widać, jak biała dioda "przesuwa się" na aktualną minutę w chwili, gdy wykonałem ruch.
Cool? Ranking DIY