RoverBluetooth: Arduino-baserad Bluetooth bil (2 / 4 steg)
Steg 2: Arduino skiss
För Arduino, det behövs en liten skiss som bara tar emot data, vänder på motorn (framåt och bakåt) och varje 300 ms kontrollerar avståndet från väggen:
void loop() {
om (Serial.available()) {
Val = Serial.parseInt();
om (val == 21) {//Off
goTo (0, 0);
offOn = false;
} else om (val < 20) {
myservo.write (begränsa (karta (val, 0, 20, 140, 40), 40, 140));
} else om (val == 22) {//LED på
digitalWrite (LED, hög);
} else om (val == 23) {//LED Off
digitalWrite (LED, låg);
} else om ((val > = 1500) & & (val < = 1755)) {//Backwards
Val = val - 1500;
goTo (2, val).
offOn = sant;
} else om ((val > = 1000) & & (val < = 1255)) {//On
Val = val - 1000;
goTo (1, val);
offOn = sant;
}
}
osignerade långa nu = millis();
om (nu - varande > = 300) {//Check avståndet varje 300 ms
varande = nu;
om (distanza() < 40) {//Near en vägg...
Delay(30);
osignerade långa avstånd = distanza();
om (distanserar < 40) {//Check en annan tid avståndet (för att vara säker...)
om (offOn == true) {//If påslagen, bilen går bakåt
goTo (2, 210);
}
byte pulser = karta (avstånd, 2, 40, 20, 1);
unsigned int msPerPulse = 1000 / (pulser * 2);
för (byte index = 1; index < = pulser; index ++) {//Play en frekvens beroende på avståndet
tonen (12, 2000).
Delay(msPerPulse);
noTone(12);
Delay(msPerPulse);
}
om (offOn == true) {
goTo (0, 0);
Delay(100);
}
}
}
}
}
lång distanza() {//Proximity
lång distanza;
digitalWrite (trig, låg);
delayMicroseconds(2);
digitalWrite (trig, hög);
delayMicroseconds(10);
digitalWrite (trig, låg);
distanza = pulseIn (echo, hög);
distanza = distanza / 58;
Serial.println(distanza);
återvända distanza;
}
void goTo (byte dir, byte hastighet) {//Go bakåt och framåt
om (dir == 1) {
analogWrite (BMpin, 0);
digitalWrite (enablePin, hög);
analogWrite (Mpin, hastighet);
} else om (dir == 2) {
analogWrite (Mpin, 0);
digitalWrite (enablePin, hög);
analogWrite (BMpin, hastighet);
} else om (dir == 0) {
digitalWrite (enablePin, låg);
analogWrite (Mpin, 0);
analogWrite (BMpin, 0);
}
}