Lektion 8 - Transistoren und RGB LEDs

Lektion 8 - Transistoren und RGB LEDs Titelbild
Lernziele
  • RGB-LED beherrschen
  • Mit dem Zufall spielen
  • Listen in Action
  • Transistoren im echten Leben
377.png

RGB-LED

377.png

Wir können uns einfach nicht entscheiden. Ständig sind wir im Zweifel. Hätten wir die Suppe oder doch lieber die Frühlingsrolle als Vorspeise nehmen sollen? Das Himbeereis oder doch lieber das Erdbeereis? Die grüne oder doch lieber die rote LED? Aber die grüne ist auch so toll...

Zumindest für diese eine, existentielle LED-Farben-Krise gibt es eine Lösung. Und diese nennt sich RGB-LED. Diese super LED kann nämlich in grün, rot oder blau erstrahlen. Jede dieser Farben steuerst du über ein bestimmtes Bein der RGB-LED an. Das lange Bein dient diesmal als Ground. Bitte beachte das.

Und da die RGB-LED ziemlich nah mit der normalen LED verwandt ist, weißt du im Grunde genommen also schon, wie du die RGB-LED benutzen kannst. Es wird für dich also nun mal Zeit, ins kalte Wasser zu springen und ganz ohne Vorgaben deinen eigenen Code zu schreiben, um dieses Wunderwerk der Technologie zum Laufen zu bringen.

Jetzt bist du dran: Schreibe ein Programm, in dem die RGB immer für eine Sekunde lang eine andere Farbe zeigt. Mit ein wenig Knobeln und Fantasie solltest du das herausbekommen

378.png
Anschlüsse am Arduino Anschlüsse an der RGB LED
10 1. kurzes Bein
GND (Ground) Langes Bein
9 2. kurzes Bein
8 3. kurzes Bein
int rot = 10;
int gruen = 9;
int blau = 8;

void setup(){
 pinMode(rot, OUTPUT); 
 pinMode(gruen, OUTPUT);
 pinMode(blau, OUTPUT);
}

void loop(){
 digitalWrite(rot, HIGH);
  delay(1000);
 digitalWrite(rot, LOW); 
 digitalWrite(gruen, HIGH);
  delay(1000);
 digitalWrite(gruen, LOW);
 digitalWrite(blau, HIGH);
  delay(1000);
 digitalWrite(blau, LOW);
}

Wenn wir uns an Lektion 6 erinnern, haben wir da eine sehr coole Sache kennen gelernt und damit meinen wir diesmal nicht die Algorithmen, sondern Arrays. Mit einem Array können wir diverse Werte speichern, z.B. die einzelnen Pins für die RGB-LED. Um das Ganze mal in Aktion zu sehen, gibt es hier ein kleines Beispiel: mit der Zufallsfunktion random(4); wird eine zufällige Zahl von 0 bis 4 erzeugt. Aber jetzt mal ran an die Praxis!

379.png
Anschlüsse am Arduino Anschlüsse an der RGB LED
11 1. kurzes Bein
GND (Ground) Langes Bein
10 2. kurzes Bein
9 3. kurzes Bein
int leds[] = {11, 10, 9};
int zufallsPin;

void setup(){
  for(int i; i<3; i++){
    pinMode(leds[i], OUTPUT);
  }
}

void loop(){
  zufallsPin = random(3);
  digitalWrite(leds[zufallsPin], HIGH);
  delay(200);
  digitalWrite(leds[zufallsPin], LOW);
}

Schritt für Schritt

In Zeile 1 definieren wir ein Array mit drei Werten, welche den drei Pins entspricht, die wir benutzen. In der zweiten Zeile definieren wir noch die Variable zufallsPin und lassen diese erst einmal leer.

In der Setup Funktion benutzen wir eine for()-Schleife, um das gesamte Array durchzugehen und den pinMode() bei allen festzulegen.

In der loop()-Funktion wird in Zeile 11 zuerst der zufallsPin definiert. Da wir nur drei mögliche Pins haben, übergeben wir auch den Wert random(3). Dadurch werden alle Zahlen von 0 bis 2 zufällig erzeugt, da ein Array auch bei der internen Nummerierung von den Werten bei 0 anfängt, passt das sehr gut zusammen.

Mit leds[zufallsPin] können wir jetzt in Zeile 12 und 14 eine LED zufällig an und wieder ausschalten. Wir benutzen dabei das Array als Vereinfachung.

PWM und Zufall

Da die RGB-LED alle Grundfarben - rot, grün und blau darstellen kann, können damit dann auch andere Farben gemischt werden. Dafür ist es nur wichtig, die Intensität der Farben zu verändern. Das haben wir auch schon mit analogWrite(pin, intensität); kennen gelernt. Damit das ein wenig interessanter ist, können wir für die Helligkeit auch einen Zufallswert wählen und sehen was passiert. Für das nachfolgende Programm muss nur alles in der loop()-Schleife geändert werden.

void loop(){
  for(int i; i<3; i++){
    analogWrite(leds[i], random(0, 255));
  }
  delay(100);  
}

[p-break]

Aufgaben

  1. Erzeuge alle drei Sekunden eine zufällige Zahl und gebe diese aus.
  2. Erzeuge 300 Mal eine Zufallszahl zwischen 0 und 100. Rechne dann den durchschnittlichen Wert aus und tausche dich mit den anderen aus.
  3. Schließe 7 LEDs an den Arduino an und lasse diese nacheinander zufällig aufleuchten.
  4. Was unterscheidet den PNP vom NPN Transistor?

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!