|
#define uchar unsigned char
uchar sum,n;
int start_pin = 36,pin_l=14,pin_r=15;
int i,j,k,l;
int valtab[] ={3,2,1,4,5,6},table[6];
void setup()
{
for(i=start_pin,l=start_pin + 6;i<l;i++)
{pinMode(i,OUTPUT);}
pinMode(pin_l,INPUT);
pinMode(pin_r,INPUT);
for(i=9;i<13;i++)
{
pinMode(i,OUTPUT);
}
}
void loop()
{
caiji();
}
void caiji()
{
for(i=start_pin,j=0,k = i + 3,l = k + 3;i<l;i++)
{
digitalWrite(i,LOW);
delay(10);
if(i<k){
if(digitalRead(pin_l)) table[j]=valtab[j]; else table[j]=0;
}else{
if(digitalRead(pin_r)) table[j]=valtab[j]; else table[j]=0;
}
j++;
if(j==6)
{
sum=table[0]+table[1]+table[2]+table[3]+table[4]+table[5];
switch(sum)
{
case 1: motor(9,10,11,12,50,50);break;
case 4: motor(10,9,12,11,50,50);break;
}
}
}
}
void motor(uchar IN1,uchar IN2, uchar IN3,uchar IN4,uchar a,uchar b)
{
analogWrite(IN1,a);
analogWrite(IN2,0);
analogWrite(IN3,b);
analogWrite(IN2,0);
}
这个是我们写的程序,只测试了中间两个,一个检测到的让电机正转,另一个检测到的话,让电机反转,用的是直流减速电机,不过中间两个分别检测到的时候,它都出现过正反转,而且总感觉它反应的有点慢,求大虾们指点一下
|
|