Ampel­schal­tung mit einem LED-Stick

Lese­zeit: 7 Minu­ten
Navi­ga­ti­on

Der LED-Stick besteht aus meh­re­ren mit­ein­an­der ver­bun­de­nen RGB-LEDs. Jede besitzt einen eige­nen Con­trol­ler und kann ein­zeln ange­steu­ert wer­den. Der LED-Stick benö­tigt nur einen digi­ta­len Eingang.

RGB ist eine Mischung der Far­ben Rot, Grün und Blau. Jede Far­be kann von 0 bis 255 gesetzt wer­den, die Wer­te wer­den durch Kom­ma­ta getrennt.

 ➨Wei­te­re Infor­ma­tio­nen (exter­ner Link)

Die Ampel soll nach einem fest­ge­leg­ten Takt geschal­tet werden:

rotrot-gelbgrüngelb
5 Sekun­den1 Sekun­de3 Sekun­den1 Sekun­de
LEDs 8, 7, 6
LEDs 8, 7, 6, 5, 4LEDs 3, 2, 1LEDs 5, 4

Benö­tig­te Bauteile:

  • LED-Stick
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Ach­te auf die Polung. Sie kann bei den LED-Sticks ver­schie­de­ner Her­stel­ler unter­schied­lich sein.

Benö­tig­te Bibliothek:

Sketch → Biblio­thek ein­bin­den → Biblio­the­ken verwalten

Jedem Befehl muss der Name des LED-Sticks vor­an­ge­stellt werden.

Direkt wei­ter zur ➨ Pro­gram­mie­rung

Metho­den der Biblio­thek Adafruit_NeoPixel (Aus­wahl)

Metho­de Funk­ti­on
begin()LED-Streifen star­ten
num­Pi­xels()Anzahl der LEDs lesen
show()LED-Streifen ein­schal­ten
clear()LED-Streifen aus­schal­ten
setPixelColor(LED-Nummer, rot, grün, blau)Far­be einer LED setzen
LED-Nummer
rot -> 0 - 255
grün -> 0 - 255
blau -> 0 - 255
set­Bright­ness()Hel­lig­keit set­zen (0−255)
Color(rot, grün, blau)Far­be für alle LEDs setzen
rot -> 0 - 255
grün -> 0 - 255

oder:
Wert „für gepack­tes RGB“ ermitteln
long Far­be = LEDStreifen.Color(0, 0, 255);
blau -> 0 - 255
fill(gepacktes_RGB, Start, Ende)Far­be für die mit Start und Ende bezeich­ne­ten Pixel setzen
Berech­nung für "gepack­tes RGB"
Far­be = 65536 * Rot + 256 * Grün + Blau

Das Bei­spiel nutzt eini­ge Metho­den der Bibliothek:

Das dazu­ge­hö­ri­ge Pro­gramm. Beach­te die Kommentare.

# include <Adafruit_NeoPixel.h>

// digitaler Pin des LED-Sticks
int PinLEDStick = 7;

// Anzahl der LEDs
# define AnzahlLED 8

/*
  Initialisierung des LED-Sticks
  Parameter:
  LEDStick -> Name des LED-Sticks
  AnzahlLED -> Anzahl der LEDs
  PinLEDStick -> verwendeter Pin
  NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Sticks
*/
Adafruit_NeoPixel LEDStick = Adafruit_NeoPixel(AnzahlLED, PinLEDStick, NEO_GRB + NEO_KHZ800);

void setup()
{
  // NeoPixel Bibliothek initialisieren
  LEDStick.begin();

  // setBrightness(0..255)
  LEDStick.setBrightness(200);
}

