"Geister"-Neopixel

Hallo,
ich habe bei meiner Suche im Forum das Problem bisher nicht finden können, deswegen mache ich mal ein neues Topic auf.
Bei meiner neuen Box scheint der ESP einen nicht vorhandenen Neopixel vor dem ersten Neopixel anzusteuern.
Ich habe statt eines Neopixelrings vier Streifen mit Neopixeln im Rechteck angeordnet und miteinander verlötet. Insgesamt sind es 34 LEDs (dämliche Anzahl für die Animationen, aber das ist was anderes…). Wenn ich in den Einstellungen die 34 LEDs einprogrammiere wird der letzte Neopixel nicht angesteuert. Wenn ich 35 einprogrammiere wird der letzte Pixel mit angesteuert, allerdings verschwindet bei der Animation der Leuchtpunkt zwischen dem letzen und dem ersten Pixel, weil der ESP offensichtlich einen Pixel als ersten Pixel ansteuert, der nicht vorhanden ist.
Hat jemand eine Ahnung was die Ursache dafür sein könnte? Ich habe gelesen, dass es ein Timing-Problem sein könnte, aber keinen Schimmer wie ich das beheben könnte.
Alternativ: Wäre es als schmutziger Fix möglich, den ersten Pixel aus den Animationen herauszunehmen und vom letzten direkt zum 2. Pixel zu springen?
Vielen Dank schonmal!

Hardware:
mini4L- Platine mit D32 pro LiFePO4
WS 2813 LED Strip mit 144pixel/meter

Vielleicht kannst ja mal mit dem LED-Offset experimentieren. Falls du die aktuelle DEV-Version geflasht hast, kannst das auch über das Webinterface einstellen.

Vielen Dank für den Input!
Durch den LED-Offset kann man ja leider nur den Startpunkt der Animation verschieben und nicht den Umfang der für die Animation einbezogenen LEDs.

Ich habe mich aber auf deinen Tip hin aber nochmal tiefer in den Code gelesen.
Unter „LED.cpp“ wird in Zeile 57 (Master-Branch 14.12.2024) mit

static CRGBSet indicator(leds(0, NUM_INDICATOR_LEDS - 1));

der Umfang der für die Animation benutzen LEDs im Neopixel-Array definiert, durch die Änderung der 0 auf eine 1 wird der erste Pixel nicht mehr eingeschlossen und das Problem scheint gelöst.

@Jonas1 ist da ein genereller Fehler im Code? Kannst Du deinen Fix etwas genauer erklären?

Zunächst mal muss ich einschränken, dass ich (bis auf ein bisschen Programmieruntericht vor 20 Jahren in der Schule) keine Ahmung vom Programmieren habe…

Das Problem scheint zu sein, dass meine Box aus irgendwelchen Gründen denkt, dass es vor der ersten richtigen LED (LED 1) eine weitere LED (LED 0) gäbe, die aber nicht vorhanden ist.

In der Animation springt also bei mir der Leuchtpunkt von der letzten LED zur LED 0 und verschwindet damit kurz, bevor er bei LED 1 wieder auftaucht.

Durch meine Änderung im Code wird die LED 0 aus dem Bereich der für die Animation verwendeten LEDs ausgeschlossen. Somit „überspringt“ die Animation die LED 0 und geht dementsprechend direkt von der letzen auf die erste LED über, so wie es sein soll.

Mögliche Gründe (meine Spekulation)

  1. Falsch verkabelt
  2. Probleme bei der Ansteuerung (Laut Chat-GPT ist das Problem der „zusätzlichen“ LED vor der ersten nicht so selten. Mögliche Ursachen seien u.a. Interrupts/Timing/Datenrate, GPIO ohne Pullup oder die 3,3 V Spannung)
  3. Mögliches Codeproblem (halte ich für unwahrscheinlich)
    Bei der Festlegung des Bereiches der LEDs für die Animationen wird der Bereich als 0 bis Anzahl der LED (X - 1) festgelegt.
    Der Bereich beginnt also bei 0.
    Intuitiv wäre ja eher bei 1 zu beginnen, aber ihr werdet bei der Erstellung des Codes ja gute Gründe dafür gehabt haben.
    Die Tatsache das ich der Einzige mit dem Problem bin lässt mich vermuten, dass der Start bei 0 korrekt ist.
    Einzige Einschränkung wäre, dass diese Einstellung möglicherweise nur für die fertigen Pixelringe passt, aber nicht wenn man einen „Ring“ aus Streifen selbst zusammenlötet (was vielleicht einfach eine Seltenheit unter den Designs ist).

Ich hoffe ich konnte das Problem etwas verständlicher rüberbringen, sodass auch meine Lösung Sinn ergibt.
Am Ende ist es nur ein schmutziger Fix, weil das eigentliche Problem der falschen LED weiterhin besteht. Aber für meine Zwecke reicht das völlig, vor allem weil ich keine Nachteile dadurch sehen.

In der Informatik fängt man halt bei 0 an zu zählen :slight_smile:.

Informatiker am Bahnhof: „0, 1, 2, wo ist mein dritter Koffer?!“ :wink:

1 „Gefällt mir“

Ein Informatiker und seine Frau:
Sie: „Schatz, wir haben kein Brot mehr. Könntest du bitte zum Supermarkt gehen und eines holen? Und wenn sie Eier haben, bring sechs Stück mit.“
Er: „Klar Schatz, mach ich!“
Nach kurzer Zeit kommt er wieder zurück und hat sechs Brote dabei.
Sie: „Warum nur hast du sechs Brote gekauft?!?“
Er: „Sie hatten Eier.“

:rofl:

3 „Gefällt mir“