Styra Arduino RoverBot med TV-fjärrkontrollen (4 / 5 steg)
Steg 4: Kodning tid!
När du har den Hex koden för knapparna du vill, kan vi få ner till kodning din Arduino att reagera!Precis som i IRrecord programmet måste du ha inkludera raden:
#include < IRremote.h >
Nu måste du berätta din Arduino att du använder stift 11 för IR-mottagaren:
int RECV_PIN = 11.
Initiera variablerna:
Sträng.
Sträng cur = "";
String cur2 = "";
Lägg till detta fina saker:
IRrecv irrecv(RECV_PIN);
9
10 decode_results resultat.
Nu göra din setup:
utan laga kraft setup()
{
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta mottagaren
}
Nu, i din loop behöver en if() kloss, så Arduino vet letar efter IR:
om (irrecv.decode (& resultat))
Inuti detta if() block måste du berätta för Arduino att variabeln "i" en sträng av oavsett Hex koden är, sedan berätta det för att få nästa IR värde. Min koden skriver ut "i" till SM för felsökning ändamål.
{
(= String(int(results.value), HEX i);
irrecv.Resume(); Ta emot nästa värde
Serial.println(in);
}
Nu behöver du if() och annat if() block att berätta din arduino att göra. Här är vad jag har:
om (i == "8422" || i == "422" || i == "906f" || i == "38c7"){hold();}
annars om (i == "841e" || i == "41e" || i == "18e7" || i == "a857"){straight();}
annars om (i == "841f" || i == "41f" || i == "4ab5" || i == "e01f"){backup();}
annars om (i == "8420" || i == "420" || i == "10ef" || i == "22dd"){left_turn();}
annars om (i == "8421" || i == "421" || i == "5aa5" || i == "2fd"){right_turn();}
Den första if() ser ut för knappen 5 pressas (jag har det inrättats så flera fjärrkontroller fungerar). Efter det, du kan antingen ha fler if() block, som kommer att bromsa Arduino om du har tillräckligt av dem, eller du kan använda annat if() block. Varje block innehåller en subrutin samtal, som ringer upp den specifika subrutinen att agera. Detta håller din kod från att vara hanteras som skräppost upp. En exempel-subrutin ser ut så här:
utan laga kraft straight()
{
Left.write(82);
Right.write(101);
}
Det är talande Arduino att vända på vänster och höger servon på ett visst belopp så de kör med samma hastighet.
Nu när vi har core bitar tillsammans, kan vi sätta ihop allt!
#include < IRremote.h > Sträng i; IRrecv irrecv(RECV_PIN); void setup() void loop() (= String(int(results.value), HEX i); om (i == }
int RECV_PIN = 11;
decode_results resultat.
{
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta mottagaren
}
{
om (irrecv.decode (& resultat)) {
irrecv.Resume(); Ta emot nästa värde
Serial.println(in);
annars om (i == < Hexvärde > ) {< code >}
annars om (i == < Hexvärde >) {< code >}
annars om (i == < Hexvärde >) {< code >}
annars om (i == < Hexvärde >) {< code >}
}
Nu kan du enkelt ändra, ladda upp och börja styra din Arduino med TV remote! Fantastiskt!