Regenbogenring
Teil des Abschnitts Displays und Sensoren der Arduino-Journey von Coddy. Lektion 17 von 24.
Rot, Grün und Blau für einen Regenbogen auszuwählen, ist schwierig. Farbton ist einfacher: eine Zahl, die sich einmal um den Farbkreis dreht, von Rot über Gelb, Grün, Cyan, Blau und Magenta wieder zurück zu Rot.
ring.ColorHSV(hue) wandelt einen Farbton in eine Farbe um. Der Farbton reicht von 0 bis 65535: 0 ist Rot, etwa 21845 ist Grün, etwa 43690 ist Blau, und 65536 wäre wieder Rot.
Um einen Regenbogen über 16 Pixel zu verteilen, gib jedem Pixel einen Schritt von 65536 / 16 = 4096 mehr als dem vorherigen. Pixel 15 benötigt 61440, mehr als ein int aufnehmen kann. Speichere den Farbton daher in einem long und schreibe die Zahl als 4096L; das L sorgt dafür, dass auch bei der Multiplikation long verwendet wird:
for (int i = 0; i < 16; i++) {
long hue = i * 4096L;
ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();Aufgabe
MittelMale einen Regenbogen rund um den Ring:
- Pixel 0 rot (Farbton 0)
- jedes nächste Pixel ist mit
ring.ColorHSV()um weitere 4096 auf dem Farbkreis verschoben - so durchlaufen die 16 Pixel einmal den gesamten Kreis
Klicke auf Run und dann auf Check.
Probier es selbst
#include <Adafruit_NeoPixel.h>
// 16 Pixel, Daten an Pin 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
// weise jedem Pixel einen eigenen Farbton zu, Rot bei Pixel 0
ring.show();
}
void loop() {
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Displays und Sensoren
Übe selbstständig: Arduino-Playground