Spisu treści:

Zegar emerytalny/odliczanie/odliczanie: 4 kroki (ze zdjęciami)
Zegar emerytalny/odliczanie/odliczanie: 4 kroki (ze zdjęciami)

Wideo: Zegar emerytalny/odliczanie/odliczanie: 4 kroki (ze zdjęciami)

Wideo: Zegar emerytalny/odliczanie/odliczanie: 4 kroki (ze zdjęciami)
Wideo: Thriller / Kryminał po polsku pełny /сzęść 1 2024, Listopad
Anonim
Zegar emerytalny/odliczanie/odliczanie czasu
Zegar emerytalny/odliczanie/odliczanie czasu

Miałem w szufladzie kilka takich wyświetlaczy LED 8x8 i zastanawiałem się, co z nimi zrobić. Zainspirowany innymi instrukcjami, wpadłem na pomysł, aby zbudować wyświetlacz odliczający/w górę, aby odliczać do przyszłej daty/godziny, a jeśli minął czas docelowy, odliczaj od niego. Zrobiłem to teraz mój zegar emerytalny siedzący na półce.

Pomysł na umieszczenie go w butelce był raczej przypadkowy przy myśleniu o osłonce. Inni wkładają statki do butelki, dlaczego nie zegar?

Chciałem również, aby zegar przestrzegał czasu letniego i oczywiście pamiętał ustawienia i godzinę po odłączeniu. Zasilam zegar przez USB, co sprawia, że można go przeprogramować, jeśli chcesz zrobić coś innego lub po prostu dodać funkcje do kodu. Kod jest dość prosty i przydałby się również wiele optymalizacji. Muszę przyznać, że nie dbałem o zużycie pamięci RAM. Jeśli będę miał czas i motywację, wrócę do tego.

Kieszonkowe dzieci

1. Arduino Nano

2. RTC (użyłem wspólnego DS3231, który również ma EEPROM)

3. Moduł matrycy 12x 8x8 punktów. (Miałem poczwórne moduły, które są łatwiejsze do ustawienia)

4. LDR, aby dostosować jasność wyświetlacza

5. Rezystor 10 kOhm

6. Kondensator 5x 100 uF tłumiący skoki z wyświetlacza

7. Aby zwiększyć kontrast modułów 8x8, użyłem przyciemnianej „folii okiennej”. Wyświetlacz pokazuje diody LED jako białe kropki, jeśli nie są podświetlone. Folia okienna nadaje jej błyszczący czarny wygląd.

Krok 1: Podłącz komponenty

Połącz komponenty
Połącz komponenty
Połącz komponenty
Połącz komponenty

Do montażu wyświetlacza użyłem trzech z czterech wyświetlaczy. Aby pokazać datę z ukośnikami i czas z dwukropkami potrzebujemy miejsca na 8 znaków. Używając typowej czcionki 5x7, potrzebowalibyśmy sześciu bloków 8x8 na wiersz. Przeciąłem jeden z czterech bloków na pół i ułożyłem je jako dwa rzędy po sześć bloków, jak pokazano na schemacie płytki stykowej.

Krok 2: Części drukowane w 3D

Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D
Części drukowane w 3D

Aby utrzymać dwa rzędy wyświetlacza i umieścić je w butelce, wydrukowałem okrągłe pierścienie dystansowe na ramę wyświetlacza. Dodałem pliki, których użyłem poniżej. Aby móc je wydrukować bez wsparcia, są one dzielone na części. Zrzut ekranu przedstawia dwa pierścienie przyklejone do ramki wyświetlacza. Na osłonie szyjki butelki znajdują się trzy przyciski do przełączania między trybami wyświetlania oraz ustawiania aktualnego czasu i czasu docelowego. Zaślepka na szyjkę butelki, którą wydrukowałem w TPU, pozwala wsunąć kabel USB do pokrowca bez odcinania złączy i związać go kilkoma zwojami drutu. Zapomniałem wspomnieć, że użyłem 1,5 l butelki wina, którą wyciąłem na samym dnie. Wszystkie części, które mają zostać wydrukowane, pasują do stołu drukarki o wymiarach 20x20 cm (8x8 cali).

Krok 3: Kodeks

Kod Arduino wykorzystuje kilka powszechnie używanych bibliotek.

MD_MAX72xx

SPI

Drut

Biblioteka RTC

Strefa czasowa

TimeLib