void loop()
{
  // Farbe rot schrittweise von 0 bis 255 aufhellen
  for (int i = 0; i &lt; 255; i++)
  {
    // alle LEDs mit der Leuchtstärke i zum Leuchten bringen 
    for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels();    LEDNummer++)
    {
      LEDStick.setPixelColor(LEDNummer, LEDStick.Color(i, 0, 0));
      LEDStick.show();
    }
  }

  // LEDs von der maximalen Leuchtstärke 255 auf 0 abdunkeln
  for (int i = 255; i &gt; 0; i--)
  {
    for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
    {
      LEDStick.setPixelColor(LEDNummer, LEDStick.Color(i, 0, 0));
      LEDStick.show();
    }
  }

  // LED aus, kurze Pause
  LEDStick.clear();
  delay(1000);
 
  // Farbe grün schrittweise von 0 bis 255 aufhellen
  for (int i = 0; i &lt; 255; i++)
  {
    for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
    {
      LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, i, 0));
      LEDStick.show();
    }
  }

  // LEDs von der maximalen Leuchtstärke 255 auf 0 abdunkeln
  for (int i = 255; i &gt; 0; i--)
  {
    for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
    {
      LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, i, 0));
      LEDStick.show();
    }
  }

  // LED aus, kurze Pause
  LEDStick.clear();
  delay(1000);

  // Farbe blau schrittweise von 0 bis 255 aufhellen
  for (int i = 0; i &lt; 255; i++)
  {
    for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
    {
      LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, i));
      LEDStick.show();
    }
  }

  // LEDs von der maximalen Leuchtstärke 255 auf 0 abdunkeln
  for (int i = 255; i &gt; 0; i--)
  {
    for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
    {
      LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, i));
      LEDStick.show();
    }
  }

  // LED aus, kurze Pause
  LEDStick.clear();
  delay(1000);

  // vorwärts mit rot
  for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 0, 0));
    LEDStick.show();
    delay(100);
  }

  // rückwärts mit grün
  for (int LEDNummer = LEDStick.numPixels(); LEDNummer &gt;= 0 ; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 255, 0));
    LEDStick.show();
    delay(100);
  }

  // LED aus, kurze Pause
  LEDStick.clear();
  delay(1000);

  // vorwärts mit blau
  for (int LEDNummer = 0; LEDNummer &lt; LEDStick.numPixels(); LEDNummer++)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 255));
    LEDStick.show();
    delay(100);
  }

  // rückwärts mit gelb
  for (int LEDNummer = LEDStick.numPixels(); LEDNummer &gt;= 0 ; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 255, 0));
    LEDStick.show();
    delay(100);
  }

  // LED aus, kurze Pause
  LEDStick.clear();
  delay(1000);
}

Die Pro­gram­mie­rung der Ampel:

Der zeit­li­che Ablauf:

Bin­de die benö­tig­te Biblio­thek ein und defi­nie­re die Variablen.

include <Adafruit_NeoPixel.h>

int PinLEDStick = 7;

int AnzahlLED = 8;

/*
  Initialisierung des LED-Sticks
  Parameter:
  LEDStick -> Name des LED-Sticks
  AnzahlLED -> Anzahl der LEDs
  PinLEDStick -> verwendeter Pin
  NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Sticks
*/
Adafruit_NeoPixel LEDStick = Adafruit_NeoPixel(AnzahlLED, PinLEDStick, NEO_GRB + NEO_KHZ800);

Der setup-Teil:

void setup()
{
  // NeoPixel Bibliothek initialisieren
  LEDStick.begin();

  // setBrightness(0..255)
  LEDStick.setBrightness(200);
}

Der loop-Teil. Beach­te die Kommentare.

void loop()
{
  // Zählung beginnt oben
  // rot ein
  for (int LEDNummer = AnzahlLED; LEDNummer &gt; 4; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 0, 0));
    LEDStick.show();
  }
  delay(5000);

  // gelb an
  for (int LEDNummer = 4; LEDNummer &gt; 2; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 255, 0));
    LEDStick.show();
  }
  delay(1000);

  // rot aus
  for (int LEDNummer = AnzahlLED; LEDNummer &gt; 4; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
    LEDStick.show();
  }

  // gelb aus
  for (int LEDNummer = 4; LEDNummer &gt; 2; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
    LEDStick.show();
  }

  // grün an
  for (int LEDNummer = 2; LEDNummer &gt;= 0; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 255, 0));
    LEDStick.show();
  }
  delay(3000);

  // grün aus
  for (int LEDNummer = 2; LEDNummer &gt;= 0; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
    LEDStick.show();
  }

  // gelb an
  for (int LEDNummer = 4; LEDNummer &gt; 2; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 255, 0));
    LEDStick.show();
  }
  delay(1000);

  // gelb aus
  for (int LEDNummer = 4; LEDNummer &gt; 2; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
    LEDStick.show();
  }
}



Ver­wand­te Aufgaben:


Letzte Aktualisierung: 21. Nov 2020 @ 18:28