Spisu treści:

Tajemniczy zegar ścienny: 27 kroków (ze zdjęciami)
Tajemniczy zegar ścienny: 27 kroków (ze zdjęciami)

Wideo: Tajemniczy zegar ścienny: 27 kroków (ze zdjęciami)

Wideo: Tajemniczy zegar ścienny: 27 kroków (ze zdjęciami)
Wideo: Doda i jej miny podczas przemówienia Górniak (oryg. cezarywisniewski_) 2024, Lipiec
Anonim
Tajemniczy zegar ścienny
Tajemniczy zegar ścienny

Upływ czasu to coś, czego nie możemy kontrolować. Dzieje się to w tym samym tempie, gdy śpimy, nie śpimy, jesteśmy znudzeni lub zaangażowani. Przy bieżących wydarzeniach ważne jest, aby pamiętać, że czas minie. Kiedy czekamy, aż czas minie, dlaczego nie zrobić czegoś, co sprawi, że upływ czasu będzie bardziej atrakcyjny do oglądania.

Ten zegar został zainspirowany zegarem Mengenlehreuhr znalezionym w Berlinie w Niemczech i można go czytać w ten sam sposób. Podobnie jak oryginał, wskazuje czas za pomocą podświetlonych, kolorowych pól.

Zawiera 96 diod LED, które oświetlają 52 „cyfrowe” regiony. W przeciwieństwie do oryginału, ma okrągły kształt, który zawiera drugi pierścień zamiast poziomego układu pasków. Zewnętrzne pasmo wskazuje sekundy w połączeniu ze środkową kropką, następne dwa pasma wskazują minuty, a ostatnie wewnętrzne pasma wskazują godziny.

Jeśli masz trochę złomu i dodatkowy czas, dlaczego nie wykorzystać tego czasu na zrobienie czegoś, co to pokaże!

Jest kilka zmian, które wprowadziłbym do tego projektu, gdybym miał zrobić go ponownie. Najpierw pomalowałbym ramkę i tablicę LED na biało zamiast na czarno. Odbiłoby to więcej światła przez dużą soczewkę z przodu. Poczekałbym też do końca z wstawieniem diod. Potrzebowałem wcześniej ukończyć tablicę, aby mogła mi pomóc w pisaniu kodu. Pomijając to, najpierw nauczmy się czytać!

Obraz
Obraz

Krok 1: Jak czytać zegar

Zegar jest odczytywany od wewnętrznych kręgów do zewnętrznych. Wewnętrzny krąg czterech pól oznacza po pięć pełnych godzin, obok drugiego kręgu również cztery pola, z których każde oznacza jedną pełną godzinę, wyświetlając wartość godziny w formacie 24-godzinnym. Trzeci krąg składa się z jedenastu pól, które oznaczają po pięć pełnych minut każde, następny krąg ma kolejne cztery pola, które oznaczają po jednej pełnej minucie każde. Wreszcie, zewnętrzny pierścień 29 pól oznacza sekundy parzyste, a lampka w środku miga, aby wskazać sekundy nieparzyste (gdy świeci) lub parzyste (gdy nie świeci).

Obraz
Obraz

Na przykład powyższy obraz ma 1 z pięciu cyfr godziny, 3 z jednej cyfry godziny, 8 z pięciu cyfr minut, 4 z jednej minuty i 23 z dwóch drugich cyfr i środkowa druga cyfra są podświetlone.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47

Obraz
Obraz

Czas pokazany powyżej to: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 15:17:11

Obraz
Obraz

Czas pokazany powyżej to: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33

Krok 2: Narzędzia i materiały

Narzędzia i materiały
Narzędzia i materiały
Narzędzia i materiały
Narzędzia i materiały
Narzędzia i materiały
Narzędzia i materiały

Materiały elektroniczne:

  • Arduino Nano
  • Zegar czasu rzeczywistego
  • Adresowalne diody LED
  • Wtyczka zasilająca
  • Przewód zasilający
  • Wtyczka zasilania USB
  • Rezystor zależny od światła i zbalansowany rezystor (jeśli chcesz, aby ściemniał w nocy)
  • Drut

