WS2812B LED Stripe mit Fernbedienung steuern.

Hallo liebes Forum,

ich habe mir ein WS2812B LED Streifen zugelegt und diesen an den Arduino angeschlossen. Es läuft auch alles Perfekt nur würde ich gerne mit Hilfe einer IR-Fernbedienung verschiedene Programme, Farben und anderes abspielen lassen. Ich habe schon versucht das Standard Adafruit strandtest-Skript mit einer IR-Fernbedienung zu konfrontieren, dies hat aber nicht funktioniert. Mein Ardunino ist ein Arduino Uno und ich hab auch noch einen Arduino Mega 2560 R3 da. Mein LED Streifen hat 60 LEDs.

Meine Frage ist nun wie bekomme ich die IR-Fernbedienung mit dem Skript zum laufen?
LG

Deine Angaben sind nicht ausreichend.

Es hat nicht funktioniert ist keine Aussage mit wir etwas anfangen können.

Was funktioniert nicht ?
Welche Libraries setzt du ein ?
Wo ist dein Sketch ?

IR-Empfang und WS2812B vertragen sich auf Grund des engen zeitlichen Spielraums der WS2812B meist nicht miteinander.
Entweder andere LED mit getrennter Daten-/Taktleitung (die sind variabler) oder den IR-Empfang auf einen anderen MC auslagern (z.B. Attiny 85).

Gruß Tommy

Hi

Das könnte man schon zusammen bringen - dazu muß aber der WS2812B für die Zeit des IR-Empfang 'tot' bleiben - also keine Änderungen an den einzelnen Lichtpunkten.
Während der WS2812B angesteuert wird, darf der IR-Empfang Diesen nicht stören, der entsprechende Interrupt müsste abgeschaltet/verhindert werden - wie schon geschrieben wurde, sind die WS2812B etwas pienzig, was das Timing angeht.
Erst, wenn der Stripe die neuen Daten erhalten hat, könnte man den IR-Empfang scharf schalten.
Jetzt muß aber so viel Zeit sein, daß man mindestens 2 IR-Pakete empfangen könnte - da Du kaum am Anfang eines Paket mit Zuhören anfängst, ist die erste Übertragung für Dich verloren.
Da Du den Anfang auch nur gang knapp verfehlt haben kannst, muß die Lücke auch für die 2.te Übertragung ausreichend groß sein.
Hier sehe ich jetzt das Problem, daß dann der Stripe bestenfalls blinkend angesteuert werden kann - also alle zig Dutzend Millisekunden vll. neue Daten - da ist von flüssigem Farbverlauf dann nicht mehr viel über.

Wenn Du den IR-Empfang extern erledigst (z.B. auf einem anderen Arduino oder einem ATtiny), kannst Du diesen µC regelmäßig fragen, ob neue Daten vorhanden sind und Diese 'En passant' (im Vorübergehen) dort abfragen.
Dann wirst Du ggf. immer noch ein 'Glitch' in der Ansteuerung des Stripe haben, aber eben nur Einen.

Kommunikation zwischen den beiden µCs per I²C - der ATtiny könnte auch eine Art 'Fertig'-Pin hochziehen, wenn neue Daten vorrätig sind - daß der Stripe-Arduino mit einem digitalRead den Empfang direkt abbrechen kann, sofern Nichts Neues da ist.

Sollen per Fernbedienung nur feste Farbwerte übergeben werden, oder soll der Stripe auch Faden/Lichtpunkte durchlaufen lassen - also eigenständige Veränderungen an dem Stripe?

MfG

postmaster-ino:
.....
Kommunikation zwischen den beiden µCs per I²C - der ATtiny könnte auch eine Art 'Fertig'-Pin hochziehen, wenn neue Daten vorrätig sind - daß der Stripe-Arduino mit einem digitalRead den Empfang direkt abbrechen kann, sofern Nichts Neues da ist.
.....

Und hier findet der TO einen Bauvorschlag dazu.

Also ich hatte mal was

HotSystems:
Deine Angaben sind nicht ausreichend.

