搜档网
当前位置:搜档网 › 循迹小车 Arduino代码

循迹小车 Arduino代码

#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);
}
}
*/

相关主题