Schritt 4: Codierung Zeit!
Haben Sie den Hex-Code für die Schaltflächen, die Sie wollen, können wir runter zur Codierung Ihrer Arduino zu reagieren!Genau wie im IRrecord Programm müssen Sie die Include-Zeile:
#include < IRremote.h >
Sie müssen nun Ihre Arduino sagen, dass die Verwendung von Pin 11 des IR-Empfängers:
Int RECV_PIN = 11;
Initialisieren Sie Ihre Variablen:
String in;
Zeichenfolge Cur = "";
String cur2 = "";
Fügen Sie diese ausgefallene Sachen:
IRrecv irrecv(RECV_PIN);
9
10 Decode_results Ergebnisse;
Machen Sie jetzt Ihr Setup:
void setup()
{
Serial.Begin(9600);
irrecv.enableIRIn(); Starten Sie den Empfänger
}
Nun, in der Schleife eine if() Block, benötigen Sie also die Arduino weiß, dass es auf der Suche nach IR:
Wenn (irrecv.decode (& Ergebnisse))
Sie müssen innerhalb dieser if() Block Arduino machen die Variable "in" einer Reihe von was auch immer der Hex-Code ist zu sagen, dann sagen Sie ihm, den nächsten IR-Wert zu erhalten. Mein Code druckt "in" an der SM für debugging-Zwecke.
{
in = String(int(results.value), HEX);
irrecv.Resume(); Den nächsten Wert zu erhalten
Serial.println(in);
}
Nun musst du if() und anderes if() Blöcke zu Ihrem Arduino sagen was zu tun. Hier ist was ich habe:
Wenn (in == "8422" || in == "422" || in == "906f" || in == "38c7"){hold();}
ElseIf (in == "841e" || in == "41e" || in == "18e7" || in == "a857"){straight();}
ElseIf (in "841f" == || in == "41f" || in == "4ab5" || in == "e01f"){backup();}
ElseIf (in == "8420" || in == "420" || in == "10ef" || in == "22dd"){left_turn();}
ElseIf (in == "8421" || in == "421" || in == "5aa5" || in == "2fd"){right_turn();}
Die ersten if() sucht die Taste 5 gedrückt werden (Ich habe es eingerichtet, so dass mehrere Fernbedienungen funktionieren werden). Danach können Sie entweder weitere if() Blöcke, die die Arduino verlangsamen werden, wenn Sie genug davon haben, oder können Sie andere if() Blöcke. Jeder Block enthält einen Unterprogramm-Aufruf, der dieser spezifischen Unterroutine Handeln aufruft. Dies wird verhindert, dass Ihr Code wird auf ausrangierten. Ein Beispiel-Unterroutine sieht wie folgt aus:
nichtig straight()
{
left.Write(82);
right.Write(101);
}
Es ist bezeichnend, dass die Arduino, auf der linken und rechten Servos an einen bestimmten Betrag zu machen, so dass sie mit gleicher Geschwindigkeit fahren.
Nun, da wir die Kernstücke zusammen haben, können wir es alle zusammen!
#include < IRremote.h > String in; IRrecv irrecv(RECV_PIN); void setup() void loop() in = String(int(results.value), HEX);
Int RECV_PIN = 11;
Decode_results Ergebnisse;
{
Serial.Begin(9600);
irrecv.enableIRIn(); Starten Sie den Empfänger
}
{
Wenn (irrecv.decode (& Ergebnisse)) {}
irrecv.Resume(); Den nächsten Wert zu erhalten
Serial.println(in);
Wenn (in ==
ElseIf (in == < Hex-Wert > ) {< Code >}
ElseIf (in == < Hex-Wert >) {< Code >}
ElseIf (in == < Hex-Wert >) {< Code >}
ElseIf (in == < Hex-Wert >) {< Code >}
}
}
Jetzt können Sie einfach ändern, hochladen und beginnen Ihre Arduino mit einer TV-Fernbedienung steuern! Unglaublich!