Una linterna de estado de ánimo con anillo LED RGB WS2812b

Cuando limpié en la tienda el otro día, encontré una linterna decorativa como una madera con pequeñas ventanas de vidrio en la que se puede colocar una pequeña vela. Dado que las velas reales son conocidas por representar un riesgo de fuego no pequeño, y también quería controlar mi linterna cómodamente, realmente sustituyo la luz de la vela parpadeante con un anillo WS2812 y simular la luz de las velas y el típico parpadeo de la vela. Así que instalamos una "vela" artificial en nuestra linterna en nuestro blog de hoy. Esto le da a la linterna un "parpadeo de llama" realista sin el riesgo de fuego debido al fuego abierto.

Linterna terminada

Necesitamos el siguiente hardware para nuestro proyecto y para esta parte 1 de la serie:
1 x AZ-Delivery Nano V 3
1 x Anillo LED RGB WS2812b con 12 LED RGB 5V para Arduino de 50 mm de diámetro exterior
1 x 5 Voltios / 1 Fuente de alimentación de amperios

La fuente de alimentación de nuestro circuito debe ser generosamente dimensionado con 1 amperio, ya que el anillo RGB tiene un consumo máximo de corriente a un control total de 12 * 60mA 720 mA tiene.


Ensamblamos la parte electrónica de la linterna como se muestra en el siguiente diagrama de circuito y cable en consecuencia:

Linterna de Estado de Ánimo Esquemática

Básicamente, en lugar del AZ-Delivery Nano V3, también se puede utilizar un microcontrolador normal, compatible con Uno R3, pero el nano ofrece ventajas de espacio cuando se instala en una linterna.

Cuando hayamos terminado el circuito, ahora tenemos que incluir la biblioteca Defruit Neopixel para que podamos controlar fácilmente los LED del anillo.

La biblioteca necesaria se puede agregar a nuestro IDE de 2 maneras:
1.) La biblioteca en la URL https://github.com/adafruit/Adafruit_NeoPixel Descargar.
A continuación, en el IDE en el elemento de menú Sketch -> Incluir biblioteca ->Agregar biblioteca Zip manualmente.


2.) Ingrese "Adafruit Neopixel" en el administrador de la biblioteca como un término de búsqueda, haga clic en la biblioteca y luego seleccione "Instalar". Seleccione al menos la versión 1.2.4.

Selección de la instalación de Neopixel en el IDE de Arduino

 

Si todo ha funcionado hasta este punto, el siguiente código se cargará en el nano:

 

#include <Adafruit_NeoPixel.H>

#define anclar        6  ¿Qué pin del Arduino está conectado a los NeoPixels?
#define NUMPIXELS 12 ¿Cuántos NeoPixels están conectados al Arduino? Tamaño de anillo NeoPixel popular