W pliku INO jest kilka wierszy, które mogą wymagać zmiany:

Linia 38: #define HARDWARE_TYPE MD_MAX72XX::FC16_HW <-- zależy od modułu 8x8 i jego orientacji

zamiast FC16_HW może jeden z:

- MD_MAX72XX::PAROLA_HW

- MD_MAX72XX::GENERIC_HW

- MD_MAX72XX::ICSTATION_HW

- MD_MAX72XX::FC16_HW

Kod korzysta z ustawień czasu środkowoamerykańskiego i wymaga dostosowania do innych stref czasowych:

Linia 53/54:

TimeChangeRule myDST = {"CDT", sekunda, niedziela, mar, 2, -300}; // Czas letni UTC-5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Czas standardowy UTC -6

To jest łatwe do dostosowania. Nazwa CST/CDT ma tylko mieć odniesienie. Nie wyświetlam trzyliterowego skrótu, więc nie ma to znaczenia. Kolejne parametry odnoszą się do dnia w miesiącu, w którym następuje zmiana. Regulacja odbywa się w minutach, więc lokalizacje z korektami +/- 30 minut również będą działać.

RTC działa wewnętrznie w czasie UTC, dzięki czemu biblioteka stref czasowych działa zgodnie z przeznaczeniem. Możesz się zastanawiać, dlaczego kod odwołuje się do starszego układu DS1307 w przeciwieństwie do układu zegara, którego użyłem, ale to nie ma znaczenia. Biblioteka działa dobrze z każdym chipem. DS1307 ma tendencję do dryfowania bardziej niż DS3132. DS3132 jest preferowanym zegarem. Dla tych, którzy chcą dodać czas internetowy, ESP8266 wykona to zadanie całkiem łatwo. Może to spowodować, że RTC stanie się przestarzały. Jeśli wprowadzasz te zmiany, użyj EEPROM Arduino do przechowywania czasu docelowego, użyłem do tego EEPROM RTC.

Krok 4: Obsługa i ustawienia

Obsługa i ustawienia
Obsługa i ustawienia
Obsługa i ustawienia
Obsługa i ustawienia
Obsługa i ustawienia
Obsługa i ustawienia

Są trzy przyciski

1. Menu / ustawienia

2. W górę

3. W dół

Przycisk menu umożliwia przełączanie między trzema typami wyświetlania: aktualny czas, czas docelowy, czas delta. Czas Delta pokazuje liczbę dni, GG/MM/SS między czasem bieżącym a czasem docelowym. Pokaże t- i odlicza w dół, jeśli cel jest w przyszłości lub t+ i odlicza w górę, jeśli cel jest w przeszłości.

Aby dostosować aktualny lub docelowy czas, wybierz bieżący lub docelowy czas wyświetlania. Aby zmienić czas, przytrzymaj przycisk menu przez 2 sekundy i zwolnij, co spowoduje przejście do trybu ustawień. Sąsiednie „/” lub „:” zamieni się w „”, aby wskazać, którą cyfrę regulujesz. Użyj przycisków góra/dół, aby ustawić poszczególne hh/mm/ss i mm/dd/rr. Nie dodałem ustawienia przełączania między mm/dd/rr i dd/mm/rr, wymaga to zmiany w kodzie, a może ktoś chce dodać tę funkcję.

Zauważysz, że jeśli przesuniesz minuty powyżej 59 lub poniżej 00, godzina również się dostosuje. to samo dotyczy sekund, godzin i dni zmieniając kolejną wyższą wartość, jeśli przekroczy wartość poniżej 0 lub powyżej maksimum dla tej cyfry. Zrobiłem to, aby uniknąć programowania różnych limitów poszczególnych miesięcy i jeśli luty potrzebuje 29 dni w roku przestępnym. Dopasowanie czasu odbywa się w rzeczywistości w epoce, sekundach od 1 stycznia 1970 roku.

Dodałem prosty filmik pokazujący liczenie. Chciałem zrobić z nich wyświetlacz z obracającym się kołem. Jeśli chcesz dostosować czas trwania zmiany, wiersz 69 w INO daje kilka opcji przyspieszenia lub spowolnienia zmiany. 120 ms sprawiłoby, że cyfry przewijałyby się wystarczająco wolno, ponieważ byłoby to stale działające koło.

Mam nadzieję, że podobało ci się to pouczenie.

Patrick Geschwindner

Zalecana: