0. Vorbereitung: Bibliothek installieren
- Den Bibliotheksmanager links in der Arduino-Umgebung öffnen. (Icon sieht aus wie ein Bücherregal)
- Dann „Adafruit NeoPixel“ eingeben (ohne Anführungszeichen)
- 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;
}
- Genauso kann man auch runterzählen:
- 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);
}
}