Ampel­schal­tung mit einem LED-Stick

Lese­zeit: 7 Minu­ten

Lösung
Seite als PDF
Navi­ga­ti­on

Ein LED-Stick soll als Ampel geschal­tet werden.

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.

 Hier fin­dest du einen Über­blick über die 🔗 RGB-Farbcodes (exter­ner Link abge­ru­fen am 25.4.22).

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:

oder: 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

[table “43” not found /]

Das Bei­spiel nutzt eini­ge Funk­ti­onn 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 < 255; i++)
  {
    // alle LEDs mit der Leuchtstärke i zum Leuchten bringen 
    for (int LEDNummer = 0; LEDNummer < 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 > 0; i--)
  {
    for (int LEDNummer = 0; LEDNummer < 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 < 255; i++)
  {
    for (int LEDNummer = 0; LEDNummer < 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 > 0; i--)
  {
    for (int LEDNummer = 0; LEDNummer < 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 < 255; i++)
  {
    for (int LEDNummer = 0; LEDNummer < 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 > 0; i--)
  {
    for (int LEDNummer = 0; LEDNummer < 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 < 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 >= 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 < 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 >= 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 > 4; LEDNummer--)
  {
    LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 0, 0));
    LEDStick.show();
  }
  delay(3000);

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

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

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

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

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

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

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

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 29. Nov 2022 @ 11:16