FB Codes auslesen und den "Haltecode" verwenden

Hallo Leute,
da bin ich mal wieder mit meiner FB.
Folgendes Problem:

Ich kann für jede Taste auf der FB den Code auslesen und auch mit Switch Case verwenden.
Bis hierher kein Problem.

Ich möchte aber wenn ich eine Taste länger drücke, den "Haltecode" natürlich nur für die gedrückte Taste verwenden. Um z.B. die Lautstärke mit längerem halten zu ändern und nicht dauernd erneut die Taste drücken.

Hab gerade keine Idee wie ich die beiden Werte zusammenführen soll.

Ich verwende die IRremote library.

Du merkst Dir den letzten Code, der nicht der Wiederholungscode ist. Wenn der Wiederholungscode kommt, gibst Du den letzten Code zurück.

Pseudocode:

char *wiederholung(char * code) {
  const char wdhCode[] = "Wiederholungscode";
  static char aktuell[Codelaenge];
  if (!strcmp(code,wdhCode) {  // der Wiederholungscode
    return aktuell;
  }
  strcpy(aktuell,code);
  return code;
}

Gruß Tommy

hmm, da merke ich mal wieder das ich in der C++ Materie noch nicht richtig drin bin.

könntest du mir vielleicht an den zwei FB-Codes das mal kurz erklären, wenn das nicht zu viel Zeit in Anspruch nimmt.

Ich habe bei "Taste1! 1086300255 als DEC Code
Und der Wiederholungscode ist 4294967295

Und jetzt komm ich auch nicht mit der Codelaenge klar die im Sketch drin ist.

???

Danke

Es wird zeit, dass Du Dich mit den Grundlagen beschäftigst.
Gut, dann mit unsigned long (uint32_t) Zahlen

uint32_t wiederholung(uint32_t code) {
  const uint32_t wdhCode = 4294967295;
  static uint32_t aktuell;
  if (code == wdhCode) {  // der Wiederholungscode
    return aktuell;
  }
  aktuell = code;
  return code;
}
...
uint32_t code1 = 1086300255;
uint32_t codew = 4294967295;
uint32_t code;

code = wiederholung(code1); // code enthält 1086300255
code = wiederholung(codew); // code enthält 1086300255

Gruß Tommy

danke tommy :slight_smile:

ja, die ganz einfachen Basics verstehe ich aber dann wirds schwer....

Ich bin echt dafür zu blöd....

void IREmpfang() {
  
  if (irrecv.decode(&results)) {

    Serial.println(results.value,DEC);

    irrecv.resume(); // Receive the next value
     }   }

So sieht ja der Sketch aus um die Codes aus der FB zu lesen...

jetzt hab ich versucht die codes in das uint32 zu packen....
aber das bekomm ich nicht hin.

:frowning:

ich sehe weder was im "code" oder "aktuell"

Serial.println(wiederholung(results.value),DEC);

Etwas mitdenken tut nicht weh.

Gruß Tommy

Für heute gebe ich auf......

das klappt grade alles vorne und hinten nicht....