Digi-Dot-Booster an RPI mit Python

Startseite Foren LEDs, Controller, Player Digi-Dot-Booster an RPI mit Python

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #742
    RS_Tobi
    Teilnehmer

    Guten 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 ausgegeben

    import os
    import sys
    import time
    import spidev

    # SK6812 Einstellungen

    DELAY = 0.04
    LED_COUNT = 4

    spi = spidev.SpiDev()

    def initSPI():
    # open /dev/spidev0.1 (CS1 Pin wird verwendet)
    spi.open(0, 1)
    spi.mode = 0b00
    return

    def initLEDs():
    # BOOSTER_INIT, Anzahl der LEDs, 24 bits (WS2812) pro LED oder 32 bits (SK6812)
    spi.writebytes([0xB1, LED_COUNT, 32])
    time.sleep(DELAY)
    return

    def 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

    #760
    Gamadril
    Moderator

    Hi 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.

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.