2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Chcel som pre svoj dvor vybudovať nejaké interaktívne osvetlenie dvora. Myšlienka bola, že keď niekto bude kráčať jedným smerom, spustí to animáciu v smere, ktorým idete. Začal som so solárnymi svetlami Dollar General za 1,00 dolára
Krok 1: Vykuchajte solárne svetlá
Prvým krokom bolo vyprázdnenie svetiel, aby uvoľnili miesto pre zábavnejšie veci. Začal som prerušením pôvodnej LED a batérie. Uistite sa, že tieto časti uložíte, pretože budú užitočné v inom projekte. Tiež som odstránil chrómovú kupolu, ktorá bola na spodnej časti slnečného svetla, a prilepila ju na vrch, ako je vidieť na fotografiách
Krok 2: Inštalácia lepších svetiel
pre LED som použil vodotesný ws2811b, ktorý nájdete tu
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Pôvodne som plánoval vložiť senzory PIR do slnečných svetiel. ale ukázalo sa to ako problematické, pretože senzor v zásade nevidel plast. musí mať nejaký spôsob filtrovania UV žiarenia. tak som sa rozhodol pre niečo podobné
www.thingiverse.com/thing:2590216
Krok 3: Kódovanie
ak chcete, aby svetlá nepoužívali senzor alebo len stále bežali, stačí vyhľadať miesto, ktoré je označené ako „zmena stavu vlajky“, a nastaviť ho na éter 1 alebo 0, pridám ďalšie obrázky, keď to dokončím za seba, je to stále nedokončená práca, ale myslím si, že je príliš úhľadné, aby sme sa o to hneď nepodelili. ďakujem za nahliadnutie
neplatné nastavenie () {
// sem vložte svoj inštalačný kód, aby sa spustil raz: FastLED.addLeds (leds, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }
prázdna slučka () {
Serial.println (FlagState);
if (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } if (FlagState == 2) {Waiting (); }}
neplatné ForwardLeds () {
PrváLed = -1; LastLed = 16; pre (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: White; leds [FirstLed] = CRGB:: White; oneskorenie (750); FastLED.show (); Serial.print („biely pas“); Serial.print (i); Serial.println ("z 8"); } PrváLED = -1; LastLed = 16; pre (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Blue; leds [FirstLed] = CRGB:: Blue; oneskorenie (250); FastLED.show (); Serial.print („Blue Pass“); Serial.print (i); Serial.println ("z 8"); } PrváLED = -1; LastLed = 16; pre (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Purple; leds [FirstLed] = CRGB:: Purple; oneskorenie (250); FastLED.show (); Serial.print („Red Pass“); Serial.print (i); Serial.println ("z 8"); } PrváLED = -1; LastLed = 16; pre (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Black; leds [FirstLed] = CRGB:: Black; oneskorenie (250); FastLED.show (); Serial.print ("Vypnutie LED"); Serial.print (i); Serial.println ("z 8"); } FlagState = 2; // zmena stavu vlajky} neplatné RevLeds () {Serial.println ("v opačnom smere"); PrváLed = 8; LastLed = 7; pre (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: White; leds [FirstLed] = CRGB:: White; oneskorenie (750); FastLED.show (); Serial.print ("White pass"); Serial.print (i); Serial.println ("z 8"); } PrváLED = 8; LastLed = 7; pre (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Blue; leds [FirstLed] = CRGB:: Blue; oneskorenie (250); FastLED.show (); Serial.print („modrý preukaz“); Serial.print (i); Serial.println ("z 8"); } PrváLED = 8; LastLed = 7; pre (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Purple; leds [FirstLed] = CRGB:: Purple; oneskorenie (250); FastLED.show (); Serial.print („červený preukaz“); Serial.print (i); Serial.println ("z 8"); }
PrváLed = 8;
LastLed = 7; pre (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Black; leds [FirstLed] = CRGB:: Black; oneskorenie (250); FastLED.show (); Serial.print ("Vypnutie LED"); Serial.print (i); Serial.println ("z 8"); } FlagState = 2; // zmena stavu vlajky} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("dopredu spustené"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Spustené otáčky"); FlagState = 1; } Serial.println ("slučka ukončila čakanie"); }