|
|
int EN1=6;//使能引脚
int EN2=5;
int IN1=7;//驱动引脚
int IN2=4;
int IN3=2;
int IN4=3;
void Motor1(int pwm,boolean reverse)//电机1的PWM调速
{
analogWrite(EN1,pwm);
if(reverse)
{
digitalWrite(IN1,HIGH);
}
else
{
digitalWrite(IN2,LOW);
}
}
void Motor2(int pwm,boolean reverse)//电机2的PWM调速
{
analogWrite(EN2,pwm);
if(reverse)
{
digitalWrite(IN3,HIGH);
}
else
{
digitalWrite(IN4,LOW);
}
}
void turnleft()//电机左转
{
Motor1(0,true);
Motor2(100,true);
}
void turnleft_fast()//电机快速左转弯
{
Motor1(0,true);
Motor2(110,true);
}
void turnright()//电机右转
{
Motor1(100,false);
Motor2(0,false);
}
void turnright_fast()//电机快速右转
{
Motor1(110,false);
Motor2(0,false);
}
void forward()//直行
{
Motor1(100,false);
Motor2(100,true);
}
void forward_fast()//快速直行
{
Motor1(110,false);
Motor2(110,true);
}
void back()//后退
{
Motor1(100,true);
Motor2(100,false);
}
void back_fast()//快速后退
{
Motor1(110,true);
Motor2(110,false);
}
void _stop()//停止
{
Motor1(0,false);
Motor2(0,false);
}
void setup()//初始化输出引脚
{
int i;
for(i=2;i<=7;i++)
pinMode(i,OUTPUT);
pinMode(8,INPUT);//传感器信号输入引脚
pinMode(9,INPUT);//引脚
pinMode(10,INPUT);//引脚
}
void loop()
{
//自主寻迹模式(库函数方法,反应慢)if((digitalRead(8)==1)&&(digitalRead(9)==0)&&(digitalRead(10)==1))
// forward();
//if((digitalRead(8)==0)&&(digitalRead(9)==1)&&(digitalRead(10)==1))
//turnleft();
//if((digitalRead(8)==1)&&(digitalRead(9)==1)&&(digitalRead(10)==0))
//turnright();
//if((digitalRead(8)==1)&&(digitalRead(9)==1)&&(digitalRead(10)==1))
//_stop();
switch(PINB&0x07)//自主寻迹模式(寄存器方法,反应快)
{
case 0x05:forward();
delay(10);break;
case 0x06:turnleft();
delay(10);break;
case 0x03:turnright();
delay(10);break;
case 0x07:back();
delay(10);break;
default:break;
}
}
|
|