Langsam geht die Sommerpause zu Ende, da kann man mal wieder über Projekte bloggen!
Inspiriert von Richard Clarkson baue ich eine Gewitterwolkenlampe. Kurz gesagt, eine Lampe in Wolkenform, in der mit LEDs Wetterleuchten oder Blitze simuliert werden. Das Original „The Cloud“ ist beim Designer direkt bestellbar für $3360, ich versuche bei den Kosten darunter zu bleiben. 😉
Licht…
Als Leuchtmittel benutze ich die aus unserem Arduino Videogame bekannten WS2812b RGB LEDs, die mit einem Arduino Pro Mini angesteuert werden. Zur Ansteuerung habe ich verschiedene Ansätze, die ich ausprobieren möchte.
Erster Ansatz: Muster fest einprogrammieren als dreidimensionales Array von Integern.
#define FRAMES 6 #define LEDS 6 #define R 0 #define G 1 #define B 2 uint8_t PATTERN[FRAMES][LEDS][3] = { { {127,0,0},{0,127,0},{0,0,127},{127,127,0},{127,0,127},{0,127,127} }, { {0,127,127},{127,0,0},{0,127,0},{0,0,127},{127,127,0},{127,0,127} }, { {127,0,127},{0,127,127},{127,0,0},{0,127,0},{0,0,127},{127,127,0} }, { {127,127,0},{127,0,127},{0,127,127},{127,0,0},{0,127,0},{0,0,127} }, { {0,0,127},{127,127,0},{127,0,127},{0,127,127},{127,0,0},{0,127,0} }, { {0,127,0},{0,0,127},{127,127,0},{127,0,127},{0,127,127},{127,0,0} } };
Im Programm wird dann in einem Timer-Interupt jeweils eine Zeile auf die LEDs geschrieben.
volatile unsigned long flashCount = 0; void flash() { int FRAME = flashCount%FRAMES; for(uint16_t i = 0; i<NUMPIXEL; i++) { strip.setPixelColor(i, 0); } /* strip.setPixelColor(flashCount%NUMPIXEL,strip.Color(127,127,127)); */ for(int I=0; I<LEDS; I++) { strip.setPixelColor(I,strip.Color(PATTERN[FRAME][I][R],PATTERN[FRAME][I][G],PATTERN[FRAME][I][B])); } strip.show(); flashCount++; }
Dazu entwickle ich noch einen Designer, mit dem ich die passenden Headerdatei einfacher als von Hand erzeugen kann.
Zweiter Ansatz: prozedurale Muster
Bei diesem Ansatz würde ich nicht das Muster fest als Pixelfolge vorgeben, sondern die einzelnen Pixel anhand einer mathematischen Funktion steuern. Dazu gibt es noch nichts zum zeigen, weil es bisher nur als Idee existiert.
…und Sound
Natürlich darf bei einem ordentlichen Gewitter der Donner nicht fehlen! Im Original ist ein 2.1 Soundsystem mit Bluetooth verbaut, ich werde im ersten Schritt auf den Subwoofer verzichten und nur zwei Lautsprecher einbauen. Als Soundquelle kommt ein Raspberry Pi zum Einsatz. Der Pi bekommt dann noch ein Web-Interface und eine Verbindung zum Arduino, um dann die Wolke übers Netz zu steuern.
Hardware
Das wird wahrscheinlich die größte Baustelle. Das Original scheint aus einer Art Fiberglas zu bestehen, das kann man leider auf den wenigen Fotos schlecht erkennen. Bisher habe ich noch keine Idee, wie ich den Körper der Lampe bauen werde.
Soweit erstmal neues von mir, wenn es Fortschritte gibt, blogge ich wieder.