Arduino Lektion #99: Dual Color (rot & grün) LED HW-477 / KY-029

In diesem Beitrag möchte ich das Dual Color Modul HW-477 / KY-029 vorstellen. Dieses Modul enthält eine LED welche in den Farben rot & grün leuchten kann.

Dual Color LED KY-029
Dual Color LED KY-029

Das Modul trägt auf der Platine die Bezeichnung HW-477, wenn man jedoch nach diesem im Internet oder vorallem bei Ebay, Amazon usw. suchen möchte sollte man jedoch nach der Bezeichnung KY-029 suchen.

Bezug

Dieses kleine Modul habe ich über ebay.de für 2,99€ inkl. Versandkosten erstanden.
In meinem Fall kam der Händler aus Deutschland und somit dauerte die Lieferung nur knapp 3 Werktage.

Technische Daten des Moduls HW-477

  • Betriebsspannung 5V
  • Abmaße
    • Platine 19mm x 15mm
    • Gesamt 43mm x 15mm

Aufbau & Schaltung

Das Modul KY-029 verfügt über 3 Pins, eines ist mit „-“ und eines mit „S“ das in der Mitte ist nicht markiert. Mit einem Messgerät kann man nun prüfen was das in der Mitte sein wird oder man nimmt an das eine LED welche über 2x Anode (+) und 1x Kathode (-) verfügt auch zwei digitale Eingänge („S“ = Signal) benötigt und einmal GND („-„).

Für den Aufbau der Schaltung benötigst du:

In der Schaltung werden die Pins D10 & D11 am Arduino Nano verwendet. Diese Pins sind digitale PWM Pins, somit können wir diese nicht nur einfach auf HIGH oder LOW setzen sondern können auch analoge Werte zwischen 0 und 255 setzen und somit die Helligkeit der LED verändern.

Schaltung: Bi Color 3mm LED KY-029 am Arduino Nano
Schaltung: Bi Color 3mm LED KY-029 am Arduino Nano

In der nachfolgenden Schaltung habe ich das Modul KY-029 wiefolgt angeschlossen:

  • weiß, GND,
  • orange, digitaler Pin D11,
  • grün, digitaler Pin D10
Schaltung - Dual Color LED KY-029 am Arduino Nano
Schaltung – Dual Color LED KY-029 am Arduino Nano

Schaltung – Dual Color LED KY-029 am Arduino Nano

Quellcode

Beispiel 1 – Wechselblinker

Als erstes kleines Beispiel zeige ich dir wie du einen einfachen Wechselblinker erzeugst, dabei wird die Frequenz über eine Konstante im Quellcode bestimmt.

#define ledRot 11 // Pin für die rote LED am digitalen Pin D11
#define ledGruen 10 // Pin für die gruene LED am digitalen Pin D10

//Konstante für die Pause zwischen dem Blinken
const int PAUSE = 250;

void setup () {
  //setzen das der digitale Pin welcher an die Pins der LEDs führt als Ausgang dient.
   pinMode (ledRot, OUTPUT);
   pinMode (ledGruen, OUTPUT);

   //initiales setzen der Ausgänge auf LOW (Status - AUS)
   digitalWrite(ledRot, LOW);
   digitalWrite(ledGruen, LOW);
}
void loop () {
  //aufrufen der Methode ledBlink mit dem Parameter für den digitalen Pin
  ledBlink(ledRot);
  ledBlink(ledGruen);
}

/**
 * Methode zum blinken einer LED
 * pin - der digitale Pin an welchem die LED angeschlossen ist
 */
void ledBlink(int pin){
  //deaktivieren der LED
  digitalWrite(pin, LOW);
  //ein kleine Pause
  delay(PAUSE);
  //aktivieren der LED
  digitalWrite(pin, HIGH);
  //ein kleine Pause
  delay(PAUSE);
  //deaktivieren der LED
  digitalWrite(pin, LOW);
}

Video

 

Beispiel 2 – LED Fade mit Farbwechsel

Wenn du das Modul wie oben beschrieben über die beiden digitalen PWM Pins D10 & D11 angeschlossen hast, dann kannst du auch einen Fade Effekt erzeugen (langsames auf und ableuchten der LED). 

#define ledRot 11 // Pin für die rote LED am digitalen Pin D11
#define ledGruen 10 // Pin für die gruene LED am digitalen Pin D10

//Konstante für die Pause zwischen dem Blinken
const int PAUSE = 10;

void setup () {
  //setzen das der digitale Pin welcher an die Pins der LEDs führt als Ausgang dient.
  pinMode (ledRot, OUTPUT);
  pinMode (ledGruen, OUTPUT);

  //initiales setzen der Ausgänge auf LOW (Status - AUS)
  digitalWrite(ledRot, LOW);
  digitalWrite(ledGruen, LOW);
}
void loop () {
  //aufrufen der Methode fadeLed mit dem Parameter für den digitalen Pin
  fadeLed(ledRot);
  fadeLed(ledGruen);
}

/**
   Methode zum faden einer LED
   pin - der digitale Pin an welchem die LED angeschlossen ist
*/
void fadeLed(int pin) {
  //eine For Schleife von 0 bis 255 in Schritten von jeweils 1
  for (int i = 0; i < 255; i++) {
    //setzen des PWM Signals
    setAnalogValue(pin, i);
  }

  //eine For Schleife von 255 bis 0 in Schritten von jeweils 1
  for (int i = 255; i > 0; i--) {
    //setzen des PWM Signals
    setAnalogValue(pin, i);
  }
}

/**
 * Methode zum setzen eines Analoges PWM Signals am digitalen Pin
 * pin - der digitale Pin 
 * value - ein Ganzzahliger Wert zwischen 0 und 255
 */
void setAnalogValue(int pin, int value) {
  //setzen eines PWM Signales am digitalen Pin
  analogWrite(pin, value);
  //eine kleine Pause
  delay(PAUSE);
}

Video

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.