Beleuchtungs-Workshop LEDs am Arduino

0. Vorbereitung: Bibliothek installieren

  1. Den Bibliotheksmanager links in der Arduino-Umgebung öffnen. (Icon sieht aus wie ein Bücherregal)
  2. Dann „Adafruit NeoPixel“ eingeben (ohne Anführungszeichen)
  3. Die „Adafruit NeoPixel by Adafruit“-Bibliothek über den Button „INSTALL“ installieren.

1. Programm: LEDs ansteuern

Verkabelung genau so durchführen:

  • „D“ oder „Data“ oder „DO“ an Pin 7 am Arduino
  • 5V an 5V am Arduino
  • GND an GND am Arduino

Die wichtigsten Befehle:

  • Die Bibliothek ganz oben im Programm einbinden: #include <Adafruit_NeoPixel.h>
  • Die LEDs als Objekt anlegen (noch vor dem Setup): Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);
  • Im Setup-Teil einmal ausführen, damit die LEDs angesprochen werden können: meineLEDS.begin();
  • Die LEDs zurücksetzen: meineLEDS.clear();
  • Eine LED ansprechen: meineLEDS.setPixelColor(0, meineLEDS.Color(255,0,0));
    • Die erste Zahl ist die Nummer der LED (beginnend bei 0)
    • der zweite Teil ist der Farb-Code (siehe unten)
  • Die gesetzten Farb-Befehle ausführen: meineLEDS.show();
  • Pause für 500 Millisekunden (eine halbe Sekunde): delay(500);
  • Farbcodes:
    • Jede Farbe mit 0 bis 255 steuerbar.
    • 0 ist dunkel, 255 ist maximale Helligkeit
    • Befehl: meineLEDS.Color(Zahl1, Zahl2, Zahl3)
    • Zahl1 = Rotanteil; Zahl2 = Grünanteil; Zahl3 = Blauanteil

Aufgabe: Lasse die drei LEDs in rot, grün und blau leuchten.

Lösung
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
  meineLEDS.begin();
  meineLEDS.clear();
}

void loop() {

 meineLEDS.setPixelColor(0, meineLEDS.Color(255,0,0));
 meineLEDS.setPixelColor(1, meineLEDS.Color(0,255,0));
 meineLEDS.setPixelColor(2, meineLEDS.Color(0,0,255));
 meineLEDS.show();

}

2. Programm: Pulsieren

Verkabelung bleibt gleich.

Die wichtigsten Befehle:

  • Eine for-Schleife beginnen:
    for(int i = 0; i < 255; i++) {
    Code, der ausgeführt wird pro Schleifendurchgang;
    }
    • Genauso kann man auch runterzählen:
      for (int i = 255; i > 0; i–) {
      euer Code;
      }
  • Tipp: i entspricht der Helligkeit der LED an Stelle einer Zahl

Aufgabe 2.1: Lasse die erste LED in rot pulsieren.

Lösung
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
  meineLEDS.begin();
  meineLEDS.clear();
}

void loop() {
  
   

  for(int i = 0; i < 255; i++) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(i, 0, 0));
    meineLEDS.show();
    delay(10);
  }

  for (int i = 255; i > 0; i--) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(i, 0, 0));  
    meineLEDS.show();
    delay(10);  
  }

}

Aufgabe 2.2: Ändere die Farbe, in der die LEDs pulsieren. Zum Beispiel sollen die LEDs weiss leuchten. Lasse danach alle LEDS gleichzeitig pulsieren.

Lösung
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
  meineLEDS.begin();
  meineLEDS.clear();
}

void loop() {
  
   

  for(int i = 0; i < 255; i++) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(i, i, i));
    meineLEDS.setPixelColor(1, meineLEDS.Color(i, i, i));
    meineLEDS.setPixelColor(2, meineLEDS.Color(i, i, i));
    meineLEDS.show();
    delay(10);
  }

  for (int i = 255; i > 0; i--) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(i, i, i));
    meineLEDS.setPixelColor(1, meineLEDS.Color(i, i, i));
    meineLEDS.setPixelColor(2, meineLEDS.Color(i, i, i));  
    meineLEDS.show();
    delay(10);  
  }

}

3. Programm: Farbwechsel

Code zum Kopieren:

#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
  meineLEDS.begin();
  meineLEDS.clear();
}

void loop() {
  

  for(int i = 0; i < 255; i++) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(255, 0, i));
    meineLEDS.show();
    delay(10);
  }

  for (int i = 255; i > 0; i--) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(255, 0, i));  
    meineLEDS.show();
    delay(10);  
  }
}

Aufgabe: Ändere den Farbwechsel zu folgendem: Grün zu Blau und zurück. Lasse alle LEDs den Farbwechsel vollziehen.

Lösung
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
  meineLEDS.begin();
  meineLEDS.clear();
}

void loop() {
  

  for(int i = 0; i < 255; i++) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(0, 255, 255-i));
    meineLEDS.show();
    delay(10);
  }

  for (int i = 255; i > 0; i--) {
    meineLEDS.setPixelColor(0, meineLEDS.Color(0, 255, 255-i));  
    meineLEDS.show();
    delay(10);  
  }
}

4. Programm: Lauflichter

Aufgabe: Programmiere ein Licht, das von einem Ende zum anderen Ende wandert und wieder zurück (in einer Endlosschleife). Hierfür kennst du bereits alle notwendigen Befehle.

Lösung
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
 meineLEDS.begin();
 meineLEDS.clear();

}

void loop() {
  meineLEDS.setPixelColor(1, meineLEDS.Color(0, 0, 0)); 
  meineLEDS.setPixelColor(0, meineLEDS.Color(255, 0, 0));
  meineLEDS.show();
  delay(250);
  meineLEDS.setPixelColor(0, meineLEDS.Color(0, 0, 0));
  meineLEDS.setPixelColor(1, meineLEDS.Color(255, 0, 0));  
  meineLEDS.show();
  delay(250);
  meineLEDS.setPixelColor(1, meineLEDS.Color(0, 0, 0));
  meineLEDS.setPixelColor(2, meineLEDS.Color(255, 0, 0)); 
  meineLEDS.show();
  delay(250);
  meineLEDS.setPixelColor(2, meineLEDS.Color(0, 0, 0));
  meineLEDS.setPixelColor(1, meineLEDS.Color(255, 0, 0)); 
  meineLEDS.show();
  delay(250);

}

Aufgabe: Kombiniere das Pulsieren der einzelnen Lichter mit dem Lauflicht. Kannst du sogar gleichzeit eine LED abblenden, während die nächste bereits aufblendet?

Lösung
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel meineLEDS(3, 7, NEO_GRB + NEO_KHZ800);

void setup() {
 meineLEDS.begin();
 meineLEDS.clear();

}

void loop() {
  
  for (int i = 0; i<256; i++) {  
    meineLEDS.setPixelColor(0, meineLEDS.Color(255-i, 0, 0));
    meineLEDS.setPixelColor(1, meineLEDS.Color(i, 0, 0));  
    meineLEDS.show();
    delay(5);
  }

  for (int i = 0; i<256; i++) {  
    meineLEDS.setPixelColor(1, meineLEDS.Color(255-i, 0, 0));
    meineLEDS.setPixelColor(2, meineLEDS.Color(i, 0, 0));  
    meineLEDS.show();
    delay(5);
  }
  
  for (int i = 0; i<256; i++) {  
    meineLEDS.setPixelColor(2, meineLEDS.Color(255-i, 0, 0));
    meineLEDS.setPixelColor(1, meineLEDS.Color(i, 0, 0));  
    meineLEDS.show();
    delay(5);
  }

   for (int i = 0; i<256; i++) {  
    meineLEDS.setPixelColor(1, meineLEDS.Color(255-i, 0, 0));
    meineLEDS.setPixelColor(0, meineLEDS.Color(i, 0, 0));  
    meineLEDS.show();
    delay(5);
  }
  
  
}