Stap 4: Code
https://sites.Google.com/site/arduinorobotics/Arduino-Robotics/free_project
Bluetooth-bot v1
Arduino Robotics onofficiële hoofdstuk 14
Gebruik de seriële adapter Bluetooth metgezel om opdrachten te ontvangen van PC
Arduino decodeert opdrachten in motorische bewegingen
Wordt gemaakt van snelle draadloze seriële verbinding voor robot controle met behulp van toetsenbord
Maakt gebruik van de toetsen "i" = vooruit, "j" = links, "k" = reverse- en "l" = rechts
snelheidsregeling is ook uitgevoerd met behulp van ","= snelheid naar beneden,"." = snelheid omhoog, en "/" = max snelheid.
L298 motorische controle variabelen
int M1_A = 12; Als Ardumoto gebruikt, wijzigt op pin 13
int M1_PWM = 11;
int M1_B = 10; Als Ardumoto gebruikt, verwijdert u deze variabele
int M2_A = 4; Als Ardumoto gebruikt, wijzigt naar pin 12
int M2_PWM = 3;
int M2_B = 2; Als Ardumoto gebruikt, verwijdert u deze variabele
LED pin op de Arduino D13 aangesloten
int LED = 13;
variabele seriële gegevens op te slaan
int incomingByte = 0;
variabele snelheid-waarde op te slaan
int speed_val = 255;
//////////////////////////////
VOID Setup {}
TCCR2B = TCCR2B & 0b11111000 | 0x01; wijzigen van PWM frequentie voor pinnen 3 en 11 tot en met 32kHz, dus er geen motor zeuren zullen
Begin seriële monitor 115.200 bps
Serial.begin(115200);
verklaren van de uitgangen
pinMode (LED, uitvoer);
pinMode (M1_A, uitvoer);
pinMode (M1_PWM, uitvoer);
pinMode (M1_B, uitvoer);
pinMode (M2_A, uitvoer);
pinMode (M2_PWM, uitvoer);
pinMode (M2_B, uitvoer);
motoren standaard uitschakelen
M1_stop();
M2_stop();
delay(500);
}
////////////////////////////////////
void loop {}
selectievakje voor seriële data
Als (Serial.available() > 0) {}
Lees de binnenkomende byte:
incomingByte = Serial.read();
indien beschikbaar, LED knipperen en afdrukken van seriële gegevens ontvangen.
digitalWrite (LED, hoge);
zeg wat je hebt:
Serial.Print ("Ik heb ontvangen:");
Serial.println(incomingByte);
vertraging van 10 milliseconden zodat seriële bijwerkingsfrequentie
delay(10);
Controleer inkomende byte voor richting
als byte gelijk is aan "46" of "," - snelheid verhogen
Als (incomingByte == 46) {}
speed_val = speed_val + 5;
test_speed();
Serial.println(speed_val);
}
als byte gelijk aan "44 is" of "."-lagere snelheid
else if (incomingByte == 44) {}
speed_val = speed_val - 5;
test_speed();
Serial.println(speed_val);
}
als byte gelijk aan "47 is" of "/" - max snelheid
else if (incomingByte == 47) {}
speed_val = 255;
test_speed();
}
als byte gelijk is aan "105" of "i", gaan
else if (incomingByte == 105) {}
M1_forward(speed_val);
M2_forward(speed_val);
delay(25);
}
als byte gelijk is aan "106" of "j", linksaf
else if (incomingByte == 106) {}
M1_reverse(speed_val);
M2_forward(speed_val);
delay(25);
}
als byte gelijk is aan "108" of "l", ga rechts
else if (incomingByte == 108) {}
M1_forward(speed_val);
M2_reverse(speed_val);
delay(25);
}
als byte gelijk is aan "107" of "k", gaat u omgekeerde
else if (incomingByte == 107) {}
M1_reverse(speed_val);
M2_reverse(speed_val);
delay(25);
}
anders stoppen beide motoren
else {}
M1_stop();
M2_stop();
}
}
else {}
M1_stop();
M2_stop();
digitalWrite (LED, laag);
}
}
ongeldig test_speed() {}
beperken van snelheid waarde tussen 0-255
Als (speed_val > 250) {}
speed_val = 255;
Serial.println ("MAX");
}
Als (speed_val < 0) {}
speed_val = 0;
Serial.println ("MIN");
}
}
motorische functies / / /
VOID M1_reverse(int x) {}
digitalWrite (M1_B, laag);
digitalWrite (M1_A, hoge);
analogWrite (M1_PWM, x);
}
VOID M1_forward(int x) {}
digitalWrite (M1_A, laag);
digitalWrite (M1_B, hoge);
analogWrite (M1_PWM, x);
}
VOID M1_stop() {}
digitalWrite (M1_B, laag);
digitalWrite (M1_A, laag);
digitalWrite (M1_PWM, laag);
}
VOID M2_forward(int y) {}
digitalWrite (M2_B, laag);
digitalWrite (M2_A, hoge);
analogWrite (M2_PWM, y);
}
VOID M2_reverse(int y) {}
digitalWrite (M2_A, laag);
digitalWrite (M2_B, hoge);
analogWrite (M2_PWM, y);
}
VOID M2_stop() {}
digitalWrite (M2_B, laag);
digitalWrite (M2_A, laag);
digitalWrite (M2_PWM, laag);
}