Es hat nicht funktioniert ist keine Aussage mit wir etwas anfangen können.

Was funktioniert nicht ?
Welche Libraries setzt du ein ?
Wo ist dein Sketch ?

Ich hatte mal ein Sketch dieses ist allerdings bei einem Computer Reset verloren gegangen. Außerdem hat dieses eh nicht funktioniert.

postmaster-ino:
Hi

Das könnte man schon zusammen bringen - dazu muß aber der WS2812B für die Zeit des IR-Empfang 'tot' bleiben - also keine Änderungen an den einzelnen Lichtpunkten.
Während der WS2812B angesteuert wird, darf der IR-Empfang Diesen nicht stören, der entsprechende Interrupt müsste abgeschaltet/verhindert werden - wie schon geschrieben wurde, sind die WS2812B etwas pienzig, was das Timing angeht.
Erst, wenn der Stripe die neuen Daten erhalten hat, könnte man den IR-Empfang scharf schalten.
Jetzt muß aber so viel Zeit sein, daß man mindestens 2 IR-Pakete empfangen könnte - da Du kaum am Anfang eines Paket mit Zuhören anfängst, ist die erste Übertragung für Dich verloren.
Da Du den Anfang auch nur gang knapp verfehlt haben kannst, muß die Lücke auch für die 2.te Übertragung ausreichend groß sein.
Hier sehe ich jetzt das Problem, daß dann der Stripe bestenfalls blinkend angesteuert werden kann - also alle zig Dutzend Millisekunden vll. neue Daten - da ist von flüssigem Farbverlauf dann nicht mehr viel über.

Wenn Du den IR-Empfang extern erledigst (z.B. auf einem anderen Arduino oder einem ATtiny), kannst Du diesen µC regelmäßig fragen, ob neue Daten vorhanden sind und Diese 'En passant' (im Vorübergehen) dort abfragen.
Dann wirst Du ggf. immer noch ein 'Glitch' in der Ansteuerung des Stripe haben, aber eben nur Einen.

Kommunikation zwischen den beiden µCs per I²C - der ATtiny könnte auch eine Art 'Fertig'-Pin hochziehen, wenn neue Daten vorrätig sind - daß der Stripe-Arduino mit einem digitalRead den Empfang direkt abbrechen kann, sofern Nichts Neues da ist.

Sollen per Fernbedienung nur feste Farbwerte übergeben werden, oder soll der Stripe auch Faden/Lichtpunkte durchlaufen lassen - also eigenständige Veränderungen an dem Stripe?

MfG

Klingt ja kompliziert...ich habe zwar schon ein bisschen Erfahrung, bin aber eigentlich noch ein Anfänger..
Es sollten außerdem schon auch Programme durchlaufen wie "Rainbow" usw.

Hi

Rainbow klingt nach Fade durch den gesamten Farbraum - also nicht wirklich Etwas, wo man zig Mal die Sekunde für einige Millisekunden die IR-Signale mitliest.

Hast Du einen zweiten Arduino? (Wenn Nein: warum eigentlich nicht?)
Dann kannst Du beide Sketche separat auf je einen der Arduino aufspielen.
In den LED-Arduino packst Du eine Routiene, Die per I²C (Master) nachfragt, ob neue Daten vorhanden sind.
In den IR-Arduino (Slave, eine beliebige ID reicht, nei anderen I²C-Komponenten halt eine Nummer, Die frei ist) eine Routiene, Die auf diese Anfrage reagiert und die IR-Codes raus gibt - oder ein 'nix Neues'.
'Gleichzeitig' liest dieser Arduino die IR-Signale mit und speichert Diese, setzt intern einen Merker, daß 'Neues' da ist.
Dieser wird, wenn die Daten versendet wurden, auf 'nix Neues' zurück gesetzt.

Nimm DIr einen Zettel und schreibe die Abläufe, möglichst detailliert, auf - daraus entstehen Deine Programme (also für beide Arduino).

Wenn Das funktioniert, könnte man, um etwas Geld einzusparen, die IR-Geschichte in einen ATtiny pressen - muß aber nicht.
So teuer sind zumindest die Clone nicht, daß man hiermit auch noch anfangen müsste.

MfG

Ritsch74:
Klingt ja kompliziert...

Aus meiner Sicht hast Du zwei Möglichkeiten:

  • Zwei Prozessoren, eine Steilvorlage von HotSystems hast Du schon erhalten.
  • APA102 anstelle WS2812, die vertragen sich mit IR-Fernbedienung. Siehe mein Projekt mit einer LED-Uhr.

Ritsch74:
Also ich hatte mal was
Ich hatte mal ein Sketch dieses ist allerdings bei einem Computer Reset verloren gegangen. Außerdem hat dieses eh nicht funktioniert.

Das ist eine so tolle und aussagekräftige Information an der wir alle deine Problem jetzt erkennen und auch lösen können. Echt super.

Und wenn ich meinen Computer resette, startet der neu und es ist alles noch so vorhanden wie vorher.
Außer evtl. die Daten, die ich zuletzt geändert habe.

Klingt ja kompliziert...ich habe zwar schon ein bisschen Erfahrung, bin aber eigentlich noch ein Anfänger..
Es sollten außerdem schon auch Programme durchlaufen wie "Rainbow" usw.

Na dann wird es jetzt Zeit, dass du es lernst. Also wo ist dein Problem, leg los.
Genug Informationen hast du schon bekommen.
Wenn es nicht reich, gibt es mehr.

Es gibt auch fertige Module die z.B. NEC Kode empfangen und senden können und die seriell angebunden werden.

Ein Beispiel für 2,38€, ich meine ich hätte aber weniger bezahlt als ich mal solche erwarb.

Edit: Ja, die gibt es auch billiger z.B. für 1,31€ hier.

Edit: Ja, die gibt es auch billiger z.B. für 1,31€ hier.

Oder (vom gleichen Verkäufer): Senden + Empfangen 0,87 € incl. Versand
Allein schon die mitgelieferten 20 cm Kabel sind den Preis wert

michael_x:
Oder (vom gleichen Verkäufer): Senden + Empfangen 0,87 € incl. Versand
Allein schon die mitgelieferten 20 cm Kabel sind den Preis wert

Der Artikel von dir ist etwas anderes, er enthält keinen Prozessor.

Hi

Die zwei Einzel-Platinchen sehen aber so aus, daß dort wirklich nur der Sensor/die LED drauf ist - auf der 'Alles am Stück'-Platine scheint noch etwas Zusatz enthalten zu sein, ggf. Signal-Aufbereitung ala Schmitt-Trigger (reine Weissagung, ungetestet).

Aber trotzdem hast Du Recht - einen IR-Empfänger bekomme ich 'hier' nicht für das Geld, Was dort für beide Platinen + Dupon-Kabel aufgerufen wird.
Wissen, was ich damit mache, muß ich aber bei Allen Platinchen (siehe Neben-Threat, wo der Uno die 12V vom Motor-Shield nicht verkraftete).

MfG

postmaster-ino:
auf der 'Alles am Stück'-Platine scheint noch etwas Zusatz enthalten zu sein, ggf. Signal-Aufbereitung ala Schmitt-Trigger (reine Weissagung, ungetestet).

Auf der Platine befindet sich ein kleiner Prozessor, der IR Empfang und Senden mit NEC Kodierung eigenständig durchführt
und IR Kommandos dekodiert seriell überträgt. Getestet.
Ich benutze so eine Platine um einen billigen USB Player/Radio/Bluetooth Modul zu steuern.

Getestet

Danke. Den (vermutlich) Controller mit Quarz habe ich gesehen, die Pin-Beschriftung auch, aber dass der ausgerechnet das NEC-Protokoll (38kHz) umsetzt, hab ich nirgends gesehen.
Ausser "muy buen producto, buena calidad" nicht viel des Feedback verstanden :slight_smile:

Und ja, wenn es darum geht, dem Controller mit dem WS2812B das IR decodieren abzunehmen, wird das wohl das richtige sein.