Arduino stridsvagn! (6 / 9 steg)
Steg 6: Programmet!
Koden är ganska enkel. Försök att läsa den en gång innan kopiera klistra in ;)
< p > #include < Servo.h >< br >< /p >< p > Servo servo;
#include < IRremote.h >< /p >< p > int IRpin = 8. PIN-kod för IR-sensorn < /p >< p >< br > int LED = 13. LED stift
IRrecv irrecv(IRpin);
decode_results resultat; < /p >< p > boolean LEDon = sant; initierar LEDon som sant
L293 anslutning
CONST int motorA1 = 3; Stift 2 av L293
CONST int motorA2 = 4; Stift 7 av L293
CONST int motorB1 = 6; Stift 10 av L293
CONST int motorB2 = 7. Stift 14 av L293 < /p >< p > const int BTState = 2; < /p >< p >
Användbara variabler
int jag = 0;
int j = 0;
int staten.
int vSpeed = 200. Standardhastighet, från 0 till 255 < /p >< p > void setup() {
Ange stift som utgångar:
pinMode (motorA1, produktionen);
pinMode (motorA2, produktionen);
pinMode (motorB1, produktionen);
pinMode (motorB2, produktionen);
pinMode (ljus, OUTPUT);
pinMode (BTState, indata);
Initiera seriell kommunikation på 9600 bitar per sekund:
Serial.BEGIN(9600);
servo.attach(9);
irrecv.enableIRIn(); Starta mottagaren
pinMode (LED, OUTPUT);
pinMode (10, OUTPUT);
}
void loop() {
Stoppa bilen när förlorad eller bluetooth frånkopplad
IF(digitalRead(BTState)=='S') {state = s ';} < /P >< p > //Save inkomstuppgifter till variabeln "stat"
IF(Serial.available() > 0) {
State = Serial.read();
}
om (statligt == '0') {
servo.write(0);
}
annars om (statligt == '1') {
servo.write(18);
}
annars om (statligt == '2') {
servo.write(36);
}
annars om (statligt == '3') {
servo.write(54);
}
annars om (statligt == '4') {
servo.write(72);
}
annars om (statligt == "5") {
servo.write(90);
}
annars om (statligt == '6') {
servo.write(108);
}
annars om (statligt == '7') {
servo.write(126);
}
annars om (statligt == '8') {
servo.write(144);
}
annars om (statligt == '9') {
servo.write(162);
}
annars om (statligt == "q") {
servo.write(180);
}
/***********************Forward****************************/
Om staten är lika med bokstaven "F", kommer att bilen gå framåt!
om (statligt == "F") {
analogWrite (motorA1, vSpeed); analogWrite (motorA2, 0);
analogWrite (motorB1, vSpeed); analogWrite (motorB2, 0);
}
/**********************Forward Left************************/
Om staten är lika med bokstaven "G", kommer att bilen gå framåt, vänster
annars om (statligt == "G") {
analogWrite (motorA1, vSpeed); analogWrite (motorA2, 0);
analogWrite (motorB1, 200); analogWrite (motorB2, 0);
}
/**********************Forward Right************************/
Om staten är lika med bokstaven "I", bilen kommer att gå fram rätt
annars om (statligt == "I") {
analogWrite (motorA1, vSpeed); analogWrite (motorA2, 0);
analogWrite (motorB1, 0); analogWrite (motorB2, 200);
}
/***********************Backward****************************/
Om staten är lika med bokstaven "B", kommer att bilen gå bakåt
annars om (statligt == 'B') {
analogWrite (motorA1, 0); analogWrite (motorA2, vSpeed);
analogWrite (motorB1, 0); analogWrite (motorB2, vSpeed);
}
/**********************Backward Left************************/
Om staten är lika med bokstaven "H", kommer att bilen gå bakåt vänster
annars om (statligt == "H") {
analogWrite (motorA1, 0); analogWrite (motorA2, vSpeed);
analogWrite (motorB1, 200); analogWrite (motorB2, 0);
}
/ *** Bakåt höger *** /
Om staten är lika med bokstaven "J", kommer att bilen gå bakåt höger
annars om (statligt == "J") {
analogWrite (motorA1, 0); analogWrite (motorA2, vSpeed);
analogWrite (motorB1, 0); analogWrite (motorB2, 200);
}
/***************************Left*****************************/
Om staten är lika med bokstaven L, kommer hjul sväng vänster
annars om (statligt == "L") {
analogWrite (motorA1, 0); analogWrite (motorA2, 0);
analogWrite (motorB1, 200); analogWrite (motorB2, 0);
}
/***************************Right*****************************/
Om staten är lika med bokstaven "R", kommer hjul sväng höger
annars om (statligt == "R") {
analogWrite (motorA1, 0); analogWrite (motorA2, 200);
analogWrite (motorB1, 0); analogWrite (motorB2, 0);
}
annars om (statligt == "W") {
digitalWrite(10,HIGH);
Delay(500);
digitalWrite(10,LOW);
}
annars om (statligt == "w") {
digitalWrite(10,HIGH);
Delay(500);
digitalWrite(10,LOW); < /p >< p >}
/************************Stop*****************************/
Om staten är lika med bokstavens ', stanna bilen
annars om (statligt == s ') {
analogWrite (motorA1, 0); analogWrite (motorA2, 0);
analogWrite (motorB1, 0); analogWrite (motorB2, 0);
}
om (irrecv.decode (& resultat))
{
irrecv.Resume(); Ta emot nästa värde
}
om (results.value == 0) / / ändra noll till IR fjärr-knappen nummer
{
om (LEDon == true) / / är LEDon lika med sant?
{
LEDon = false;
digitalWrite (LED, hög);
Delay(100); håller transistion slät
}
annat
{
LEDon = sant;
digitalWrite (LED, låg);
Delay(100);
}
}
< /p >< p >} < /p >