regenbogen
Bauteil: WS2812B LED-Strip ยท Kategorie: output
Ein Regenbogen laeuft ueber den ganzen Strip.
Material
| Anzahl | Bauteil |
|---|---|
| 1 | micro:bit V2.2 |
| 1 | WS2812B LED-Strip (5 V) |
| 1 | Batteriebox 3x 1.5 V (4,5 V) oder 5-V-Netzteil |
| 3 | Jumperkabel / JST-SM-Pigtail |
Masse fuers CAD: ../../../../hardware/output/ws2812b-led-strip/
Verkabelung
Identisch zu erste-farben:
P0 -> DIN + der 4.5V-Box -> 5V - der Box -> GND + micro:bit GND
Details: Bauteil-README.
Foto der Verkabelung
Nach dem Test ein Foto in wiring/ ablegen und hier einbinden:
Wie der Code funktioniert
farbrad(pos)rechnet einen Wert0..255in eine Regenbogenfarbe um (rot -> gruen -> blau -> rot) und dimmt sie aufHELLIGKEITherunter.- Jede LED bekommt einen anderen Startwert (
i * 256 // ANZAHL), so liegt ein ganzer Regenbogen auf dem Strip. versatzwird pro Durchlauf groesser -> der Regenbogen wandert.
Programm
Ganzer Code, Quelle main.py (hier automatisch eingefuegt):
# Sample: regenbogen (WS2812B / NeoPixel LED-Strip)
# Board: BBC micro:bit V2.2
# Sprache: MicroPython
#
# Ziel: Ein Regenbogen laeuft ueber den ganzen Strip.
#
# --------------------------------------------------------------------------
# Verkabelung (wie "erste-farben")
# Strip DIN -> P0 Strip 5V -> 4.5 V-Box / 5V-Netzteil
# Strip GND -> - der Box UND micro:bit GND (gemeinsame Masse)
# --------------------------------------------------------------------------
from microbit import *
import neopixel
ANZAHL = 8
HELLIGKEIT = 40 # 0..255 - klein halten (Strom!)
np = neopixel.NeoPixel(pin0, ANZAHL)
def farbrad(pos):
# pos 0..255 -> Regenbogenfarbe (rot, gruen, blau)
pos = pos % 256
if pos < 85:
r, g, b = 255 - pos * 3, pos * 3, 0
elif pos < 170:
pos -= 85
r, g, b = 0, 255 - pos * 3, pos * 3
else:
pos -= 170
r, g, b = pos * 3, 0, 255 - pos * 3
# auf die gewuenschte Helligkeit herunterrechnen
return (r * HELLIGKEIT // 255, g * HELLIGKEIT // 255, b * HELLIGKEIT // 255)
versatz = 0
while True:
for i in range(ANZAHL):
np[i] = farbrad(i * 256 // ANZAHL + versatz)
np.show()
versatz = (versatz + 4) % 256 # groesser = schneller
sleep(50)
Auf den micro:bit uebertragen
https://python.microbit.org/v/3 -> Code einfuegen -> Connect -> Send to micro:bit. Details: ../../../../docs/setup.md.
Erwartetes Verhalten
- Ein weicher Regenbogen liegt auf dem Strip und wandert langsam
HELLIGKEITgroesser = heller (aber mehr Strom),versatz + Ngroesser = schneller
Moegliche Erweiterungen
- Tempo / Helligkeit mit Knopf A/B
- Regenbogen nur ueber einen Teil des Strips
- mit
microphone.sound_level()die Farben auf Musik reagieren lassen