In diesem Beitrag möchte ich dir zeigen wie du einzelne LEDs am LED Stripe steuern kannst. Ich möchte hierzu die Schaltung aus dem Beitrag LED Stripe wechsel blinken am Arduino UNO R3 wiederverwenden.

Benötigte Ressourcen für dieses Projekt
Für den Nachbau des Projektes benötigst du:
- Arduino UNO R3*,
- zwei 8fach LED Stripes*,
- zwei 220 Ohm Widerstände*,
- zehn Breadboardkabel*,
- ein 400 Pin Breadboard*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau der Schaltung
Hier nun die Schaltung aus dem ersten Beispiel.
Programmierung in der Arduino IDE
Im ersten Beitrag hatte ich dir bereits gezeigt wie du die beiden LED Stripes in jeweils einer Farbe zum wechsel blinken bringst. Nun soll es jedoch darum gehen wie du die 16 LEDs vom Typ WS2812B einzeln ansteuern und in jeweils einer anderen Farbe zum leuchten bringen kannst.
ansteuern einzelner LEDs
Das Array mit den einzelnen LEDs „leds[…]“ benötigen wir für den Zugriff.
// Wieviele LEDs sind auf dem LED Stripe? #define NUM_LEDS 8 // Ein Array mit den LEDs CRGB leds[NUM_LEDS*2];
Ein Array beginnt mit dem Zähler 0! D.h. für den Zugriff auf die erste Stelle muss man leds[0] schreiben.
Wollen wir zunächst die erste und fünfte LED einzeln ansteuern und jeweils einmal in die Farbe „rot“ aufleuchten lassen.
#include <FastLED.h> #define NUM_LEDS 8 CRGB leds[NUM_LEDS*2]; void setup() { FastLED.addLeds<WS2812B, 3, GRB>(leds, 0, NUM_LEDS); FastLED.addLeds<WS2812B, 4, GRB>(leds, NUM_LEDS, NUM_LEDS); for(int i=0;i<NUM_LEDS*2;i++){ leds[i] = CRGB::Black; FastLED.show(); } } void loop() { leds[0] = CRGB::Red; leds[4] = CRGB::Red; FastLED.show(); delay(125); leds[0] = CRGB::Black; leds[4] = CRGB::Black; FastLED.show(); delay(125); }
Video
Muster auf den Stripes anzeigen
Nachdem wir nun wissen wie man einzelne LED auf einem LED-Streifen über einen Index ansteuern kann, möchte ich nun auf dem ersten Streifen ein Muster programmieren.
#include <FastLED.h> #define NUM_LEDS 8 CRGB leds[NUM_LEDS*2]; void setup() { FastLED.addLeds<WS2812B, 3, GRB>(leds, 0, NUM_LEDS); FastLED.addLeds<WS2812B, 4, GRB>(leds, NUM_LEDS, NUM_LEDS); for(int i=0;i<NUM_LEDS*2;i++){ leds[i] = CRGB::Black; FastLED.show(); } } void loop() { leds[0] = CRGB::Red; leds[1] = CRGB::Red; leds[2] = CRGB::Orange; leds[3] = CRGB::Orange; leds[4] = CRGB::Orange; leds[5] = CRGB::Orange; leds[6] = CRGB::Red; leds[7] = CRGB::Red; FastLED.show(); delay(125); leds[0] = CRGB::Red; leds[1] = CRGB::Red; leds[2] = CRGB::Black; leds[3] = CRGB::Black; leds[4] = CRGB::Black; leds[5] = CRGB::Black; leds[6] = CRGB::Red; leds[7] = CRGB::Red; FastLED.show(); delay(125); }
Video
beide LED Stripes mit verschiedenen Muster
Im zweiten Schritt haben wir auf einem LED Stripe ein Muster programmiert, nun wollen wir dieses Muster einmal invertiert auf dem anderen LED-Streifen anzeigen.
#include <FastLED.h> #define NUM_LEDS 8 CRGB leds[NUM_LEDS*2]; void setup() { FastLED.addLeds<WS2812B, 3, GRB>(leds, 0, NUM_LEDS); FastLED.addLeds<WS2812B, 4, GRB>(leds, NUM_LEDS, NUM_LEDS); for(int i=0;i<NUM_LEDS*2;i++){ leds[i] = CRGB::Black; FastLED.show(); } } void loop() { leds[0] = CRGB::Red; leds[1] = CRGB::Red; leds[2] = CRGB::Orange; leds[3] = CRGB::Orange; leds[4] = CRGB::Orange; leds[5] = CRGB::Orange; leds[6] = CRGB::Red; leds[7] = CRGB::Red; leds[8] = CRGB::Orange; leds[9] = CRGB::Orange; leds[10] = CRGB::Red; leds[11] = CRGB::Red; leds[12] = CRGB::Red; leds[13] = CRGB::Red; leds[14] = CRGB::Orange; leds[15] = CRGB::Orange; FastLED.show(); delay(125); leds[0] = CRGB::Red; leds[1] = CRGB::Red; leds[2] = CRGB::Black; leds[3] = CRGB::Black; leds[4] = CRGB::Black; leds[5] = CRGB::Black; leds[6] = CRGB::Red; leds[7] = CRGB::Red; leds[8] = CRGB::Orange; leds[9] = CRGB::Orange; leds[10] = CRGB::Black; leds[11] = CRGB::Black; leds[12] = CRGB::Black; leds[13] = CRGB::Black; leds[14] = CRGB::Orange; leds[15] = CRGB::Orange; FastLED.show(); delay(125); }
Video
Zufälliges aufleuchten einer LED
Zum Schluss möchte ich dir nun zeigen wie du eine zufällige LED in einer zufälligen Farbe aufleuchten lassen kannst.
#include <FastLED.h> #define NUM_LEDS 8 CRGB leds[NUM_LEDS*2]; CRGB colors[5] = {CRGB::Red, CRGB::Blue, CRGB::Yellow, CRGB::White, CRGB::Green}; void setup() { FastLED.addLeds<WS2812B, 3, GRB>(leds, 0, NUM_LEDS); FastLED.addLeds<WS2812B, 4, GRB>(leds, NUM_LEDS, NUM_LEDS); for(int i=0;i<NUM_LEDS*2;i++){ leds[i] = CRGB::Black; FastLED.show(); } } void loop() { long randomLedNumber = random(0, 15); long randomColorNumber = random(0, 5); leds[randomLedNumber] = colors[randomColorNumber]; FastLED.show(); delay(125); leds[randomLedNumber] = CRGB::Black; FastLED.show(); }
1 thought on “LED Stripe wechsel blinken am Arduino UNO R3 – Teil2 einzelne LEDs steuern”