HeiMa
December 14, 2017, 10:00am
1
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.
Tommy56
December 14, 2017, 10:07am
2
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
HeiMa
December 14, 2017, 10:19am
3
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
Tommy56
December 14, 2017, 10:28am
4
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
HeiMa
December 14, 2017, 10:34am
5
danke tommy
ja, die ganz einfachen Basics verstehe ich aber dann wirds schwer....
HeiMa
December 14, 2017, 10:50am
6
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.
ich sehe weder was im "code" oder "aktuell"
Tommy56
December 14, 2017, 11:03am
7
Serial.println(wiederholung(results.value),DEC);
Etwas mitdenken tut nicht weh.
Gruß Tommy
HeiMa
December 14, 2017, 11:50am
8
Für heute gebe ich auf......
das klappt grade alles vorne und hinten nicht....