Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Quería construir algún tipo de luces de jardín interactivas para mi patio trasero. La idea era que, cuando alguien caminaba en una dirección, se activaba una animación en la dirección en la que estabas caminando. Empecé con las luces solares de $ 1.00 de Dollar General
Paso 1: Destripa las luces de color
El primer paso fue destripar las luces para dar paso a más cosas divertidas. Empecé cortando el led y la batería originales. Asegúrese de guardar estas partes ya que serán útiles en otro proyecto. También quité la cúpula cromada que estaba en la parte inferior de la luz solar y la pegué en la parte superior como se ve en las fotos.
Paso 2: Instalación de mejores luces
para el led utilicé ws2811b a prueba de agua que se puede encontrar aquí
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Originalmente planeé colocar los sensores PIR dentro de las luces solares. pero esto resultó ser algo problemático porque el sensor básicamente no podía ver más allá del plástico. debe tener algún tipo de propiedad de filtrado UV. así que opté por algo más como esto
www.thingiverse.com/thing:2590216
Paso 3: codificación
Si desea que las luces no usen el sensor o simplemente funcionen todo el tiempo, busque el lugar que se comenta como "cambio de estado de la bandera" y configúrelo en ether 1 o 0, agregaré más fotos cuando complete esto por mí mismo, así que todavía es un trabajo en progreso, pero creo que es demasiado bueno para no compartirlo de inmediato. gracias por mirar
configuración vacía () {
// ponga su código de configuración aquí, para que se ejecute una vez: FastLED.addLeds (leds, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, ENTRADA); }
bucle vacío () {
Serial.println (FlagState);
if (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } if (FlagState == 2) {Esperando (); }}
void ForwardLeds () {
FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Blanco; leds [FirstLed] = CRGB:: Blanco; retraso (750); FastLED.show (); Serial.print ("pase blanco"); Serial.print (i); Serial.println ("de 8"); } FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Azul; leds [FirstLed] = CRGB:: Azul; retraso (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("de 8"); } FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Violeta; leds [FirstLed] = CRGB:: Purple; retraso (250); FastLED.show (); Serial.print ("Red Pass"); Serial.print (i); Serial.println ("de 8"); } FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Negro; leds [FirstLed] = CRGB:: Negro; retraso (250); FastLED.show (); Serial.print ("Apagar led"); Serial.print (i); Serial.println ("de 8"); } FlagState = 2; // cambiando el estado de la bandera} void RevLeds () {Serial.println ("al revés"); FirstLed = 8; LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Blanco; leds [FirstLed] = CRGB:: Blanco; retraso (750); FastLED.show (); Serial.print ("Pase blanco"); Serial.print (i); Serial.println ("de 8"); } FirstLed = 8; LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Azul; leds [FirstLed] = CRGB:: Azul; retraso (250); FastLED.show (); Serial.print ("Pase azul"); Serial.print (i); Serial.println ("de 8"); } FirstLed = 8; LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Violeta; leds [FirstLed] = CRGB:: Purple; retraso (250); FastLED.show (); Serial.print ("Pase rojo"); Serial.print (i); Serial.println ("de 8"); }
FirstLed = 8;
LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Negro; leds [FirstLed] = CRGB:: Negro; retraso (250); FastLED.show (); Serial.print ("Apagar LED"); Serial.print (i); Serial.println ("de 8"); } FlagState = 2; // cambiando el estado de la bandera} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("disparado hacia adelante"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Rev activada"); FlagState = 1; } Serial.println ("bucle terminado en espera"); }