#define sensor1 0
#define sensor2 1
#define sensor3 4
#define sensor4 5
#define OUTA 11
#define OUTB 10
#define OUTC 6
#define OUTD 9
#define ENA 5
#define ENB 3
int s0=26;
int s1=60;//speed difference for adjusting
int s2=64;//original speed
int s3=90;
int a1=30;
int a2=60;
int d=10;
int t1=3000;
int t2=5000;
int z=40;
void setup()
{
pinMode(OUTA,OUTPUT);
pinMode(OUTB,OUTPUT);
pinMode(OUTC,OUTPUT);
pinMode(OUTD,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
Serial.begin(9600);
}
void loop()
{
//adjust left 微调
Serial.print(analogRead(sensor1));
Serial.print(" ");
Serial.print(analogRead(sensor2));
Serial.print(" ");
Serial.print(analogRead(sensor3));
Serial.print(" ");
Serial.print(analogRead(sensor4));
Serial.print(" ");
if((analogRead(sensor2)<=512&&analogRead(sensor3)>=512)||(analogRead(sensor4)<=512))
{
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,s2-s1+s0);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,s2);
Serial.print("1\n");
delay(100);
}
else
{
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,s2+s0);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,s2);
}
//adjust right 微调
while(analogRead(sensor2)>=512&&analogRead(sensor3)<=512||analogRead(sensor1)<=512)
{
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,s2+s0);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,s2-s1);
delay(100);
}
//直角
//减速
while(analogRead(sensor3)<=512&&analogRead(sensor4)<=512)
{
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,90);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,64);
delay(t1);//久一点
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,0);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,z);
delay(t2);
}
while(analogRead(sensor1)<=512&&analogRead(sensor2)<=512)
{
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,90);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,64);
delay(t1);//久一点
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
analogWrite(ENA,0);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
analogWrite(ENB,0);
delay(t2+2000);
}
//转弯
}
/*
void loop(){
while (1){
digitalWrite(OUTA,LOW);
digitalWrite(OUTB,HIGH);
digitalWrite(ENA,HIGH);
digitalWrite(OUTC,LOW);
digitalWrite(OUTD,HIGH);
digitalWrite(ENB,HIGH);
}
}
*/