Sunfounder Sensor Kit – RGB-LED

rgbledDer nächste Sensor aus dem 37-sensor-Kit ist eigentlich keiner. Auf der Platine befindet sich eine 3-Farben-LED, sowie 3 SMD-Widerstände. Diesmal ist also ein gefahrloser Betrieb an den 3.3V-Pins möglich. Die 3-Farben-LED hat 4 Anschlüsse. Je einen für Rot, Grün und Blau, sowie ein gemeinsames Minus.

Die Software aus dem Github Repository von Sunfounder funktioniert zwar und lässt die LED bunt blinken und flackern, aber so richtig durchschaubar ist sie nicht. Deshalb hier meine eigene Version:

Nach dem Programmstart können über die Tastatur Werte (von 0-aus bis 100-hell) für die 3 Farben (rot, grün und blau) eingegaben werden. Anschließend werden die LEDs entsprechend mit Hilfe von Software PWM geschaltet. Anschließend können weitere Werte eingegeben werden.

Damit lassen sich alle möglichen Farbkombinationen interaktiv ausprobieren.

Den Code gibt es hier, oder auf Github unter:
https://github.com/lnitram/37-sensor-kit

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time

pins = {"red":11,"green":12,"blue":13}
colors = {}

GPIO.setmode(GPIO.BOARD)

for pin in pins:
    GPIO.setup(pins[pin],GPIO.OUT)
    colors[pin] = GPIO.PWM(pins[pin],100.)
    colors[pin].start(0)

def changeColor(r,g,b):
    print "Changing color to ",r,g,b
    print
    colors["red"].ChangeDutyCycle(r)
    colors["green"].ChangeDutyCycle(g)
    colors["blue"].ChangeDutyCycle(b)

def getValue(color):
    v = 0
    try:
        v = int(raw_input(color + ": "))
    except ValueError:
        print "Value is not a number, setting to 0"

    if v < 0:
        print "value too small, setting to 0"
        v = 0
    if v > 100:
        print "value too high, setting to 100"
        v = 100

    return v

try:
    while True:
        r=getValue("Red")
        g=getValue("Green")
        b=getValue("Blue")
        changeColor(r,g,b)

except KeyboardInterrupt:
    for pin in pins:
        colors[pin].stop()
    GPIO.cleanup()

Schreibe einen Kommentar

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