Zum Inhalt

LED Strip Bricklet

LED Strip Bricklet

LED Strip Bricklet

Damit kann man LED Strips ansteuern.

Initialisierung

Code um das Bricklet anzusteuern

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Adressierung
# Diese beiden Zeilen nur 1x pro Programm nutzen:
HOST = "localhost"
PORT = 4223

# UID des Bricklets
ledstripUID = "xxx" # UID aus dem Brick Viewer

# Import der wichtigen Funktionen
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_led_strip_v2 import BrickletLEDStripV2

# Verbindung herstellen
ipcon = IPConnection() # Create IP connection
ledstripBricklet = BrickletLEDStripV2(ledstripUID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd

# LED-Strip-Typ des 30er Streifens
ledstripBricklet.set_chip_type(2812)
# RGB-Eigenschaften setzen
ledstripBricklet.set_channel_mapping(18)
# Auffrischung alle 100 ms
ledstripBricklet.set_frame_duration(100)

# Unsere Strips haben 30 LEDs
numLEDs = 30
# alle 30 LEDs aus
rgb_values = [0, 0, 0]*numLEDs

Die letzten Zeilen diener der Initialisierung unseres LED-Streifens. Das LED-Strip-Bricklet unterstützt noch viele andere LED-Strips.

Funktionen im Hauptprogramm

Funktionen des LED-Strip-Bricklet

ledstripBricklet.set_led_values(index, value)
stellt die LEDS auf die Farben entsprechend den Werten in value, beginnend bei index:

  • value: Ab diesem Index werden die Werte von value auf die LEDs geschrieben. Möchte man ab dem ersten LED die Werte überschreiben, so wählt man 0. Ab dem 2. LED den Wert 3. Ab dem 3. LED den Wert 6, usw.
  • value: Ein Array aus RGB-Werten. Jeweils 3 Werte nacheinander stellen die RGB-Werte für ein LED. Die Werte können dabei zwischen 0 und 255 liegen. ledstripBricklet.set_led_values(0, [255,0,0, 0,255,0, 0,0,255]) stellt die ersten 3 LEDS auf rot, blau und grün. Üblicherweise wird am besten ein value-Array übergeben, dass die Farbe für alle LEDs setzt. In unserem Fall wird dazu rgb_values mit 3*30 = 90 Elementen im Punkt «Verbindung herstellen» bereits als Beispiel erzeugt. Damit werden alle 30 LEDs gesetzt.

LED Strip Bricklet

Beispiel:

ledstripBricklet.set_led_values(6, [0, 255, 255]])
stellt das 3 LED auf cyan.

Callback-Funktionen

Callback-Funktion registrieren

ledstripBricklet.set_frame_duration(1000)
ledstripBricklet.register_callback(ledstripBricklet.CALLBACK_FRAME_STARTED, ledstripCallback)

wobei ledstripCallback der Name der gewünschten Funktion ist, welche aufgerufen werden soll. ledstripCallback sollte dann so definiert werden: def ledstripCallback(id): da immer eine ID übergeben wird, die man aber im Normalfall nicht braucht.

Die Callback-Funktion wird immer aufgerufen, wenn die LEDs «aufgefrischt» werden. Die Auffrischungsrate kann mit ledstripBricklet.set_frame_duration(value) gesetzt werden. Wobei value der Wert in ms sein muss. Im oberen Abschnitt «Verbindung herstellen» wird 100 ms eingestellt.

Beispiel für ledstripCallback

def ledstripCallback(id):
    # Wir setzen für alle LEDs die gleichen, beliebigen RGB-Werte
    rgb_values[0::3]= [random.randint(1,255)]*num_leds
    rgb_values[1::3]= [random.randint(1,255)]*num_leds
    rgb_values[2::3]= [random.randint(1,255)]*num_leds

    ledstripBricklet.set_led_values(0, rgb_values)