IR remote "entprellen"

Hallo zusammen,

bin jetzt sein 2 Wochen hier dabei (bisher noch keine Programmier und µc Erfahrung, aber seit 30 Jahren in der IT) - und eigentlich nur hier, weil ich mit dem Raspberry und meinen 2801er LED Strips nicht das erreichte, was ich wollte.

Ich habe mir eine kleine Prototypmatrix ( 8X10 ) gebaut, nachdem ich über Glediator gestolpert bin, und habe mir dann einen Arduino nano geholt.
Nachdem ich letztens schon im Forum nach einer Möglichkeit fragte, die Farbkanäle unabhängig zu steuern, wollte ich verschiedene Effekte auf meiner Matrix laufen lassen. Und Glediator. Und alles einfach zu steuern ( TV-Remote).

Zunächst dachte ich, dass ich das nie schaffe, ohne wirklich coden zu können.

Das schwierigste war, den endlichen Automat zu verstehen (ich glaube, das habe ich nur halb), um mit der TV Remote in die verschiedenen Programme zu kommen, die dann ja unterschiedlich lange im Loop laufen sollen.
Irgendwie habe ich es dann aber doch geschafft.

Ich zeige euch mal meinen kompletten Code (incl. aller im Forum und im Web "zusammengeklauter" Effekte).

Wenn ihr Tipps habt, wie ich das noch optimieren kann (Hallo Jurs - danke für deine Beiträge :slight_smile: ) - immer raus damit.

Hier der Code mit der Möglichkeit, direkt zu ändern - über die Timeline kann man ja hin und her Hüpfen.
Wenn ihr noch coole Effekte habt, würde ich mich total freuen, wenn ihr mir vielleicht den einen oder anderen unten als Funktion oder hier im Thread reinkopiert.

Und ein Problem habe ich noch - ich muss teilweise 2-3 mal auf die Remote Taste drücken,, bis der Loop initiiert wird. Die TV Remote sendet ja 2 Codes, wovon nur der erste relevant ist. Da funktioniert die delay Entprell Methode, die ich mehrfach gesehen habe nicht so richtig.
Hier der Codeblock:

//############################################################################################################################################################
//Input - When IR Is Received, set "menu" with IR Code
//############################################################################################################################################################
long input()
{
  if (irrecv.decode(&results)) {
    //Serial.println(results.value);
    menu = (results.value);    
    irrecv.resume(); // Receive the next value
  }
}

Besonders Dankbar wäre ich, wenn mir einer erklärt, was mir zur korrektem Umsetzung als endlichen Automaten ich noch vergessen habe.
Vielen Dank für all eure Beiträge hier im Forum, die einem Einsteiger wie mir geholfen haben, innerhalb von 2 Wochen an den wenigen freien Abenden, solch ein Projekt umzusetzen.

12m 2801er für die große Glediator Matrix sind auf dem Weg von China hier her. Netzteil ist schon da....

Dank & Viele Grüße,
Witzman

Wenn ihr noch coole Effekte habt, würde ich mich total freuen, wenn ihr mir vielleicht den einen oder anderen unten als Funktion oder hier im Thread reinkopiert.

Ich habe mit FunkyClouds und FunkyNoise ziemlich viele Effekte und Hilfsroutinen veröffentlicht, damit kannst Du Dich eine Weile beschäftigen. :wink:

Alles, was Du hier siehst, basiert auf diesen Routinen - alles in Echtzeit auf dem Controller berechnet.

Hier habe ich meine Experimente auch dokumentiert.

Zu Deinem Code-Sammelsurium: Es macht keinen Sinn, FastLED UND die Adafruit_WS2801 lib UND SPI.h zu verwenden...

Ich würde erstmal alles für FastLED umschreiben und den Rest rausschmeissen.

Grüße,

Helmuth

Helmuth:
Zu Deinem Code-Sammelsurium: Es macht keinen Sinn, FastLED UND die Adafruit_WS2801 lib UND SPI.h zu verwenden...

Ich würde erstmal alles für FastLED umschreiben und den Rest rauswerfen.

Danke für den Hinweis - das habe ich gerade erledigt (muss es aber heute Abend noch testen) - compilen tut es schon mal.