LED Stripe wechsel blinken am Arduino UNO R3 – Teil2 einzelne LEDs steuern

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:

Aufbau der Schaltung

Hier nun die Schaltung aus dem ersten Beispiel.

Schaltung – zwei 8fach LED Stripes am Arduino UNO R3

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();
}

Video

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert