Wie kann man mehrere (2 oder 4) LedStrips vom Typ WS2812B mittels .Net Core separat ansteuern?

  • Hallo allerseits und danke für die Aufnahme im Forum


    Ausgangslage:

    Ich möchte 2 Led-Strips vom Typ WS2812B (3-adrig) mit dem Raspi ansteuern.

    Dafür nehme ich die .Net-Core Library Iot.Device.Ws28xx und instanziere mit new Ws2812b(spi, ledCount)

    Ich habe SPI0 sowie SPI1 (dtoverlay) aktiviert und mit MOSI0 sowie MOSI1 verbunden (gemäss https://de.pinout.xyz/ ).

    5V und GND laufen beide über den Raspi, meine Leds haben nur 8 und 20 Pins, somit benötige ich keine externe Stromquelle.


    Ich kann beide Strips separat ansteuern, allerdings funktioniert es nur über SPI0 korrekt.

    Über SPI1 werden die Leds fehlerhaft angezeigt.


    Auf Github gibt es bereits einen offenen Bug, der das Problem beschreibt:

    https://github.com/dotnet/iot/issues/1682


    Irgendwo habe ich gelesen, dass nur SPI0 mit DMA funktioniert, SPI1 aber nicht. Daher verhält sich SPI0 nicht gleich wie SPI1.

    Das erhöhen der ClockFrequency hat nur bedingt geholfen, ab dem Wert 4_600_000 ist die permanente Helligkeit zwar weg, aber es gibt dafür Pixelfehler.


    Frage:

    Wie kann man mehrere (2 oder 4) LedStrips vom Typ WS2812B mittels .Net Core separat ansteuern?


    System:

    uname -a

    raspberrypi 5.15.32-v7+ #1538 SMP Thu Mar 31 19:38:48 BST 2022 armv7l GNU/Linux


    cat /etc/os-release

    PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"

    NAME="Raspbian GNU/Linux"

    VERSION_ID="11"

    VERSION="11 (bullseye)"

    VERSION_CODENAME=bullseye

    ID=raspbian

    ID_LIKE=debian

    HOME_URL="http://www.raspbian.org/"

    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"

    BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


    Danke für die Unterstützung und viele Grüsse

    Raoul

  • Also ich habe meine WS2812B mit einem ESP angesteuert. Dabei steuere ich auch verschiedene Segmente an - allerdings ist das "nur" Software. Die Segmente sind hintereinander geschaltet und verhalten sich Hardware technisch wie eine Lichterkette. Die verwendete Library ist dafür vorgesehen, dass man mehrere Seqmente definiert...

    Vielleicht ist das für Dich auch ein gangbarer Weg?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup: