Far­be und Hel­lig­keit eines LED-Strei­fens mit Poten­tio­me­tern manipulieren

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

Zwei Poten­tio­me­ter die­nen dazu, Far­ben und Hel­lig­keit eines LED-Strei­fens zu manipulieren.

So sieht es aus (Dreh­po­ten­tio­me­ter am Grove-Shield):

Der LED-Strei­fen 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. Er 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-Farb­codes (exter­ner Link abge­ru­fen am 25.4.22).

Bei­spie­le:

Benö­tig­te Bauteile:

  • LED-Strei­fen
  • 2 belie­bi­ge Poten­tio­me­ter (Dreh- oder Schiebepotentiometer)
  • 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)

Das eigent­li­che Pro­gramm:
Als Ers­tes musst du eine Biblio­thek installieren:

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

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

Funk­tio­nen der Biblio­thek Adafruit_NeoPixel (Aus­wahl)

Schlüs­sel­wortAkti­on
begin()LED-Ring star­ten
num­Pi­xels()Anzahl der LEDs lesen
show()LED-Ring ein­schal­ten
clear()LED-Ring 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
blau -> 0 - 255

Bei­spiel rot:
int Far­be = LEDStreifen.Color(255, 0, 0);

Bei­spiel grün:
int Far­be = LEDStreifen.Color(0, 255, 0);

Bei­spiel blau:
int Far­be = LEDStreifen.Color(0, 0, 255);
fill(Farbe, Start, Ende)Far­be für die mit Start und Ende bezeich­ne­ten Pixel setzen

Bin­de die benö­tig­te Biblio­thek ein und defi­nie­re die Varia­blen.
Beach­te die Kommentare.

# include "Adafruit_NeoPixel.h"

// Pin des LED-Streifens
# define STREIFEN 7

// Anzahl der LEDs -> muss angepasst werden
# define AnzahlLED 15

// Anschlüsse der Potentiometer
# define PotiHelligkeit A0
# define PotiFarbe A1

/*
  Initialisierung des LED-Streifens
  Parameter:
  LED-Streifen -> Name des LED-Streifens
  AnzahlLED -> Anzahl der LEDs
  STREIFEN -> verwendeter Pin
  NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Streifens
*/
Adafruit_NeoPixel LEDStreifen = Adafruit_NeoPixel(AnzahlLED, STREIFEN, NEO_GRB + NEO_KHZ800);

// Farben in RGB-Schreibweise definieren
# define ROT LEDStreifen.Color(255, 0, 0)
# define ROSA LEDStreifen.Color(255, 50, 100)

# define BLAU LEDStreifen.Color(0, 0, 255)
# define HELLBLAU LEDStreifen.Color(100, 100, 255)

# define GRUEN LEDStreifen.Color(0, 255, 0)
# define HELLGRUEN LEDStreifen.Color(0, 100, 153)

# define GELB LEDStreifen.Color(255, 255, 0)
# define ORANGE LEDStreifen.Color(200, 50, 0)

# define PINK LEDStreifen.Color(255, 20, 147)
# define MAGENTA LEDStreifen.Color(139, 0, 139)


Der set­up-Block star­tet den Seri­el­len Moni­tor und initia­li­siert den LED-Streifen.

void setup() 
{
  Serial.begin(9600);

  // NeoPixel Bibliothek initialisieren
  LEDStreifen.begin();
}

Der loop-Teil.
Beach­te die Kommentare.

void loop() 
{
  // LEDs löschen
  LEDStreifen.clear();

  /*
    PotiHelligkeit abfragen
    map -> Bereich von 0 bis 1023 
    (dem mit analogRead gelesenen Wert des Potentiometers)
    auf 0 bis 255 übertragen
    (Helligkeit des LED-Streifens)
  */
  int Helligkeit = map(analogRead(PotiHelligkeit), 0, 1023, 0, 255);

  // Helligkeit setzen
  LEDStreifen.setBrightness(Helligkeit);

  /*
   PotiFarbe abfragen
   Bereich 0 bis 1023
   Bereiche festlegen -> nach jeweils 128 Werten neue Farbe
  */
  switch (analogRead(PotiFarbe)) 
  {
    case 0 ... 128:
      LEDStreifen.fill(ROSA, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    case 129 ... 256:
      LEDStreifen.fill(ROT, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    case 257 ... 384:
      LEDStreifen.fill(HELLBLAU, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    case 385 ... 512:
      LEDStreifen.fill(BLAU, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    case 513 ... 640:
      LEDStreifen.fill(HELLGRUEN, 0, AnzahlLED);
      LEDStreifen.show();
      break;
    case 641 ... 768:
      LEDStreifen.fill(GRUEN, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    case 769 ... 896:
      LEDStreifen.fill(GELB, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    case 897 ... 1023:
      LEDStreifen.fill(ORANGE, 0, AnzahlLED);
      LEDStreifen.show();
      break;

    default:
      LEDStreifen.clear();
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 7. Okt 2023 @ 11:38