Adafruit_NeoPixel Píxeles(NUMPIXELS, anclar, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500 Tiempo (en milisegundos) para pausar entre píxeles

Largo lastTime;
Int Intervalo;

Vacío Configuración()
{   Píxeles.Comenzar(); INITIALIZE NeoPixels   Intervalo = 150;   randomSeed(analogRead(0));
}

Vacío SimulateFire (Bool En, Int FireSquence)
{   Si (En)   {     Largo nowmilli = Millis();     Si (nowmilli - lastTime >= Intervalo)     {       Byte LightValue[NUMPIXELS * 3];       Byte FireColor = 60;       Intervalo = Aleatorio(150, 200);       lastTime = nowmilli;       FireColor = 60; al azar (0,50);       Para (Int Ⅰ. = 0; Ⅰ. < NUMPIXELS; Ⅰ.++)       { Para cada píxel...         LightValue[Ⅰ. * 3] = Aleatorio(240, 255); // 250         LightValue[Ⅰ. * 3 + 1] = Aleatorio(30, 60); // 50         LightValue[Ⅰ. * 3 + 2] = 0;       }       Cambiar algunas luces más oscuras       Byte LightsOff  = Aleatorio(0, 4);       Para (Int Ⅰ. = 0; Ⅰ. < LightsOff; Ⅰ.++)       {         Byte Seleccionado = Aleatorio(NUMPIXELS);         LightValue[Seleccionado * 3] = Aleatorio(50, 60);         LightValue[Seleccionado * 3 + 1] = Aleatorio(5, 10);         LightValue[Seleccionado * 3 + 2] = 0;       }       Para (Int Ⅰ. = 0; Ⅰ. < NUMPIXELS; Ⅰ.++)       { Para cada píxel...         Píxeles.setPixelColor(Ⅰ., Píxeles.Color(LightValue[Ⅰ. * 3], LightValue[Ⅰ. * 3 + 1], LightValue[Ⅰ. * 3 + 2]));         Píxeles.Mostrar();   Envíe los colores de píxeles actualizados al hardware.       }     }   }   Más   {     Para (Int Ⅰ. = 0; Ⅰ. < NUMPIXELS; Ⅰ.++)     { Para cada píxel...       Píxeles.setPixelColor(Ⅰ., Píxeles.Color(0, 0, 0));       Píxeles.Mostrar();   Envíe los colores de píxeles actualizados al hardware.     }   }
}

Vacío Bucle()
{   SimulateFire(Verdad, 0);
}

 

Una mirada a la estructura interna de la linterna:

Construcción de Lanterne en el interior

Y así era la linterna sin electrónica y difusores:

Concha vacía

 

Les deseo mucha diversión de reconstrucción y, como siempre, hasta la próxima vez.

Para arduinoProyectos para avanzados.

26 comentarios

Tobias Kuch

Tobias Kuch

Hallo Oliver,

Ja das ist korrekt.

Gruß
Tobias

Randolf Liß

Randolf Liß

HAllo , bin ganz neu und noch keine Erfahrung mit der Programmierung .

Kann man das ganze auch mit einem LED Stripe betreiben und wie würde der Code dann aussehen .

M.f.G.
Randolf

Oliver

Oliver

Hallo Tobias, vielen Dank für die schnelle Antwort. Mir würde der passende Befehl zum Ein- und Ausschalten des Ringes genügen. SimulateFire(false,0) / SimulateFire(true,0)?

Tobias Kuch

Tobias Kuch

Hallo Oliver
Dein Wunsch erfordert in nicht un aufwendiges Umschreiben des Codes und damit einen nicht unerheblichen Zeitaufwand, der hier an dieser Stelle leider nicht geleistet werden kann. Bitte stelle deine Anfrage an AZ Delivery mit der Bitte ein Extra Blog über dein Thema zu schreiben.
Viele Grüße
Tobias Kuch

Oliver Schneider

Oliver Schneider

Der Code funktioniert wunderbar auf einem Nano. Vielen Dank.
Ich würde den Ring über einen Lichtsensor bei Dunkelheit einschalten und bei einsetzender Dämmerung wieder abschalten. Wie kann ich das realisieren?

Matthias

Matthias

Ich versuche das ganze mit einem ESP32 NodeMCU, aber der Code wirft einen Memory error.
Gibt es einen Grund warum das auf einem ESP32 nicht funktionieren sollte?

Karli

Karli

Kondensator auf Power und ein 220R Wiederstand in der Steuerleitung sollte schon noch dabei sein.
MfG

Tobias

Tobias

Die Stromversorgung kann mit jedem Steckernetzteil mit 5 Volt / 1 Ampere Ausgang, oder mit dem gezeigten Spannungswandler mit jedem Netzteil 8-15 Volt / 1 Ampere Ausgang realisiert werden.

Frederick Hamm

Frederick Hamm

Womit kann man denn die Stromversorgung realisieren? Habt ihr irgendwelche Beispiele?

Rainer Sins

Rainer Sins

Zu den Fragen wo denn der Code sei:
Der Code ist bei mir mit Firefox und Chrome einwandfrei ersichtlich.
Welchen Browser verwendet ihr?
Grüße…

Tobias

Tobias

Der Code wurde noch im Artikel ergänzt. Ich habe als Diffusor auf dem Bild einfaches Papier verwendet, mit abgebildetem Ergebnis. Bei einem “professionellen” Diffusor (z.B aus einem alten LCD Monitor) erzielt man aber bestimmt noch bessere Ergebnisse.

Frank

Frank

Irgendwie kann ich keinen Code finden………….

Telemachos

Telemachos

Eine schöne Idee!
Sollte ###Code### noch durch den tatsächlichen Programmcode ersetzt werden?
Was wurde als Diffusor verwendet? Auf dem Foto erinnert es an Butterbrotpapier.
Und was ist “auf dem Speicher aufräumen”? Nie von gehört. 🤭

Jojo

Jojo

Hey,

wie genau wird die Stromversorgung hier realisiert?

Beste Grüße
Jojo

Jan

Jan

Wo finde ich den Code?

Alex

Alex

Hi,
leider ist der Code nicht ersichtlich.

Immanuel Schade

Immanuel Schade

Ja schön …. aber welcher Code? ;-)

Chr

Chr

Danke für den Beitrage, aber wo genau finde ich den Code?
/Chr.

A. Freudenstein

A. Freudenstein

Kann man den Code so veröffentlichen, dass er ladbar ist?
So kann ich mit dem Link nichts anfangen!
Axel F

masterflai

masterflai

Der Code fehlt noch.

masterflai

masterflai

Ein sehr schönes Projekt und ich musste schmunzeln, denn genau diese Laterne stand bei uns auch herum. Die wird in einem Herbstprojekt auf Vordermann gebracht. Danke für diese tolle Idee.

Jürgen

Jürgen

Guten Abend,
keine schlechte Idee, jedoch vermisse ich den Code. Oder habe ich etwas falsch gemacht??
So sieht es bei mir aus: "Wenn bis hierhin alles geklappt hat, wird der folgende Code auf den Nano hochgeladen:

###CODE###

Ein Blick in den inneren Aufbau der Laterne:"

Gruß Jürgen

Ralph Schraven

Ralph Schraven

Bitte jetzt noch den Code ;-)

Ralph Schraven

Ralph Schraven

Bitte noch den Code ;-)

Ralph

Hr. Drews

Hr. Drews

Hallo,

schöne Idee auch für andere Zwecke. Ich kann aber den Quell-Code nicht sehen / öffnen.

Werner

Werner

Sehr schöne Idee und wirklich preisgünstig aufzubauen. Wird der CODE noch nachgereicht? Bei mir war er am 26.8.19 im Blog nicht sichtbar.

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas