Spisu treści:

Zegar Ish: 5 kroków (ze zdjęciami)
Zegar Ish: 5 kroków (ze zdjęciami)

Wideo: Zegar Ish: 5 kroków (ze zdjęciami)

Wideo: Zegar Ish: 5 kroków (ze zdjęciami)
Wideo: Nauka zegara dla dzieci - Wytłumaczenie oraz Ćwiczenia 2024, Lipiec
Anonim
Image
Image
Zbieranie części i obróbka drewna
Zbieranie części i obróbka drewna

Często przyłapuję się na tym, że kupuję rzeczy, z którymi nie mam pojęcia, co zamierzam zrobić. Ten projekt jest wynikiem zakupu pierścienia, który posiada 12x diody WS2812b. Nie miałem żadnych planów, ale wyglądało fajnie w Internecie, więc włożyłem jeden do koszyka, bawiłem się nim przez chwilę, gdy dotarł, a potem zapomniałem o nim.

Chwilę później myślałem o zrobieniu zegara i przypomniałem sobie, że siedział tam i nic nie robił. Myślałem o zakupie drugiego pierścienia z 60 diodami LED, aby nadrobić minuty, ale potem zacząłem myśleć, jak my/ja patrzymy na czas i zaokrąglamy go do najbliższych 5 minut.

Mając to w swoim, postanowiłem z moim 12-diodowym pierścieniem zrobić zegar. Wyświetla 1 diodę na raz przez 1 sekundę, aby wskazać godzinę (niebieska dioda), a następnie minuty (czerwona dioda) zaokrąglone w dół

Krok 1: Zbieranie części i obróbka drewna

Zbieranie części i obróbka drewna
Zbieranie części i obróbka drewna
Zbieranie części i obróbka drewna
Zbieranie części i obróbka drewna
Zbieranie części i obróbka drewna
Zbieranie części i obróbka drewna

Miałem szczęście, że pewnego dnia przyjechałem do pracy i zauważyłem paletę. Ta paleta utkwiła mi w pamięci, ponieważ nie wyglądała jak twój standardowy, bieg z palety młyna. Był to czysty, poddany obróbce cieplnej i niezwykle lity dąb.

Ten projekt jest wykonany z jednego z kawałków tej palety. (Zapytałem szefa, zanim zabrałem go do domu)

Także używany:

  • 12-pikselowy pierścień LED ws2812b
  • Moduł zegara czasu rzeczywistego (RTC) (używam DS3231 z I2C)
  • Kompatybilny z Arduino Nano v3.0
  • Arkusz akrylowy (5mm)
  • Kolorowy drut

Narzędzia

  • Wiertarka elektryczna
  • Router
  • Regulowany płaski bit do drewna
  • Szlifierka elektryczna
  • Piła ręczna
  • Lutownica
  • Pistolet na gorący klej
  • Papier ścierny
  • Duński olej

Szlifowanie

Zacząłem od użycia szlifierki mechanicznej do wyprostowania i oczyszczenia bloku drewna, aż wszystkie boki będą czyste i gładkie. Zostawiłem niektóre niedoskonałości widoczne i nie jest idealnie proste ani kwadratowe, ponieważ lubię móc zobaczyć trochę historii w drewnie.

Znakowanie i wycinanie otworów

Po szlifowaniu wybrałem stronę, na której chciałem tarczę zegara i zaznaczyłem środek, rysując linie z każdego rogu. Ustawiłem regulowany kawałek drewna nieco większy niż pierścień LED, aby była półka na akryl, na której można by usiąść i wyciąć około 5 mm, a następnie ustawić nóż nieco ponad rozmiar pierścienia LED i przyciąć kolejne 5 mm.

Otwory trasowania i kabli

Używając mojego routera z bitem 12 mm, wyprowadziłem wgłębienie w dolnej części bloku, aby ukryć RTC i Arduino. Ma około 15 mm głębokości i nie mniej niż 5 mm od każdej krawędzi. Zaznaczyłem środek (ish) od dołu i wywierciłem wiertłem 10 mm tuż za pół drogi, aby umożliwić przewody LED. Następnie za pomocą wiertła 5 mm wywierciłem od środka wnęki LED, aby zrównać się z otworem 10 mm od dołu.

Jeszcze jeden otwór o średnicy 4 mm z tyłu, aby włączyć zasilanie, i za pomocą mniejszego frezu do wykonania kanału na przewody z tyłu pierścienia LED i praca z drewnem jest zakończona.

Krok 2: Kręgi akrylowe

Koła akrylowe
Koła akrylowe
Koła akrylowe
Koła akrylowe
Koła akrylowe
Koła akrylowe

Aby zrobić akryl na front zegara, stwierdziłem, że wycinam kwadratowy kawałek, który był tylko większy niż otwór, który musiał wypełnić. Następnie za pomocą szlifierki mechanicznej zacząłem usuwać rogi, aż uzyskałem odpowiedni kształt i rozmiar. Następnie przeszedłem do ręcznego szlifowania, więc nie przesadzałem i musiałem zaczynać od nowa.

To był powolny i żmudny proces prób i błędów, dopóki nie pasował idealnie, ale myślę, że efekt końcowy był tego wart. Skończyłem używając bardzo drobnego papieru ściernego, aby nadać frontowi akrylu matowy wygląd.

Krok 3: Lutowanie

Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie

Przy tej okazji lubię stosować system kolorów dla moich przewodów wybieram:

  • Czerwony dla zasilania (5v)
  • Biały na ziemię
  • Żółty dla danych
  • Zielony dla zegara

Zacząłem od przylutowania 3 niezbędnych przewodów do pierścienia LED za pomocą powyższego systemu i wepchnięcia przewodów w otwór. Ponieważ nie powinien być narażony na żadne przemoc, użyłem odrobiny gorącego kleju, aby utrzymać pierścionek na miejscu. (Być może będę musiał to kiedyś zmienić) i przymocuj akryl tylko odrobiną gorącego kleju wokół krawędzi.

Następnie przylutowałem 4 przewody do RTC za pomocą powyższego systemu. Aby wszystko było trochę ładniejsze, postanowiłem pobierać energię do RTC z Arduino. Następnie podłączyłem wszystko do Arduino i przylutowałem 1 przewód do zasilania i drugi do masy do Arduino.

RTC

  • SCL (zegar) do styku analogowego 5
  • SDA (dane) do styku analogowego 4
  • VCC do 5V
  • GND do dowolnego GND na Arduino

Pierścień LED

Din na cyfrowy pin 6

Miałem stary kabel USB, więc postanowiłem użyć go do zasilania zegara. Odciąłem koniec, który normalnie by się z czymś łączył i wsunąłem przez otwór z tyłu. Następnie zdejmij i pokryj końce przed przylutowaniem VCC do Arduino i pierścienia LED po stronie dodatniej oraz uziemienia z Arduino i diody LED do uziemienia. Trochę się termokurczyłem później i wyglądało dobrze, Pistolet do gorącego kleju wrócił, aby utrzymać wszystko w dół. Postanowiłem zostawić Arduino z na tyle luzem, że będę mógł w przyszłości uzyskać dostęp do portu USB, aby go zaprogramować, ale nie na tyle, żebym mógł wypaść.

Krok 4: Kodeks

Teraz powinieneś być w stanie przesłać ten kod do Arduino.

Jeśli RTC nie działa, ten kod ustawi czas na podstawie tego, kiedy kod został skompilowany, więc pamiętaj, aby po prostu nacisnąć przycisk przesyłania i nie weryfikować.

na przemian działa to również bardzo dobrze przy ustawianiu czasu.

www.instructables.com/id/Setting-the-DS130…

Wiele z tego kodu pożyczyłem z biblioteki Adafruit NeoPixel, część z biblioteki RTC, którą znalazłem, a część sam wymyśliłem.

// dołącz kod biblioteki: #include

#włączać

#włączać

// zdefiniuj szpilki

#zdefiniuj PIN 6

#define BRIGHTNESS 20 // ustaw maksymalną jasność

#zdefiniuj r 5

#zdefiniuj g 5

#definiuj b 5

RTC_DS3231 RTC; // Ustaw obiekt zegara

Pasek Adafruit_NeoPixel = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800); // usuń obiekt

pusta konfiguracja () {

Wire.początek(); // Rozpocznij I2C

rtc.początek(); // rozpocznij zegar

Serial.początek(9600);

// ustaw tryby pinów

pinMode(PIN, WYJŚCIE);

if (rtc.lostPower()) {

Serial.println("RTC stracił zasilanie, ustawmy czas!");

// kolejna linia ustawia RTC na datę i godzinę skompilowania tego szkicu

rtc.adjust(DataCzas(F(_DATA_), F(_CZAS_)));

// Ta linia ustawia RTC z wyraźną datą i godziną, na przykład, aby ustawić

// 21 stycznia 2014 o 3 nad ranem zadzwoniłbyś:

// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

}

strip.początek();

strip.pokaż(); // Zainicjuj wszystkie piksele na „wyłączone”

DateTime theTime = rtc.now(); // uwzględnia czas letni

bajt sekundwartość = czas.sekunda(); // zdobądź sekundy

bajt minuta = czas.minuta(); // zdobądź minuty

int hourval = godzina.godzina();

kropka(pasek. Kolor(0, g, 0), 50);

}

pusta pętla () {

// uzyskać czas

DateTime theTime = rtc.now(); // uwzględnia czas letni

int minuteval = czas.minuta(); // zdobądź minuty

int hourval = godzina.godzina(); // zdobądź godziny

int sekunda = czas.sekunda();

jeśli (minuta 0) {

strip.setPixelColor(0, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 9) {

strip.setPixelColor(1, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 14) {

strip.setPixelColor(2, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 19) {

strip.setPixelColor(3, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 24) {

strip.setPixelColor(4, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 29) {

strip.setPixelColor(5, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 34) {

strip.setPixelColor(6, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 39) {

strip.setPixelColor(7, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 44) {

strip.setPixelColor(8, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 49) {

strip.setPixelColor(9, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <= 54) {

strip.setPixelColor(10, r, 0, 0);

strip.show();}

inaczej, jeśli (minuta <=59) {

strip.setPixelColor(11, r, 0, 0);

strip.show();}

opóźnienie (1000);

dla (int i=0; i<12; i++){

strip.setPixelColor(i, 0, 0, 0);

strip.pokaż();

}

jeśli (godzina == 0) {

strip.setPixelColor(0, 0, 0, b);

strip.show();}

inaczej if (godzina == 1) {

strip.setPixelColor(1, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 2) {

strip.setPixelColor(2, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 3) {

strip.setPixelColor(3, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 4) {

strip.setPixelColor(4, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 5) {

strip.setPixelColor(5, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 6) {

strip.setPixelColor(6, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 7) {

strip.setPixelColor(7, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 8) {

strip.setPixelColor(8, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 9) {

strip.setPixelColor(9, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 10) {

strip.setPixelColor(10, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 11) {

strip.setPixelColor(11, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 12) {

strip.setPixelColor(0, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 13) {

strip.setPixelColor(1, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 14) {

strip.setPixelColor(2, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 15) {

strip.setPixelColor(3, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 16) {

strip.setPixelColor(4, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 17) {

strip.setPixelColor(5, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 18) {

strip.setPixelColor(6, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 19) {

strip.setPixelColor(7, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 20) {

strip.setPixelColor(8, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 21) {

strip.setPixelColor(9, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 22) {

strip.setPixelColor(10, 0, 0, b);

strip.show();}

inaczej, jeśli (godzina == 23) {

strip.setPixelColor(11, 0, 0, b);

strip.show();}

opóźnienie (1000);

dla (int i=0; i<12; i++){

strip.setPixelColor(i, 0, 0, 0);

strip.pokaż();

}

// do debugowania szeregowego

Serial.print(godzina, DEC);

Serial.print(':');

Serial.print(minuta, DEC);

Serial.print(':');

Serial.println(sekunda, grudzień);

}

nieważna kropka (uint32_t c, uint8_t czekaj) {

for (int j=0; j<3; j++) {

for(int i=0; i<12; i++){

strip.setPixelColor(i, c);

strip.pokaż();

opóźnienie (czekaj);

for(int i=0; i<12; i++){

strip.setPixelColor(i, 0, 0, 0);

strip.show();}

}

}

}

Krok 5: Duński Olej

Duński olej
Duński olej
Duński olej
Duński olej
Duński olej
Duński olej
Duński olej
Duński olej

Ostatnim i opcjonalnym krokiem jest nałożenie na drewno odrobiny duńskiego oleju. Bardzo podoba mi się to, jak wydobywa słoje i zapewnia pewną ochronę przed plamami i wilgocią. Więc bardzo go polecam.

Możesz go wyczesać lub po prostu wytrzeć starą szmatką.

Teraz pozostaje tylko podłączyć i cieszyć się.

Zalecana: