Hi Kollege,
(bist Du jetzt pro-bot128 oder roboter421?? - oder eine multiple Persönlichkeit?) die Auswertung geschieht - in C - recht einfach; mit der Arduino Entwicklungsumgebung kenne ich mich nicht aus. Primär wichtig ist, dass Deine Software genau den IR-Code entziffert, den Deine Fernsteuerung sendet. Da es etliche verschiedene Codes gibt, könnte das ein Fehler sein. Nicht unüblich ist der RC-5-Code. Ich decodiere bei mir den Code in ein Adressbyte (RCAB) und ein Befehlsbyte (RCBB). Jede Taste sendet üblicherweise einen anderen Code, ich muss also nur auf diesen Code prüfen (in meinem Beispiel ohne Adressprüfung) , siehe hier:
Code:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - Es folgt RC5t_17a - es werden also nur die RCAB und RCBB geholt.
// RCBB == 16 => 0 gedrückt?
// RCBB == 27 => Pfeil "ab"wärts
// RCBB == 28 => Pfeil vorwärts
// RCBB == 36 => VOL lauter = rechts
// RCBB == 37 => VOL leiser = links
//
while (1) //
{ //
RC5t_17a (); // RC5 auslesen
if (RCBB == 16) // Ist "0" gedrückt?
{ //
SERVon = 1; // Servobetrieb erlauben
dklauf(); // Deckel auffahren
waitms ( 800); // und warten bis Deckel offen ist
SERVon = 0; // und Servobetrieb wieder verbieten
waitms ( 2000); // danach 2 sec warten
SERVon = 1; // Servobetrieb erlauben
dklzu(); // Deckel zufahren
waitms ( 800); // und warten bis Deckel zu ist
} // Ende if (RCBB == 16)
//
if (RCBB == 27) // "Pfeil ab-/rückvorwärts" gedrückt?
{ //
SERVon = 1; // Servobetrieb erlauben
dklauf(); // Deckel auffahren
waitms ( 800); // und warten bis Deckel offen ist
SERVon = 0; // und Servobetrieb wieder verbieten
ftst_13m(); // Fahrtest
SERVon = 1; // Servobetrieb erlauben
dklzu(); // Deckel zufahren
waitms ( 800); // und warten bis Deckel zu ist
} // Ende if (RCBB == 16)
//
if (RCBB == 28) // Ist "Pfeil vorwärts" gedrückt?
{ //
SERVon = 1; // Servobetrieb erlauben
dklauf(); // Deckel auffahren
waitms ( 800); // und warten bis Deckel offen ist
SERVon = 0; // und Servobetrieb wieder verbieten
ftst_13(); // Fahrtest
waitms ( 500); // danach etwas warten
SERVon = 1; // Servobetrieb erlauben
dklzu(); // Deckel zufahren
waitms ( 800); // und warten bis Deckel zu ist
} // Ende if (RCBB == 28)
//
} // Ende while (1)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Entsprechend dem Code wird dann die Aktion gefahren. Evtl. ist noch eine Zeitabfrage im while sinnvoll, wenn ohne Tastendruck ein default-Ablauf gewünscht wird. Und so einfach geht das dann:
Ok?
Lesezeichen