Materiały do obróbki drewna:

  • 3/4 cala Sklejka
  • Cienka sklejka
  • Scrap Wood (użyłem 2x4, ale twarde drewno też by się sprawdziło)
  • Farba
  • Arkusz akrylowy 30 x 36 cali (znajduje się w lokalnym sklepie dla majsterkowiczów)
  • Odcień okna (spróbuj pozyskać lokalnie. Jeśli żaden nie jest dostępny, możesz znaleźć tutaj wystarczająco duży arkusz)
  • Płyn do nakładania cieni do szyb (użyłam wody zmieszanej z szamponem dla dzieci w butelce ze spryskiwaczem)
  • Windex
  • Papier rzeźniczy
  • Śruby
  • Spoiwo w sprayu
  • Klej
  • Klej w sztyfcie

Narzędzia:

  • Linijka
  • Nóż Xacto
  • Taśma
  • Taśma dwustronna
  • Kompas
  • Przyrząd do wycinania okręgów
  • Puzzle
  • Piła taśmowa
  • Szlifierka Wrzecionowa
  • Szlifierka do dłoni
  • Szlifierka tarczowa
  • Tabela routera
  • Szydło
  • Wiertła i wiertła/Wkrętarki
  • Zaciski
  • Lutownica
  • Lutować
  • Narzędzia do ściągania izolacji

Krok 3: Złóż szablony

Złóż szablony
Złóż szablony
Złóż szablony
Złóż szablony

W przypadku dużego szablonu wydrukuj go, korzystając z ustawień plakatu w programie Adobe Reader. Odetnij marginesy dla każdego papieru i sklej razem. Linie pionowe, poziome i ukośne pomogą w wyrównaniu szablonu. Na wszystkich stronach znajdują się małe numery, które pomagają utrzymać porządek, jeśli wypadną z porządku.

Wszystkie potrzebne szablony i pliki znajdują się w kroku 26.

Krok 4: Zgrubnie wycięte koła

Okrągłe kręgi
Okrągłe kręgi
Okrągłe kręgi
Okrągłe kręgi

Rozkładając dwa szablony na arkuszu sklejki 3/4 cala, narysuj kółka nieco większe niż to konieczne za pomocą cyrkla. Za pomocą wyrzynarki wytnij szorstki kształt.

Krok 5: Przytnij do rozmiaru

Cięte na wymiar
Cięte na wymiar
Cięte na wymiar
Cięte na wymiar

Używając przyrządu do wycinania okręgów na piły taśmowej, wytnij okręgi do ostatecznego rozmiaru.

Krok 6: Zastosuj szablon

Zastosuj szablon
Zastosuj szablon
Zastosuj szablon
Zastosuj szablon
Zastosuj szablon
Zastosuj szablon

Za pomocą kleju w sprayu nałóż każdy szablon na okrąg. Włóż gwóźdź w środek szablonu, aby wyśrodkować go na okręgu.

Krok 7: Wytnij szablon

Wytnij szablon
Wytnij szablon
Wytnij szablon
Wytnij szablon
Wytnij szablon
Wytnij szablon

Za pomocą wyrzynarki wytnij każde okienko szablonu. Jeśli masz dostęp do CNC, ten krok byłby znacznie łatwiejszy! Wywierciłem dziurę w każdym oknie, aby pomóc w tym procesie. Gdy zaczniesz ciąć, szablon może zacząć odpadać. Jeśli tak się stanie, możesz zabezpieczyć go na miejscu małymi kawałkami taśmy.

Krok 8: Szlifowanie

Szlifowanie
Szlifowanie
Szlifowanie
Szlifowanie
Szlifowanie
Szlifowanie

Za pomocą papieru ściernego nałożonego na patyk, szlifierki wrzecionowej i szlifierki ręcznej wyszlifuj i wygładzić zgrubne cięcie pozostawione przez wyrzynarkę.

Krok 9: Wiertła do diod LED

Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED
Uchwyty wiertarskie do diod LED

Zaznacz środek każdego otworu szydłem i wywierć otwory prześwitowe dla diod LED. Użyłem przewodnika, który pomógł utrzymać wiertło prostopadle do mojego przedmiotu obrabianego, i backerboard, aby zapobiec wydmuchiwaniu drewna z tyłu.

Krok 10: Połącz deski

Połącz deski
Połącz deski
Połącz deski
Połącz deski
Połącz deski
Połącz deski

Zamień przednią i tylną tablicę oraz ślad części ramy z tyłu tablicy LED. Przesuń ramę z powrotem na przód tablicy LED, wywierć otwory i skręć elementy razem.

Zobacz uwagi dotyczące obrazu, aby uzyskać więcej informacji.

Krok 11: Włóż diody LED

Wstaw diody LED
Wstaw diody LED
Wstaw diody LED
Wstaw diody LED

Wsuń diody LED z tyłu płytki LED. Otwory powinny być rozmieszczone na tyle, aby nie trzeba było przecinać żadnych przewodów, z wyjątkiem przechodzenia z jednego okręgu do drugiego.

Od tyłu diody LED zaczynają się na środku, a następnie biegną w kierunku przeciwnym do ruchu wskazówek zegara, a następnie do następnego pierścienia.

Krok 12: Dołącz segment 1

Dołącz segment 1
Dołącz segment 1
Dołącz segment 1
Dołącz segment 1
Dołącz segment 1
Dołącz segment 1

Wytnij 9 segmentów z szablonu „Segment 1” przymocowanego do sklejki 3/4 cala (znajduje się w kroku 26). Przymocuj do tablicy LED za pomocą kleju i zacisków. Jeśli jesteś niecierpliwy, możesz również użyć gwoździ, aby zacisnąć go na miejscu.

Po wyschnięciu przeszlifować krawędź szlifierką tarczową.

Krok 13: Maluj

Farba
Farba
Farba
Farba
Farba
Farba
Farba
Farba

Pomaluj w sprayu zarówno tablicę LED, jak i ramę. Gdybym robił to ponownie, wybrałbym białą farbę zamiast czarnej, ponieważ byłaby bardziej odbijająca przez soczewkę.

Krok 14: Segment 2

Segment 2
Segment 2
Segment 2
Segment 2
Segment 2
Segment 2

Wytnij 9 segmentów z szablonu „Segment 2” dołączonego z drewna o grubości 2 3/8 cala (znaleziono w kroku 26). Użyłem trochę złomu 2x4 z całego sklepu. Dopasuj segmenty na sucho i upewnij się, że są dobrze dopasowane za pomocą zacisku taśmowego. Jeśli wszystko się zgadza, przykryj zewnętrzną stronę taśmą malarską, aby klej się nie przywierał i pozostaw do wyschnięcia na co najmniej godzinę przed przejściem do następnego kroku.

Krok 15: Segment 3

Segment 3
Segment 3
Segment 3
Segment 3
Segment 3
Segment 3

Wytnij 9 segmentów z szablonu „Segment 3” z kawałka drewna o grubości 3/8 cala (znajdującego się w kroku 26). Przyklej je tak, aby szwy z Segmentu 2 znajdowały się na środku każdego Segmentu 3. To wzmocni pierścionek.

Krok 16: Wygładź pierścień i pomaluj

Gładki pierścień i farba
Gładki pierścień i farba
Gładki pierścień i farba
Gładki pierścień i farba

Z odciętego kawałka dużego pierścienia zrobiłem niestandardowy blok szlifierski. Przeszlifuj wewnętrzną i zewnętrzną stronę pierścienia i wypełnij wszelkie pęknięcia, które mogły pojawić się podczas procesu klejenia.

Po wygładzeniu nałóż kilka warstw czarnej farby i lakieru bezbarwnego.

Krok 17: Wytnij akryl

Wytnij akryl
Wytnij akryl
Wytnij akryl
Wytnij akryl
Wytnij akryl
Wytnij akryl
Wytnij akryl
Wytnij akryl

Wytnij akryl na kwadrat o wymiarach 30 x 30 cali i zaznacz środek. Przyklej akryl taśmą dwustronną. Używając płaskiego frezu do przycinania, usuń nadmiar akrylu

Krok 18: Zastosuj odcień okna

Zastosuj odcień okna
Zastosuj odcień okna
Zastosuj odcień okna
Zastosuj odcień okna
Zastosuj odcień okna
Zastosuj odcień okna

W środowisku wolnym od kurzu usuń folię ochronną z akrylu. Nałóż spray i usuń podkład z folii do okien. Nałóż folię do okien klejącą stroną do dołu. Za pomocą ściągaczki lub karty kredytowej wyciśnij cały płyn spod przyciemnianej szyby. Po usunięciu wszystkich bąbelków i zmarszczek, przytnij nadmiar przyciemnianej szyby ostrym nożem.

Krok 19: Podłącz rozbrajacz

Dołącz rozbrajacz
Dołącz rozbrajacz
Dołącz rozbrajacz
Dołącz rozbrajacz

Użyłem dużego kawałka papieru rzeźniczego jako rozbrajacza. Rozłóż papier na płaskiej powierzchni. Przykryj powierzchnię ramy klejem z kleju w sztyfcie. Zanim klej wyschnie, połóż przednią część zegara na papierze i zgrubnie odetnij nadmiar. Po wyschnięciu przyciąć ostrym nożem.

Krok 20: Zastosuj izolację

Zastosuj izolację
Zastosuj izolację

Użyłem taśmy elektrycznej, aby oddzielić linie zasilania i danych.

Krok 21: Montaż

Gromadzić się
Gromadzić się
Gromadzić się
Gromadzić się
Gromadzić się
Gromadzić się

Usuń drugą warstwę ochronną z akrylu. Umieść akryl wewnątrz pierścienia z przyciemnianą stroną do góry. Wsuń pozostałą część zegara do pierścienia. Użyj zacisku, aby zastosować lekki nacisk podczas wiercenia otworu w pierścieniu i w płycie LED. Powinno to być około 1 1/8 cala od tyłu. Uważaj, aby nie przewiercić diody LED. Wkręć śrubę z łbem kratownicowym w otwór. Powtórz dla łącznie ośmiu śrub na obwodzie zegara.

Krok 22: Dołącz punkty kotwiczenia

Dołącz punkty kotwiczenia
Dołącz punkty kotwiczenia

Przyklej punkty kotwiczenia z tyłu zegara, aby przymocować tylną okładkę. Mają one grubość 3/4 cala i długość około 2 cali.

Krok 23: Wywierć otwory zasilania i czujnika LDR

Moc wiertarki i otwory czujnika LDR
Moc wiertarki i otwory czujnika LDR

W dolnej części zegara wywierć otwór na wtyczkę zasilania i otwór w górnej części na czujnik rezystora zależnego od światła (LDR).

Krok 24: Zainstaluj uchwyt na elektronikę

Zainstaluj uchwyt na elektronikę
Zainstaluj uchwyt na elektronikę
Zainstaluj uchwyt na elektronikę
Zainstaluj uchwyt na elektronikę

Zainstaluj wydrukowany w 3D uchwyt dla RTC i Arduino Nano. Podłącz całą elektronikę jak pokazano na schemacie.

Krok 25: Tylna okładka

Tylna pokrywa
Tylna pokrywa
Tylna pokrywa
Tylna pokrywa
Tylna pokrywa
Tylna pokrywa
Tylna pokrywa
Tylna pokrywa

Wytnij tylną okładkę z cienkiej sklejki, tylko mniejszej niż zewnętrzna część zegara. Wywierć otwory w punktach kotwiczenia. Znajdź środek pleców i odmierz 8 cali w dowolnym kierunku, aby wyciąć dziurki od klucza (standardowe 16 w środkach dla ćwieków w USA). Wywierciłem główny otwór nieco większy niż łeb śrub, których zamierzam użyć i spiłowałem otwór większy w jednym kierunku. Pomaluj na czarno i przymocuj pokrywę na swoim miejscu.

Krok 26: Kod i pliki

