Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Am vrut să construiesc un fel de lumini interactive de curte pentru curtea mea din spate. Ideea era că, atunci când cineva mergea într-un fel, declanșa o animație în direcția în care mergeai. Am început cu Dollar General 1,00 dolari lumini solare
Pasul 1: Îndepărtați luminile Solor
Primul pas a fost să distrugeți luminile pentru a face loc unor lucruri mai distractive. Am început prin a tăia ledul original și bateria. Asigurați-vă că salvați aceste piese, deoarece acestea vor fi utile într-un alt proiect. Am îndepărtat și cupola cromată care se afla pe fundul luminii solare și am lipit-o în partea de sus așa cum se vede în fotografii
Pasul 2: Instalarea unor lumini mai bune
pentru led am folosit ws2811b rezistent la apă care poate fi găsit aici
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Inițial am planificat să pun senzorii PIR în interiorul luminilor solare. dar acest lucru sa dovedit a fi o problemă, deoarece senzorul nu putea vedea practic plasticul. trebuie să aibă un fel de filtrare UV. așa că am optat pentru ceva mai de genul acesta
www.thingiverse.com/thing:2590216
Pasul 3: Codificare
dacă doriți să faceți luminile să nu folosească senzorul sau să rulați tot timpul, trebuie doar să căutați locul care este comentat ca „schimbarea stării pavilionului” și setați-l la eter 1 sau 0 voi adăuga mai multe poze atunci când voi completa acest lucru pentru mine, așa că este încă o lucrare în desfășurare, dar cred că este prea îngrijit pentru a nu-l împărtăși imediat. multumesc ca ai cautat
configurare nulă () {
// puneți codul de configurare aici, pentru a rula o dată: FastLED.addLeds (led-uri, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }
bucla nulă () {
Serial.println (FlagState);
if (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } if (FlagState == 2) {Waiting (); }}
void ForwardLeds () {
FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: White; leds [FirstLed] = CRGB:: White; întârziere (750); FastLED.show (); Serial.print ("White Pass"); Serial.print (i); Serial.println ("din 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Blue; leds [FirstLed] = CRGB:: Blue; întârziere (250); FastLED.show (); Serial.print („Blue Pass”); Serial.print (i); Serial.println ("din 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leduri [LastLed] = CRGB:: Violet; leduri [FirstLed] = CRGB:: Violet; întârziere (250); FastLED.show (); Serial.print („Red Pass”); Serial.print (i); Serial.println ("din 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leduri [LastLed] = CRGB:: Negru; leds [FirstLed] = CRGB:: Black; întârziere (250); FastLED.show (); Serial.print („Dezactivarea ledului”); Serial.print (i); Serial.println ("din 8"); } FlagState = 2; // schimbarea stării pavilionului} void RevLeds () {Serial.println ("invers"); FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: White; leds [FirstLed] = CRGB:: White; întârziere (750); FastLED.show (); Serial.print („White pass”); Serial.print (i); Serial.println ("din 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Blue; leds [FirstLed] = CRGB:: Blue; întârziere (250); FastLED.show (); Serial.print („Blue pass”); Serial.print (i); Serial.println ("din 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leduri [LastLed] = CRGB:: Violet; leduri [FirstLed] = CRGB:: Violet; întârziere (250); FastLED.show (); Serial.print („Red pass”); Serial.print (i); Serial.println ("din 8"); }
FirstLed = 8;
LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leduri [LastLed] = CRGB:: Negru; leds [FirstLed] = CRGB:: Black; întârziere (250); FastLED.show (); Serial.print („Dezactivarea Ledului”); Serial.print (i); Serial.println ("din 8"); } FlagState = 2; // schimbarea stării pavilionului} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("declanșat înainte"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Rev declanșat"); FlagState = 1; } Serial.println ("bucla Așteptarea finalizată"); }