Startseite › Foren › LEDs, Controller, Player › Digi-Dot-Booster an RPI mit Python
Schlagwörter: SK6812 RGBW Python DS18S20 Raspberry
- Dieses Thema hat 1 Antwort und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 8 Jahre, 5 Monaten von
Gamadril.
-
AutorBeiträge
-
6. Dezember 2016 um 6:00 #742
RS_Tobi
TeilnehmerGuten Morgen.
das der Digi-Dot_Booster einfach ist, dass kann ich nur bestätigen.
Zumindest kommt man schnell zu einem Ergebnis.Jedoch „stehe ich gerade auf dem Schlauch“ und suche nach Hilfe.
Vielleicht kann mir hier jemand helfen dass mein denken wieder funktioniert…. 😉
Ich versuche derzeit einzelne LEDS eines SK6812 RGBW Stripe mit diversen
Funktionen zu verknüpfen. Somit soll mir das LED eine Visualisierung darstellen.Nun habe ich ein Problem.
Mein Python Skript funktioniert sozusagen schon, aber ich schaffe es nicht, dass die
LEDs in diesem Zustand bleiben den der Python Skript errechnet hat.z.B. LED0 soll blau, LED1 soll grün, LED2 soll gelb werden.
Dann läuft mein Skript durch und es passiert LED0 an & aus, LED1 an & aus, LED3 an (Programmende) und bleibt in diesem Zustand.Ich hänge hier mal ein Beispiel mit an.
Man kann das ganze mit Sicherheit smarter lösen, aber nicht als ANFÄNGER! 🙂
(INFO!! LED0,1,2, Beispiel von oben ist nicht die Funktion im Skript)#DS18S20 auslesen und visuell mit SK6812 darstellen
#SK6812 via DIGI DOT BOOSTER uber SPI ausgegebenimport os
import sys
import time
import spidev# SK6812 Einstellungen
DELAY = 0.04
LED_COUNT = 4spi = spidev.SpiDev()
def initSPI():
# open /dev/spidev0.1 (CS1 Pin wird verwendet)
spi.open(0, 1)
spi.mode = 0b00
returndef initLEDs():
# BOOSTER_INIT, Anzahl der LEDs, 24 bits (WS2812) pro LED oder 32 bits (SK6812)
spi.writebytes([0xB1, LED_COUNT, 32])
time.sleep(DELAY)
returndef clear():
# BOOSTER_SETRGBW 0x000000, BOOSTER_SETALL, BOOSTER_SHOW
spi.writebytes([0xA2, 0, 0, 0, 0, 0xA5, 0xB2])
time.sleep(DELAY)
return#DS18S20 Auswertung t1
def aktuelleTemperatur():
# 1-wire Slave Datei lesen
file = open(‚/sys/bus/w1/devices/28-031573211bff/w1_slave‘)
filecontent = file.read()
file.close()# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split(„\n“)[1].split(“ „)[9]
temperature = float(stringvalue[2:]) / 1000# Temperatur ausgeben
rueckgabewert = temperature
print(temperature)
return(rueckgabewert)t1 = aktuelleTemperatur()
#SK6812 Ansteuerung led1
initSPI()
initLEDs()
t1 = aktuelleTemperatur()if t1 < 25:
spi.writebytes ([0xA2, 255, 255, 0, 0, 0xA4, 0])if t1 > 25:
spi.writebytes ([0xA2, 255, 0, 0, 0, 0xA4, 0])
spi.writebytes ([0xB2])#DS18S20 Auswertung t2
def aktuelleTemperatur():
# 1-wire Slave Datei lesen
file = open(‚/sys/bus/w1/devices/28-031573211bff/w1_slave‘)
filecontent = file.read()
file.close()# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split(„\n“)[1].split(“ „)[9]
temperature = float(stringvalue[2:]) / 1000# Temperatur ausgeben
rueckgabewert = temperature
print(temperature)
return(rueckgabewert)t2 = aktuelleTemperatur()
#SK6812 Ansteuerung led2
initSPI()
initLEDs()
t2 = aktuelleTemperatur()if t2 < 25:
spi.writebytes ([0xA2, 255, 255, 0, 0, 0xA4, 1])if t2 > 25:
spi.writebytes ([0xA2, 255, 0, 0, 0, 0xA4, 1])
time.sleep(DELAY)
spi.writebytes ([0xB2])Danke Tobi
4. Januar 2017 um 10:35 #760Gamadril
ModeratorHi Tobi,
hast du es inzwischen hinbekommen?Wenn es der komplette Code ist, denke ich liegt das Problem beim zweifachen Aufruf von
initSPI() und initLEDs()
auch die Funktionsdefinition von aktuelleTemperatur scheint es doppelt zu geben. -
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.