Forum: Mikrocontroller und Digitale Elektronik Arduino und IR-Fernbedienung


von Klaus M. (klaus_mei)


Lesenswert?

Hallo ich habe an meinem Arduino einen IR-Empfänger angeschlossen.
Mit diesem Code geht die interne LED auch an.
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
if (results.value == 58016)   //Bei "58016"
       {digitalWrite (13, HIGH);}   //soll die LED an gehen.
       irrecv.resume();
      }
Ich möchte aber die LED nur solange anlassen, wie ich auf die Taste 
drücke.
Leider wird der Wert "58016" nur einmal gesendet. Dann kommen nur noch 
"Füllbits ?" . Wie kann man das Problem möglichst elegant lösen, damit 
die LED beim loslassen der Taste auch wieder ausgeht?
Ich verstehe auch nicht, was "irrecv.resume();" genau bewirkt. Das 
Einlesen und dekodieren passiert ja schon in der 1. Zeile. Ich wäre für 
Hinweise dankbar.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Klaus M. schrieb:
> Leider wird der Wert "58016" nur einmal gesendet. Dann kommen nur noch
> "Füllbits ?" .

Damit wird unterscheiden, ob man eine Taste ganz oft hintereinander 
drückt oder ob man sie gedrückt hält.

> Wie kann man das Problem möglichst elegant lösen, damit
> die LED beim loslassen der Taste auch wieder ausgeht?

Verstehe ich nicht ganz. Du merkst doch, wenn nichts mehr ankommt.

von Klaus M. (klaus_mei)


Lesenswert?

Md M. schrieb:
> Verstehe ich nicht ganz. Du merkst doch, wenn nichts mehr ankommt.

Ja, man sieht es ja im ser. Monitor. Wenn aber nichts mehr ankommt kann 
man ja auch nichts dekodieren ((irrecv.decode(&results)). Der 
Einschaltcode wird eben nur einmal gesendet und dann kommt immer das 
gleiche. Ich stelle mir das so vor: Wenn 58016 empfangen wird, schalte 
die LED ein bis nichts mehr empfangen wird. Daran scheitere ich 
momentan. Dies soll auch nur ein Test sein, da später mehrere Ausgänge 
auf die gleiche Weise geschaltet werden sollen. Ich hoffe, ich drücke 
mich einigermaßen verständlich aus.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?


von Klaus M. (klaus_mei)


Lesenswert?

Vielen Dank, genau das habe ich gesucht (Performing one action when a 
button is pressed an another when the button is released)
Auf euch kann man sich eben verlassen :)
Vielen Dank noch mal.

von Jakob (Gast)


Lesenswert?

Von dem Code der IR-Fernbedienung hast du keine Ahnung,
von dem Code zur Dekodierung hast du keine Ahnung,
und genannt hast du uns beide nicht.

Sollte ein Glücksfall sein, wenn du jetzt weiterkommst.

Aber im Märchen ist das Glück oft auf Seiten der
Unbedarften... ;-)

von Michael_O (Gast)


Lesenswert?

Dafür ist Arduino ja gemacht, und für Leute die nicht an einem 
Nachmittag einen TCPip Stack und eine komplette GLCD Library fehlerfrei 
in Assembler schreiben können ;-)


mfg
Michael

von Klaus M. (klaus_mei)


Lesenswert?

@ Michael_O
Danke, du sprichst mir aus dem Herzen.
@Jakob
Ja, es ist wie im Märchen. Dank dem Hinweis von  Md Ma habe ich es 
hinbekommen. Dein Beitrag hat leider nicht zur Problemlösung 
beigetragen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.