Far­ben­spie­le mit einer RGB-LED

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

Eine RGB-LED besitzt 3 klei­ne LEDs in den Grund­far­ben rot, grün und blau. Der län­ge­re Pin ist ent­we­der - (Com­mon Catho­de) oder + (Com­mon Anode).Die abge­bil­de­te LED wird an GND (-) ange­schlos­sen, die Ver­si­on mit Com­mon Anode wird an den 5 Volt Anschluss gesteckt.Die ver­wen­de­te Ver­si­on kannst du durch ein­fa­ches Umste­cken (GND/5V) her­aus­fin­den.
Du musst dir die ➨Puls­wei­ten­mo­du­la­ti­on zunut­ze machen, um nicht nur die Haupt­far­ben, son­dern auch die Zwi­schen­far­ben anzu­zei­gen. Ver­schie­de­ne Hel­lig­kei­ten der LEDs bewir­ken unter­schied­li­che Far­ben.
Die Hel­lig­keit wird mit ent­spre­chend der gemes­se­nen Span­nung gere­gelt: 0 (0 Volt) → aus. 255 → an (5 Volt)

Hier fin­dest du einen Über­blick über die ➨RGB-Farbcodes (exter­ner Link).

Benö­tig­te Bauteile:

  • RGB-LED
  • 3 Wider­stän­de > 100 Ω
  • Tas­ten­feld 1×4
  • 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)

Du kannst die Schal­tung auch mit ➨Tas­tern aufbauen.

Ob du die Schal­tung der RGB-LED rich­tig auf­ge­baut hast, kannst du mit die­sem Pro­gramm testen:

// Farbe rot an Pin 11
int LEDrot = 11;

// Farbe grün an Pin 10
int LEDgruen = 10;

// Farbe blau an Pin 9
int LEDblau = 9;

void setup() 
{   
  pinMode(LEDrot, OUTPUT);
  pinMode(LEDgruen, OUTPUT); 
  pinMode(LEDblau, OUTPUT); 
} 

void loop() 
{ 
  analogWrite(LEDrot, 255); 
  delay(1000); 
  analogWrite(LEDrot, 0); 
  analogWrite(LEDblau, 255);
  delay(1000); 
  analogWrite(LEDblau, 0);  
  analogWrite(LEDgruen, 255); 
  delay(1000); 
  analogWrite(LEDgruen, 0); 
}

Mit einem klei­nem Pro­gramm kannst du tes­ten, ob das Tas­ten­feld rich­tig ange­schlos­sen ist.
Die gedrück­te Tas­te wird im ➨Seri­el­len Moni­tor angezeigt.

/*
  Anschlüsse am Tastenfeld von links nach rechts
  GND D4 D5 D6 D7
*/
int TASTER_EINS = 5;  // Taste 1 
int TASTER_ZWEI = 4;  // Taste 2 
int TASTER_DREI = 7;  // Taste 3 
int TASTER_VIER = 6;  // Taste 4 

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

  // Vorwiderstand aktivieren 
  pinMode(TASTER_EINS, INPUT_PULLUP); 
  pinMode(TASTER_ZWEI, INPUT_PULLUP); 
  pinMode(TASTER_DREI, INPUT_PULLUP); 
  pinMode(TASTER_VIER, INPUT_PULLUP); 
} 

void loop() 
{ 
  if (digitalRead(TASTER_EINS) == LOW) 
  {   
    delay(100); 
    Serial.println("Taste 1 an Pin " + String(TASTER_EINS));        
  } 

  if (digitalRead(TASTER_ZWEI) == LOW)   
  {  
    delay(100);   
    Serial.println("Taste 2 an Pin " + String(TASTER_ZWEI));     
  } 
 
  if (digitalRead(TASTER_DREI) == LOW)  
  {  
    delay(100); 
    Serial.println("Taste 3 an Pin " + String(TASTER_DREI));    
  } 

  if (digitalRead(TASTER_VIER) == LOW)   
  {  
    delay(100);  
    Serial.println("Taste 4 an Pin " + String(TASTER_VIER));    
  } 
}

Jeder Tas­ten­druck soll eine Far­be schritt­wei­se hel­ler machen.
Set­ze die Variablen:

int LEDblau = 9; 
int LEDgruen = 10; 
int LEDrot = 11; 

int TASTER_ROT = 5;   // Taste 1 
int TASTER_GRUEN = 4; // Taste 2 
int TASTER_BLAU = 7;  // Taste 3 

// die Farben 
int rot = 0; 
int gruen = 0; 
int blau = 0;

Akti­vie­re im setup-Teil den Vor­wi­der­stand für die Taster:

void setup() 
{ 
  pinMode (LEDblau, OUTPUT);
  pinMode(LEDgruen, OUTPUT); 
  pinMode(LEDrot, OUTPUT); 

  // Vorwiderstand aktivieren 
  pinMode(TASTER_ROT, INPUT_PULLUP); 
  pinMode(TASTER_GRUEN, INPUT_PULLUP); 
  pinMode(TASTER_BLAU, INPUT_PULLUP); 
}

Der loop-Teil fragt jeden Tas­ter ab:

void loop()
{
  if (digitalRead(TASTER_ROT) == LOW)   
  {  
    rot ++;  

    // Wert darf 255 nicht übersteigen -> auf 0 setzen  
    if (rot > 255) rot = 0;   
  } 

  if (digitalRead(TASTER_GRUEN) == LOW)   
  { 
    gruen ++;

    // Wert darf 255 nicht übersteigen-> auf 0 setzen
    if (gruen > 255) gruen = 0;   
  }  

  if (digitalRead(TASTER_BLAU) == LOW)  
  { 
    blau ++;

    // Wert darf 255 nicht übersteigen -> auf 0 setzen
    if (blau > 255) blau = 0; 
  }  

Zum Schluss musst du noch die LEDs mit dem durch das Betä­ti­gen der Tas­te ein­ge­stell­ten Wert zum Leuch­ten bringen.

  analogWrite(LEDrot, rot);
  analogWrite(LEDgruen, gruen);
  analogWrite(LEDblau, blau);
  delay(20);
}

Ergän­ze das Pro­gramm: Tas­te 4 schal­tet alle LEDs ab.
Set­ze den Seri­el­len Moni­tor ein, um die jewei­li­gen Farb­wer­te anzuzeigen. 



Ver­wand­te Aufgaben:


Letzte Aktualisierung: 21. Nov 2020 @ 19:30