BOE Bot/Arduino raden efter robot (3 / 4 steg)
Steg 3: Programmera den!
Projektet 30 - linjen efter Robot#include < Servo.h >
#define lampor 7
int LDR1, LDR2, LDR3; sensor värden
kalibrering förskjutningar
int leftOffset = 0, rightOffset = 0, centrum = 0;
Start hastighet och rotation offset
int startSpeed = 125, rotera = 30.
sensor tröskel
int tröskelvärdet = 5;
utgångshastigheter för vänster och höger motors
int vänster = startSpeed, höger = startSpeed;
Servo lefts;
Servo rättigheter.
Sensor skärmkalibrering rutin
void calibrate() {
för (int x = 0; x < 10; x ++) {/ / kör detta 10 gånger för att få genomsnittet
digitalWrite (ljus, hög); lamporna på
Delay(100);
LDR1 = analogRead(0); Läs 3 sensorer
LDR2 = analogRead(1);
LDR3 = analogRead(2);
leftOffset = leftOffset + LDR1; Lägg till värdet av vänster sensor till totalt
centrum = centrum + LDR2; Lägg till värdet av centrum sensor till totalt
rightOffset = rightOffset + LDR3; Lägg till värdet av rätt sensor till totalt
Delay(100);
digitalWrite (ljus, låg); lampor av
Delay(100);
}
erhålla genomsnittet för varje sensor
leftOffset = leftOffset / 10;
rightOffset = rightOffset / 10;
centrum = mitt /10;
beräkna förskjutningar för vänster och höger sensorer
leftOffset = centrum - leftOffset;
rightOffset = centrum - rightOffset;
}
void setup()
{
ställa in motor stiften till utgångar
pinMode (ljus, OUTPUT); ljus
kalibrera sensorer
Calibrate();
Delay(3000);
digitalWrite (ljus, hög); lamporna på
Delay(100);
ställa in motor riktning att vidarebefordra
inställda hastigheten av båda motorer
lefts.attach(2);
Rights.attach(3);
lefts.write(91);
Rights.write(91);
}
void loop() {
gör båda motorer samma hastighet
vänster = startSpeed;
höger = startSpeed;
läste sensorerna och lägga förskjutningarna
LDR1 = analogRead(0) + leftOffset;
LDR2 = analogRead(1);
LDR3 = analogRead(2) + rightOffset;
om LDR1 är större än den centrala sensor + tröskel sväng höger
om (LDR1 > (LDR2 + tröskelvärdet)) {
rotera = LDR2 - LDR3;
vänster = startSpeed + rotera;
höger = startSpeed - rotera;
}
om LDR3 är större än den centrala sensor + tröskel sväng vänster
annars om (LDR3 > (LDR2 + tröskelvärdet)) {
rotera = LDR2 - LDR1;
vänster = startSpeed - rotera;
höger = startSpeed + rotera;
}
annat {
vänster = startSpeed;
höger = startSpeed;
}
Skicka speed värdena till motorerna
lefts.write(Left);
Rights.write (180 - rätt).
Delay(5);
}