Tinkercad Projekt 7 - Adafruit Neopixel LED Streifen

Werbetafel

Animiere einen programmierbaren LED-Streifen.

Schwierigkeitsgrad: mittelschwer

Starte die Simulation. Der LED-Streifen zeigt ein paar Animationen.

Die Animationen laufen leider sehr laggig in der Simulation... In echt wäre das wesentlich flüssiger und schneller.


Für diese Übung musst du folgendes können:
Am besten hast du dir zusätzlich die Beschreibung von Projekt 1 durchgelesen.

Die Schaltung benutzt einen Adafruit Neopixel LED-Streifen, der in 4 Stücke geschnitten und dann mit angelöteten Leitungen wieder zu einem Streifen verbunden wurde. Die einzelnen Streifen sind untereinander angeordnet, sodass sie eine LED-Matrix (Übung 14) bilden. Ein krasseres Beispiel hierfür siehst du hier:



Ein echter RGB-LED Streifen mit Anschlussleitungen:
Abbildung 1 - realier LED-Streifen

Hardware

Wie man den LED-Streifen an den Arduino am besten anschließt, ist in diesem Tutorial beschrieben (auf englisch):
Abbildung 2 - Anschluss LED-Streifen

Zusammengefasst hat ein programmierbarer RGB-LED-Streifen 3 Anschlüsse:
  • GND (Minus-Pol) → Arduino GND
  • DIN (Daten) → beliebiger Arduino-Pin
  • +5V (Plus-Pol der 5V-Spannungsversorgung des LED-Streifens durch den Arduino) → Arduino 5V
Immer zwischen 2 LEDs kann man den LED-Streifen durchschneiden und dort Leitungen anlöten. Damit kann der Streifen auf die gewünschte Länge gekürzt oder neu angeordnet werden, z.B. als Matrix wie im Demo-Entwurf.
Abbildung 3 - LED-Streifen kürzen

Software

Adafruit stellt für deren Neopixel-LED-Streifen eine Bibliothek zur Verfügung. Wie du eine Bibliothek benutzt, hast du in Übung 16 kennen gelernt.

Die Bibliothek muss also erstmal importiert und dann konfiguriert werden:

// Bibliothek hier reinkopieren
#include "Adafruit_NeoPixel.h"

// Datenpin
const int PIN_LED = A0;

// Anzahl der LEDs im Streifen (kann man ja beliebig zuschneiden)
const int LED_ANZAHL = 32;

// LED-Streifen-Objekt instanziieren.
Adafruit_NeoPixel streifen(LED_ANZAHL, PIN_LED, NEO_GRB + NEO_KHZ800);
// Die Standardeinstellungen hatten für mich funktioniert, aber hier noch
// die möglichen Optionen:
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

Es können natürlich auch mehrere streifen-Objekte erzeugt werden, wenn man mehrere LED-Streifen gleichzeitig ansprechen will. In setup() muss der Streifen noch initialisiert werden:

// Initialisierung
streifen.begin(); // Initialisierung der LED-Streifen Bibliothek
streifen.show(); // wir haben noch nix konfiguriert, d.h. alle LEDs gehen erstmal AUS
streifen.setBrightness(255); // Helligkeit des Streifens (0..255)

Wichtig ist eigentlich nur streifen.begin(). Ab dann kann mit dem Streifen kommuniziert werden.

Für einzelne LEDs können Farben programmiert werden. Eine Farbe wird so definiert:

streifen.Color(rot, gruen, blau)

Wie sich die Rot-, Grün- und Blauanteile mischen, kannst du hier ausprobieren:
Das hast du auch schon ausführlich in Übung 12 und Projekt 1 gemacht. Hier ein paar Beispiele:

int aus = streifen.Color(000);         // aus
int rot = streifen.Color(25500);       // rot
int gruen = streifen.Color(02550);     // grün
int blau = streifen.Color(00255);      // blau
int gelb = streifen.Color(2552550);    // gelb
int weiss = streifen.Color(255255255); // weiß

Die einzelnen LEDs auf dem Streifen sind durchnummeriert. Sie starten bei der Verbindung zum Arduino mit 0 und zählen dann hoch.

Einen LED-Zustand setzt man mit dem Befehl:

streifen.setPixelColor(led_nummer, farbe);

Um also die 3. LED gezählt vom Arduino aus auf gelb zu setzen, wird folgender Befehl verwendet:

streifen.setPixelColor(2, streifen.Color(255, 255, 0));

Hast du alle LED-Farben so angepasst wie du es wolltest, musst du dies noch an den LED-Streifen senden. Es werden für alle LEDs im LED-Streifen die Farben neu gesetzt und die von dir programmierten Änderungen wirksam:

// Einstellung an LED-Streifen senden (und damit anzeigen)
streifen.show();

Versuch einmal bei ein paar LEDs auf dem Streifen eine Farbe einzustellen. Danach kannst du versuchen entweder mit Hilfe von Schleifen (Übung 9) oder mit Hilfe einer Zustandsmaschine (Übung 8) in loop() eine Animation zu programmieren.

Falls du die Schaltung nicht selbst aufbauen willst, hier der Starter:

Kommentare

Beliebte Posts aus diesem Blog

Tinkercad Übung 6 - LED mit Taster ansteuern

Tinkercad Übung 11 - LED dimmen

Tinkercad Übung 15 - Ultraschallsensor auslesen