Spisu treści:

Interaktywne oświetlenie stoczni, oświetlenie chodnika: 3 kroki
Interaktywne oświetlenie stoczni, oświetlenie chodnika: 3 kroki

Wideo: Interaktywne oświetlenie stoczni, oświetlenie chodnika: 3 kroki

Wideo: Interaktywne oświetlenie stoczni, oświetlenie chodnika: 3 kroki
Wideo: LABiB.PL | Biblioteka jako puzzle w samorządowej układance 2024, Lipiec
Anonim
Interaktywne oświetlenie stoczni, oświetlenie chodnika
Interaktywne oświetlenie stoczni, oświetlenie chodnika
Interaktywne oświetlenie stoczni, oświetlenie chodnika
Interaktywne oświetlenie stoczni, oświetlenie chodnika

Chciałem zbudować coś w rodzaju interaktywnych świateł na podwórku. Chodziło o to, że gdy ktoś idzie w jedną stronę, uruchamia się animacja w kierunku, w którym idziesz. Zacząłem od świateł słonecznych Dollar General 1,00 $

Krok 1: Wypatruj światła słonecznego

Wypatrosz solowych świateł
Wypatrosz solowych świateł
Wypatrosz solowych świateł
Wypatrosz solowych świateł
Wypatrosz solowych świateł
Wypatrosz solowych świateł

Pierwszym krokiem było wypatroszenie świateł, aby zrobić miejsce na więcej zabawnych rzeczy. Zacząłem od wycięcia oryginalnej diody i baterii. Koniecznie zachowaj te części gdyż przydadzą się w innym projekcie Usunąłem też chromowaną kopułę która była na dole lampy solarnej i przykleiłem ją do góry jak widać na zdjęciach

Krok 2: Instalowanie lepszych świateł

Instalowanie lepszych świateł
Instalowanie lepszych świateł
Instalowanie lepszych świateł
Instalowanie lepszych świateł
Instalowanie lepszych świateł
Instalowanie lepszych świateł

do diody użyłem wodoodpornego ws2811b, który można znaleźć tutaj

www.ebay.com/itm/50-X-12mm-Moduł-LED-RGB-…

Pierwotnie planowałem umieścić czujniki PIR w lampach słonecznych. ale okazało się to trochę problematyczne, ponieważ czujnik w zasadzie nie widział poza plastikiem. musi mieć jakąś właściwość filtrowania UV. więc zdecydowałem się na coś bardziej takiego

www.thingiverse.com/thing:2590216

Krok 3: Kodowanie

jeśli chcesz, aby światła nie korzystały z czujnika lub po prostu działały cały czas, poszukaj miejsca, które jest skomentowane jako „zmienianie stanu flagi” i ustaw je na ether 1 lub 0, dodam więcej zdjęć, gdy skończę to dla siebie, więc nadal jest w toku, ale myślę, że jest zbyt schludny, aby nie udostępniać od razu. dzięki za obejrzenie

pusta konfiguracja () {

// wstaw tutaj swój kod konfiguracyjny do jednorazowego uruchomienia: FastLED.addLeds(leds, NUM_LEDS); Serial.początek(9600); pinMode(przyciskPin1, WEJŚCIE); pinMode(buttonPin2, INPUT); }

pusta pętla () {

Serial.println(stan flagi);

if(FlagState == 0){ ForwardLeds(); } if(FlagState == 1){ RevLeds(); } if(FlagState == 2){ Oczekiwanie(); } }

void ForwardLeds(){

Pierwsza dioda = -1; LastLed = 16; for(int i=0; i < 8; i++){ LastLed--; Pierwsza dioda++; diody [Ostatnia dioda] = CRGB::Biały; diody [Pierwsza dioda] = CRGB::Biały; opóźnienie(750); FastLED.show(); Serial.print ("Biała Przepustka"); druk.seryjny (i); Serial.println (" z 8"); } Pierwsza dioda = -1; LastLed = 16; for(int i=0; i < 8; i++){ LastLed--; Pierwsza dioda++; diody [Ostatnia dioda] = CRGB::Niebieski; diody [Pierwsza dioda] = CRGB::Niebieski; opóźnienie(250); FastLED.show(); Serial.print („Niebieska karta”); druk.seryjny (i); Serial.println (" z 8"); } Pierwsza dioda = -1; LastLed = 16; for(int i=0; i < 8; i++){ LastLed--; Pierwsza dioda++; diody[OstatniaLed] = CRGB::Fioletowy; diody[PierwszaLed] = CRGB::Fioletowy; opóźnienie(250); FastLED.show(); Serial.print ("Czerwona przepustka"); druk.seryjny (i); Serial.println (" z 8"); } Pierwsza dioda = -1; Ostatnia dioda = 16; for(int i=0; i < 8; i++){ LastLed--; Pierwsza dioda++; diody [Ostatnia dioda] = CRGB::Czarny; diody [Pierwsza dioda] = CRGB::Czarny; opóźnienie(250); FastLED.show(); Serial.print ("Wyłączenie diody"); druk.seryjny (i); Serial.println (" z 8"); } Stan Flagi = 2; // zmiana stanu flagi } void RevLeds(){ Serial.println("in reverse"); Pierwsza dioda = 8; LastLed = 7; for(int i=0; i < 8; i++){ LastLed++; Pierwsza dioda--; diody [Ostatnia dioda] = CRGB::Biały; diody [Pierwsza dioda] = CRGB::Biały; opóźnienie(750); FastLED.show(); Serial.print (" Biała przepustka "); druk.seryjny (i); Serial.println (" z 8"); } Pierwsza dioda = 8; LastLed = 7; for(int i=0; i < 8; i++){ LastLed++; Pierwsza dioda--; diody [Ostatnia dioda] = CRGB::Niebieski; diody [Pierwsza dioda] = CRGB::Niebieski; opóźnienie(250); FastLED.show(); Serial.print („Niebieska przepustka”); druk.seryjny (i); Serial.println (" z 8"); } Pierwsza dioda = 8; LastLed = 7; for(int i=0; i < 8; i++){ LastLed++; Pierwsza dioda--; diody[OstatniaLed] = CRGB::Fioletowy; diody[PierwszaLed] = CRGB::Fioletowy; opóźnienie(250); FastLED.show(); Serial.print („Czerwona przepustka”); druk.seryjny (i); Serial.println (" z 8"); }

Pierwsza dioda = 8;

LastLed = 7; for(int i=0; i < 8; i++){ LastLed++; Pierwsza dioda--; diody [Ostatnia dioda] = CRGB::Czarny; diody [Pierwsza dioda] = CRGB::Czarny; opóźnienie(250); FastLED.show(); Serial.print ("Wyłączanie diody"); druk.seryjny (i); Serial.println (" z 8"); } Stan Flagi = 2; //zmiana stanu flagi } void Waiting(){ buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); if(buttonState1 == HIGH){ Serial.println("wyzwalane przekazywanie"); Stan Flagi = 0; } else if(buttonState2 == HIGH){ Serial.println("Wyzwolony obrót"); Stan Flagi = 1; } Serial.println("oczekiwanie w pętli zakończone"); }

Zalecana: