Stap 9: De Code
Voor het uploaden van de code, heb je voor downloaden van de IRremote bibliotheek.
#include < Servo.h >
#include < IRremote.h >
Servo servoLeft; Linker servo definiëren
Servo servoRight; Definiëren van de juiste servo
Servo servoArm; Definiëren van de servo Arm
Servo servoClaw; Define klauw servo
int RECV_PIN = 11; IR Pin ontvangen
IRrecv irrecv(RECV_PIN);
decode_results resultaten;
VOID Setup {}
servoLeft.attach(10); Linker servo ingesteld op digitale pin 10
servoRight.attach(9); Stel juiste servo naar digitale pin 9
servoArm.attach(5); Servo Arm ingesteld op digitale pin 5
servoClaw.attach(6); Klauw servo ingesteld op digitale pin 6
Serial.begin(9600);
irrecv.enableIRIn(); Start de ontvanger}
void loop {/ / beweging proeven doorlopen
Als (irrecv.decode (& resultaten)) {}
lange int decCode = results.value;
Serial.println(decCode);
schakelaar (results.value) {}
Case 0x2F0:
Serial.println("Forward");
servoLeft.writeMicroseconds(1700);
servoRight.writeMicroseconds(1300);
breken;
Case 0x810:
Serial.println("SlowForward");
servoLeft.writeMicroseconds(1520);
servoRight.writeMicroseconds(1480);
breken;
Case 0xAF0:
Serial.println("reverse");
servoLeft.writeMicroseconds(1300);
servoRight.writeMicroseconds(1700);
breken;
Case 0x910:
Serial.println("SlowReverse");
servoLeft.writeMicroseconds(1480);
servoRight.writeMicroseconds(1520);
breken;
Case 0xCD0:
Serial.println("right");
servoLeft.writeMicroseconds(1600);
servoRight.writeMicroseconds(1600);
breken;
Case 0xA50:
Serial.println("SlowRight");
servoLeft.writeMicroseconds(1520);
servoRight.writeMicroseconds(1525);
breken;
Case 0x2D0:
Serial.println("left");
servoLeft.writeMicroseconds(1400);
servoRight.writeMicroseconds(1400);
breken;
Case 0x710:
Serial.println("SlowLeft");
servoLeft.writeMicroseconds(1480);
servoRight.writeMicroseconds(1475);
breken;
Case 0xA70:
Serial.println("Stop");
servoLeft.writeMicroseconds(1500);
servoRight.writeMicroseconds(1500);
breken;
Case 0x290:
Serial.println("Pos4");
servoArm.writeMicroseconds(1700);
breken;
Case 0xC90:
Serial.println("Pos3");
servoArm.writeMicroseconds(1500);
breken;
Case 0x490:
Serial.println ("Pos 2");
servoArm.writeMicroseconds(1300);
breken;
Case 0x5CE9:
Serial.println("Pos1");
servoArm.writeMicroseconds(900);
breken;
Case 0x70:
Serial.println("Pos0");
servoArm.writeMicroseconds(2000);
breken;
Case 0x890:
Serial.println("open");
servoClaw.writeMicroseconds(1700);
breken;
Case 0x90:
Serial.println("Close");
servoClaw.writeMicroseconds(1000);
breken;
breken;
standaard: Serial.println ("Waiting...");}
irrecv.resume(); De volgende waarde ontvangen
}
}
Deze code is heel eenvoudig te begrijpen omdat er veel herhaling.
Het begin #includes zijn enkel het leiden van het bestuur te gebruiken de twee bibliotheken (Servo.h komt met Arduino IDE gedownloade)
Na dat, zijn servo's gedefinieerd zodat het bord weet hoeveel servo's er zijn, en wat te noemen.
Dan, de IR ontvangende pin is gedefinieerd als pin 11 en wordt gevraagd om te decoderen van de resultaten van wat het ontvangt.
De servo pincodes zijn gedefinieerd in void_setup, en de serie- en IR ontvanger worden gestart.
In de void_loop, het programma decodeert de IR-codes, en doet dingen in een case-statement. Een case statement is vergelijkbaar met een if-instructie, maar het gebruikt minder coderegels. Het controleert of het geval wordt voldaan, en als zo, het wordt de code uitgevoerd eronder, tot het break statement.
Als u de IR-codes voor de afstandsbediening van uw TV, kunt u het IRrecv_demo voorbeeld uitvoeren in de bibliotheek van de IR-afstandsbediening. Druk op knoppen en Let op de codes die u per knop ontvangt. Vervang mijn TV Remote codes (na het case-statement na 0 x) in het programma op basis van de knoppen die u wilt gebruiken. U hoeft niet alle functies te kunnen gebruiken. De servo.writeMicroseconds(xxxx) vertelt gewoon de servo's, wat te doen, zodanig spin in één richting, of welk standpunt naar. Deze waarden kunnen ook gespeeld worden met.
Het programma uploaden naar je Arduino en je moet goed om te gaan!
Als er vragen, zal voel je vrij om commentaar en ik zo spoedig mogelijk beantwoorden.