Ponownie, jestem dość nowy w korzystaniu z wielu używanych tutaj bibliotek Arduino, więc jestem pewien, że istnieją lepsze sposoby ich wykorzystania.

Napisałem kod, aby można go było łatwo aktualizować na podstawie liczby używanych diod LED, jeśli projekt jest skalowany w górę lub w dół. Wszystko, co musisz zrobić, to zaktualizować pozycję początkową i końcową diod LED, a także liczbę diod LED wchodzących w skład każdej cyfry.

Dodałem kilka animacji, które odtwarzają się przy starcie jak i co godzinę. Są one losowe w oparciu o generator liczb losowych, który ma na pokładzie.

Możesz ustawić zegar tak, aby zmieniał kolory lub pozostawał statyczny na jednym. Możesz nawet podświetlić cyfrę wskaźnika, aby ułatwić odczytanie czasu, jak pokazano we wstępie.

Możesz dowolnie edytować i zmieniać kod.

#include "RTClib.h"

#include #Define NUM_LEDS 96 #Define DATA_PIN 3 #Define LDR A0 RTC_DS1307 rtc; logiczny zmiana czasu = fałsz; boolean printTime = false; // Ustaw na true, jeśli chcesz zobaczyć dane wyjściowe w konsoli. Pomocne przy debugowaniu. wartość logiczna redDown = prawda; wartość logiczna greenDown = false; boolean blueDown = false; cykl logiczny = fałsz; // Ustaw true jeśli chcesz, aby kolory zegara zmieniały się w sposób logiczny highlight = true; // Ustaw true, aby podświetlić 'ostatnią cyfrę'. // Lokalizacje początku i końca każdej grupy czasu const int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Mnożniki używane do dzielenia czasu const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Zmień to, aby przyspieszyć lub spowolnić animację startową const int CYCLE_SPEED = 1; // Zmień tutaj szybkość dla cyklu zmiany koloru (musi być powyżej 1) // Zadeklaruj zmienne int lastSecond = 0; int aktualnaGodzina = 0; int bieżąca minuta = 0; int sekunda bieżąca = 0; int godzina1 = 0; int godzina2 = 0; int minuta1 = 0; int minuta2 = 0; int sekunda1 = 0; int sekunda2 = 0; int liczba cykli = 1; float FadeValue = 255; kontrola zaniku pływaka = 255; uint8_t jasny = 255; int liczba animacji = 5; losowość int = 0; // Ustaw kolory uint8_t red = 0; uint8_t zielony = 0; uint8_t niebieski = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Zdefiniuj tablicę diod LED Diody CRGB[NUM_LEDS]; void setup() { Serial.begin(19200); FastLED.addLeds(diody, NUM_LEDS); LEDS.setJasność(jasny); FastLED.clear(); rtc.początek(); // Odkomentuj wiersz poniżej, aby ustawić czas. // rtc.adjust(DateTime(2020, 2, 19, 23, 59, 50)); // rtc.adjust(DataCzas(F(_DATA_), F(_CZAS_))); // Animacja początkowa animate(losowość); } void loop() { // Pobierz czas DateTime now = rtc.now(); bieżąca godzina = teraz.godzina(); bieżąca minuta = teraz.minuta(); aktualnaSecond = teraz.second(); zmiana czasu = fałsz; // Użyj ich, aby ręcznie ustawić czas bez RTC. Pomocne przy debugowaniu // currentGodzina = 5; // bieżąca minuta = 30; // aktualnaSekunda = 30; // Zresetuj wszystkie bity do zera for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { leds = CRGB::Black; } // Ustaw godzinę // Ustaw godzinę 1 godzina1 = (bieżąca godzina % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Spowoduje to zliczenie wszystkich diod LED jednostki czasu, która ma się zaświecić przez (int i = HOUR_1_START_LOCATION; i 0)// && hour1 <12) { for (int i = (HOUR_1_START_LOCATION + hour1 - 1); i>= (GODZINA_1_START_LOKALIZACJA + godzina1 - LEDS_PER_HOUR_1); i--) { diody = CRGB(podświetlenie_czerwone, podświetlenie_zielone, podświetlenie_niebieskie); } } // Ustaw godzinę 2 godzina2 = (bieżąca godzina / MNOŻNIK_PIĘĆ) * LEDS_PER_HOUR_2; // Spowoduje to zliczenie wszystkich diod LED jednostki czasu, przez którą zaświecą się (int i = HOUR_2_START_LOCATION; i 0)// && hour2 <8) { for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i>= (GODZINA_2_START_LOKALIZACJA + godzina2 - LEDS_PER_HOUR_2);i--) { diody = CRGB(podświetlenie_czerwone, podświetlenie_zielone, podświetlenie_niebieskie); } } // Ustaw minutę // Ustaw minutę 1 minute1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Spowoduje to zliczenie wszystkich diod LED jednostki czasu, która ma się zaświecić przez (int i = MINUTE_1_START_LOCATION; i 0)// && minute1 <24) { for (int i = (MINUTE_1_START_LOCATION + minute1 - 1); i>= (MINUTE_1_START_LOCATION + minuta1 - LEDS_PER_MINUTE_1); i--) { diody = CRGB(podświetlenie_czerwone, podświetlenie_zielone, podświetlenie_niebieskie); } } // Ustaw minutę 2 minute2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Spowoduje to zliczenie wszystkich diod LED jednostki czasu, która ma się zaświecić przez (int i = MINUTE_2_START_LOCATION; i 0)// && minute2 <22) { for (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i>= (MINUTE_2_START_LOCATION + minuta2 - LEDS_PER_MINUTE_2);i--) { diody = CRGB(podświetlenie_czerwone, podświetlenie_zielone, podświetlenie_niebieskie); } } // Ustaw Second if (currentSecond != lastSecond) { timeChange = true; } // Ustaw drugą 1 sekundę1 = currentSecond % MULTIPLIER_TWO; if (second1 == 1) { diody[SECOND_1_LOCATION] = CRGB(czerwony, zielony, niebieski); } // Ustaw drugie 2 sekundy2 = currentSecond / MULTIPLIER_TWO; for (int i = SECOND_2_START_LOCATION; i 0)// && sekunda2 <29) { for (int i = (SECOND_2_START_LOCATION + druga2 - 1); i>= (SECOND_2_START_LOCATION + druga2 - 1); i--) { diody = CRGB(podświetlenie_czerwone, podświetlenie_zielone, podświetlenie_niebieskie); } } lastSecond = bieżącaSecond; // Policz cykle programu i wywołaj funkcję setColor, aby zmienić kolor diod LED w każdym cyklu CYCLE_SPEED. if (liczba cykli jasny) // { // fadeValue = jasny; // } // else if (fadeValue < 150) // { // fadeValue = 150; // } // LEDS.setBrightness(fadeValue); FastLED.show(); // Wydrukuj aktualny czas do konsoli if (timeChange == true && printTime == true) { printToConsole(); } } // Funkcja animacji dodaj więcej animacji tutaj jak chcesz void animate(int select) { if (select == 0) { for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { leds = CRGB(czerwony, zielony, niebieski); FastLED.show(); opóźnienie (START_UP_DELAY); } for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { diody = CRGB::Czarny; FastLED.show(); opóźnienie (START_UP_DELAY); } } else if (select == 1) { for (int i = 0; i < 250; i++) { int light = random(95); diody[światło] = CRGB(czerwony, zielony, niebieski); FastLED.show(); } } else if (select == 2) { leds[0] = CRGB(czerwony, zielony, niebieski); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i++) { diody[SECOND_2_START_LOCATION + i] = CRGB(czerwony, zielony, niebieski); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) { diody LED[MINUTE_1_START_LOCATION + i] = CRGB(czerwony, zielony, niebieski); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) { diody LED[MINUTE_2_START_LOCATION + i] = CRGB(czerwony, zielony, niebieski); } if (i <= (GODZINA_1_END_LOKALIZACJA - GODZINA_1_START_LOKALIZACJA)) { diody LED[GODZINA_1_START_LOKALIZACJA + i] = CRGB(czerwony, zielony, niebieski); } if (i <= (GODZINA_2_END_LOKALIZACJA - GODZINA_2_START_LOKALIZACJA)) { diody [GODZINA_2_START_LOKALIZACJA + i] = CRGB(czerwony, zielony, niebieski); } opóźnienie(34); FastLED.show(); } } else if (select == 3) { leds[0] = CRGB(czerwony, zielony, niebieski); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i++) { diody[SECOND_2_END_LOCATION - i] = CRGB(czerwony, zielony, niebieski); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) { diody LED[MINUTE_1_END_LOCATION - i] = CRGB(czerwony, zielony, niebieski); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) { diody [MINUTE_2_END_LOCATION - i] = CRGB(czerwony, zielony, niebieski); } if (i <= (GODZINA_1_END_LOKALIZACJA - GODZINA_1_START_LOKALIZACJA)) { diody LED[GODZINA_1_END_LOCATION - i] = CRGB(czerwony, zielony, niebieski); } if (i <= (GODZINA_2_END_LOCATION - HOUR_2_START_LOCATION)) { diody [GODZINA_2_END_LOCATION - i] = CRGB(czerwony, zielony,niebieski); } opóźnienie(34); FastLED.show(); } } else if (wybierz == 4) { for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { leds = CRGB::Black; } FastLED.show(); opóźnienie(200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { diody = CRGB(czerwony, zielony, niebieski); } FastLED.show(); opóźnienie(200); for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { diody = CRGB::Czarny; } FastLED.show(); opóźnienie(200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { diody = CRGB(czerwony, zielony, niebieski); } FastLED.show(); opóźnienie(200); for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { diody = CRGB::Czarny; } FastLED.show(); opóźnienie(200); } } // Funkcja zmiany kolorów void setColor(boolean cycleColors) { if (cycleColors == true) { if (redDown == true && greenDown == false) { red++; Zielony--; if (zielony <= 0) { czerwony = 255; czerwony w dół = fałsz; zielony w dół = prawda; } } else if (greenDown == true && blueDown == false) { green++; niebieski--; if (niebieski <= 0) { zielony = 255; zielony w dół = fałsz; niebieski w dół = prawda; } } else if (blueDown == true && redDown == false) { blue++; czerwony--; jeśli (czerwony <= 0) { niebieski = 255; blueDown = fałsz; czerwony w dół = prawda; } } } inny { czerwony = 0; zielony = 0; niebieski = 255; } } // Drukuj do funkcji monitora szeregowego void printToConsole() { Serial.print("Aktualny czas: "); Serial.print(bieżąca godzina); Serial.print(":"); Serial.print(bieżąca minuta); Serial.print(":"); Serial.println(bieżącaSecond); Serial.println(" "); for (int i = GODZINA_2_START_LOKALIZACJA; i <= GODZINA_2_END_LOKALIZACJA; i++) { Serial.print(leds); if (i % 2 == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = GODZINA_1_START_LOKALIZACJA; i <= GODZINA_1_END_LOKALIZACJA; i++) { Serial.print(leds); if (((i - GODZINA_1_START_LOKALIZACJA + 1) % 3) == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = MINUTA_2_START_LOCATION; i <= MINUTA_2_END_LOCATION; i++) { Serial.print(leds); if (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = MINUTA_1_START_LOCATION; i <= MINUTA_1_END_LOCATION; i++) { Serial.print(leds); if (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i++) { Serial.print(leds); Serial.print(" "); } Serial.println(" "); Serial.println(ledy[SECOND_1_LOCATION]); Serial.println(); for (int i = 0; i < NUM_LEDS; i++) { Serial.print(leds); } Serial.println(); Serial.println(); }

Krok 27: Ciesz się

Obraz
Obraz

Podsumowując, ten zegar jest wspaniały do oglądania, a kiedy już go opanujesz, jest stosunkowo łatwy do odczytania. Jeśli tworzysz własny projekt zegara, daj mi znać!

Zalecana: