|
int pin[3] = {A0, A4, A3}; //從左至右對(duì)應(yīng)
int velocity = 210; //定義速率
byte value;
byte value_his = 0; //記錄上一次的傳感器值
void setup()
{
pinMode( 5 , OUTPUT);//右
pinMode( 6 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
}
void loop()
{
value = 0;
for(int i=0; i<3; i++)
{
value |= (digitalRead(pin[i]) << i);
}
if(value == 0x00)
{ //當(dāng)傳感器都沒(méi)有觸發(fā)時(shí)默認(rèn)為上一次的值
value = value_his;
}
switch (value)
{
case 0x07: //全部觸發(fā)
Forwards();
break;
case 0x06: //觸發(fā)右邊兩個(gè)
while(!digitalRead(pin[1])){ //通過(guò)while 循環(huán)使小車回到跑道中間
Right();
}
break;
case 0x04: //觸發(fā)右邊一個(gè)
while(!digitalRead(pin[1]))
{
Right();
}
break;
case 0x03: //觸發(fā)左邊兩個(gè)
while(!digitalRead(pin[1]))
{
Left();
}
break;
case 0x02: //觸發(fā)中間一個(gè)
Forwards();
break;
case 0x01: //觸發(fā)左邊一個(gè)
while(!digitalRead(pin[1]))
{
Left();
}
break;
}
value_his = value;
}
void Left()
{
analogWrite( 5 ,230);//左
analogWrite( 6 ,0 );
analogWrite( 9 ,240);
analogWrite( 10 , 0);
delay(1);
}
void Right()
{
analogWrite( 5 ,230);
analogWrite( 6 , 0 );
analogWrite( 9 ,220);
analogWrite( 10 ,0 );
delay(1);
}
void Forwards()
{
analogWrite( 5 ,240 );//左
analogWrite( 6 , 0 );
analogWrite( 9 ,220);
analogWrite( 10 ,0 );
delay(1);
}
void back()
{
analogWrite( 5 , 0 );
analogWrite( 6 ,230 );
analogWrite( 9 , 0 );
analogWrite( 10 ,255 );
delay(1);
}
|
|