Enkla bluetooth bil (3 / 4 steg)
Steg 3: kod
[code]Version 3.0 av Owen Sobel
Detta program används för att styra en robot med en app som kommunicerar med Arduino via en bluetooth-modul.
Fel kod diagram: Kod 01. Turnradius är högre än hastighet; Kod 02; Hastighet är högre än 255;
#define in1 5 //L298n motorn förarens stift.
#define in2 6
#define in3 10
#define in4 11
#define LED 13
int, kommando; Int att lagra app kommandot staten.
int hastighet = 204; 0 - 255.
int Speedsec;
int buttonState = 0;
int lastButtonState = 0;
int Turnradius = 0; Ange radien av en sväng, 0 - 255 Obs: roboten fel om detta är högre än int hastighet.
int brakeTime = 45;
int brkonoff = 1; 1 för elektroniska bromssystemet, 0 för normal.
void setup() {
pinMode (in1, produktionen);
pinMode (in2, produktionen);
pinMode (in3, produktionen);
pinMode (in4, produktionen);
pinMode (LED, OUTPUT); Ställ in LED stift.
Serial.BEGIN(9600); Ange baudvärde till din Bluetooth-modul.
}
void loop() {
om (Serial.available() > 0) {
kommandot = Serial.read();
Stop(); Initiera med motorer stopp.
Växla (kommandot) {
fallet "F":
Forward();
bryta;
fallet "B":
Back();
bryta;
fallet "L":
Left();
bryta;
fallet "R":
Right();
bryta;
fallet "G":
forwardleft();
bryta;
fallet "I":
forwardright();
bryta;
fallet "H":
backleft();
bryta;
fallet "J":
backright();
bryta;
fallet "0":
Hastighet = 100;
bryta;
fall '1':
Hastighet = 140;
bryta;
fallet "2":
Hastighet = 153;
bryta;
fallet "3":
Hastighet = 165;
bryta;
fallet "4":
Hastighet = 178;
bryta;
fallet "5":
Hastighet = 191;
bryta;
fallet "6":
Hastighet = 204;
bryta;
fallet "7":
Hastighet = 216;
bryta;
fallet "8":
Hastighet = 229;
bryta;
fall '9':
Hastighet = 242;
bryta;
fallet "q":
Hastighet = 255;
bryta;
}
Speedsec = Turnradius;
om (brkonoff == 1) {
brakeOn();
} annat {
brakeOff();
}
}
}
void forward() {
analogWrite (in1, hastighet);
analogWrite (in3, hastighet);
}
void back() {
analogWrite (in2, hastighet);
analogWrite (in4, hastighet);
}
void left() {
analogWrite (in3, hastighet);
analogWrite (in2, hastighet);
}
void right() {
analogWrite (in4, hastighet);
analogWrite (in1, hastighet);
}
void forwardleft() {
analogWrite (in1, Speedsec);
analogWrite (in3, hastighet);
}
void forwardright() {
analogWrite (in1, hastighet);
analogWrite (in3, Speedsec);
}
void backright() {
analogWrite (in2, hastighet);
analogWrite (in4, Speedsec);
}
void backleft() {
analogWrite (in2, Speedsec);
analogWrite (in4, hastighet);
}
void Stop() {
analogWrite (in1, 0);
analogWrite (in2, 0);
analogWrite (in3, 0);
analogWrite (in4, 0);
}
void brakeOn() {
Här är den framtida användningen: en elektroniska bromssystem!
Läs det tryckknapp ingångsstiftet:
buttonState = kommando;
Jämför buttonState till sitt tidigare tillstånd
om (buttonState! = lastButtonState) {
om staten har förändrats, öka räknaren
om (lastButtonState == "F") {
om (buttonState == s ') {
Back();
Delay(brakeTime);
Stop();
}
}
om (lastButtonState == "B") {
om (buttonState == s ') {
Forward();
Delay(brakeTime);
Stop();
}
}
om (lastButtonState == "L") {
om (buttonState == s ') {
Right();
Delay(brakeTime);
Stop();
}
}
om (lastButtonState == "R") {
om (buttonState == s ') {
Left();
Delay(brakeTime);
Stop();
}
}
}
spara det aktuella läget som den förra staten,
för nästa gång genom öglan
lastButtonState = buttonState;
}
void brakeOff() {
}
[/code]