Jakiś czas temu na blogu pojawił się przydatny w prostych automatyzacjach oparty na Arduino projekt przekaźnika czasowego. Opisałem tam trochę czym jest RTC itd. Jeśli jeszcze nie znacie takich elementów, zapraszam do lektury 🙂
Dziś opiszę bardziej rozbudowane rozwinięcia zegara oraz jeden szczególny. Ten ostatni, może mniej przydatny w życiu, za to fajnie wyglądający na biurku i zawierający elementy
związane z RTC i sterowaniem LED. Można to wykorzystać w realizacjach, np. dla akwarium z płynnym sterowaniem natężenia światła, a nie włącz/wyłącz.
Po wrzuceniu projektu prostego przekaźnika czasowego spłynęło do mnie sporo pytań – jak dodać dodatkowe wyjścia, jak dodać kolejne zakresy czasowe w ciągu dnia dla jednego wyjścia oraz jak sterować płynnie LEDami? Część z tych problemów udało się rozwiązać drobnymi modyfikacjami w kodzie przekaźnika, co zostało opisane w repozytorium. Niestety, niektóre pomysły, aby je zaaplikować do tego projektu, tworzyły tam spory bałagan. Kod został stworzony bez przemyślenia dla aż takiej rozbudowy. Stąd powstało parę pomniejszych projektów.
Jeden z nich to złożony sheduler, w ktorym łatwiej rozpisać więcej scenariuszy czasowych dla większej ilości wyjść. Np. pin1 włącza się od 8:00 do 9:00 od poniedziałku do piątku, a pin2 od 10:00 do 11:00 w weekend. Miałem jeszcze parę fajnych pomysłów, ale zabrakło mi kilku elementów C++, z którymi obecnie jestem bardzo związany i dla funkcjonalności shedulera w szklarni (link), mogę już dynamicznie włączać coś na dany okres, ale o tym pewnie napiszę za jakiś czas. Ten projekt na Arduino zostawiłem, póki co, taki jaki jest d:
Zauważyłem, że projekt zegara trafił do osób budujących terraria dla zwierząt oraz akwaria dla rybek. Tej społeczności najbardziej zależało na odwzorowaniu prawdziwego środowiska przy powolnym zwiększaniu i zmniejszaniu natężenie światła z LED. Dla nich powstały prosty projekt z liniową zmianą wypełnienia PWM. O danej godzinie, przez dany okres. Jeśli jeszcze nie wiecie, czym jest PWM, zapraszam do notek.
Z tego wszystkiego w mojej głowie urodził się pomysł na urządzenie, które jeszcze realniej odda ruch słońca na niebie – specyficzny zegar słoneczny. Nie pokazuje on bowiem godziny, a zależnie od pory dnia ustawia ramię zamontowane na serwie, z LED na drugim końcu, która ma odzwierciedlać wędrówkę słońca po nieboskłonie. LED jest RGB i jej barwa zmienia się, imitując promienie słońca docierające do nas na różnym poziomie ponad horyzontem. Dodatkowo na spodzie zamontowany jest pasek LED, który także zmienia kolor, tu grając niebo. Ono też przecież zmienia barwę w ciągu dnia. Co ważne, godziny wschodu i zachodu słońca w ciągu roku się zmieniają. Tutaj także jest to zachowane, codziennie jest wyliczany wschód i zachód słońca dla podanej lokalizacji.
W takich projektach warto zwrócić uwagę na jeden ważny element związany ze światłem. Nasze oko nie działa liniowo. Dokładniej opisałem to przy realizacji LED testera, który był budowany właśnie między innymi pod ten projekt; możecie o nim poczytać w tym artykule. Tak jak w tamtym przypadku znajdziecie tutaj trochę matematyki, ale nie ma się co bać 😉 Jest to prosta funkcja oparta o sinus, gdzie wartością wejściową jest czas, a wyjściem odpowiednie kolory – czerwony, niebieski i zielony. Dla każdego koloru funkcja jest nieco inaczej sparametryzowana, ponieważ wartości, między jakimi się zmieniają, są różne, np. w kolorze słońca niebieski będzie zmieniał się w niewielkim zakresie, za to czerwony i zielony w dużym.
Cały opis zegara przedstawiłem w filmiku powyżej. Mam nadzieję, że choć jakiś kawałek się Wam przyda 🙂 Jeśli jesteście chętni na rozwój takich projektów, jakie tutaj opisałem, wpadajcie na naszego discorda, na pewno coś uda się zorganizować 🙂