/*前进 按下发出 ONA 松开ONF
后退:按下发出 ONB 松开ONF
左转:按下发出 ONC 松开ONF
右转:按下发出 OND 松开ONF
停止:按下发出 ONE 松开ONF
蓝牙程序功能是按下对应的按键执行操,松开按键就停止
*/
char getstr;
int gear= 50;
int cel=100;
int left_val=0;
int right_val=0;#define left_VSP 2 //PWM调速
#define left_XI 3 //方向控制;低电平正传电机使能端;SW2=ON,低电平有效
#define left_FG 4 //速度脉冲
#define left_DIR 5 //方向控制;低电平正传
#define left_ALM A0 //警告输出,高电平故障#define right_VSP 6 //PWM调速
#define right_XI 7 //方向控制;低电平正传电机使能端;SW2=ON,低电平有效
#define right_FG 8 //速度脉冲
#define right_DIR 9 //方向控制;低电平正传
#define right_ALM A1 //警告输出,高电平故障void setup()
{
//初始化电机驱动IO为输出方式
Serial.begin(9600);
pinMode(left_VSP,OUTPUT);
pinMode(left_XI,OUTPUT);
pinMode(left_FG,OUTPUT);
pinMode(left_DIR,OUTPUT);pinMode(right_VSP,OUTPUT);
pinMode(right_XI,OUTPUT);
pinMode(right_FG,OUTPUT);
pinMode(right_DIR,OUTPUT);
}
void run() // 前进
{ digitalWrite(left_DIR,LOW);
digitalWrite(right_DIR,HIGH);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void back() // 后退
{ digitalWrite(left_DIR,HIGH);
digitalWrite(right_DIR,LOW);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void brake() //刹车,停车
{ digitalWrite(left_XI,LOW);
delay(10);
digitalWrite(right_XI,LOW);
delay(10);}void empty() //空
{ digitalWrite(left_XI,HIGH);
delay(10);
digitalWrite(right_XI,HIGH);
delay(10);}void left() // 左转
{ digitalWrite(left_DIR,HIGH);
digitalWrite(right_DIR,HIGH);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void right() // 右转
{ digitalWrite(left_DIR,LOW);
digitalWrite(right_DIR,LOW);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void spin_left() // S左转
{
digitalWrite(right_DIR,HIGH);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,LOW);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void left_back() // 左后转
{
digitalWrite(left_DIR,HIGH);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,LOW);
analogWrite(right_VSP,gear);
delay(10);
}
void spin_right() // S右转
{
digitalWrite(left_DIR,LOW);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,LOW);
analogWrite(right_VSP,gear);
delay(10);
}void right_back() // 右后转
{
digitalWrite(right_DIR,LOW);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,LOW);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void accelerate()//加速
{
cel=cel+10;
brake();
}void decelerate()//减速
{
cel=cel-10;
brake();
}void loop()
{
left_val= analogRead(left_ALM);
right_val= analogRead(right_ALM);
if(left_val>=0)
{ if(left_val>=0)
{
getstr=Serial.read(); //
delay(10);//传输延迟时间
if(getstr=='A')
{
run();
}
else if(getstr=='B')
{
back();
}
else if(getstr=='C')
{
left();
}
else if(getstr=='D')
{
right();
}
else if(getstr=='E')
{
spin_left();
}
else if(getstr=='F')
{
spin_right();
}
else if(getstr=='G')
{
empty();
}
else if(getstr=='H')
{
accelerate();
}
else if(getstr=='I')
{
decelerate();
}
else if(getstr=='K')
{
left_back();
}
else if(getstr=='L')
{
right_back();
}
else if(getstr=='Z')
{
brake();
}
}
}
}
后退:按下发出 ONB 松开ONF
左转:按下发出 ONC 松开ONF
右转:按下发出 OND 松开ONF
停止:按下发出 ONE 松开ONF
蓝牙程序功能是按下对应的按键执行操,松开按键就停止
*/
char getstr;
int gear= 50;
int cel=100;
int left_val=0;
int right_val=0;#define left_VSP 2 //PWM调速
#define left_XI 3 //方向控制;低电平正传电机使能端;SW2=ON,低电平有效
#define left_FG 4 //速度脉冲
#define left_DIR 5 //方向控制;低电平正传
#define left_ALM A0 //警告输出,高电平故障#define right_VSP 6 //PWM调速
#define right_XI 7 //方向控制;低电平正传电机使能端;SW2=ON,低电平有效
#define right_FG 8 //速度脉冲
#define right_DIR 9 //方向控制;低电平正传
#define right_ALM A1 //警告输出,高电平故障void setup()
{
//初始化电机驱动IO为输出方式
Serial.begin(9600);
pinMode(left_VSP,OUTPUT);
pinMode(left_XI,OUTPUT);
pinMode(left_FG,OUTPUT);
pinMode(left_DIR,OUTPUT);pinMode(right_VSP,OUTPUT);
pinMode(right_XI,OUTPUT);
pinMode(right_FG,OUTPUT);
pinMode(right_DIR,OUTPUT);
}
void run() // 前进
{ digitalWrite(left_DIR,LOW);
digitalWrite(right_DIR,HIGH);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void back() // 后退
{ digitalWrite(left_DIR,HIGH);
digitalWrite(right_DIR,LOW);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void brake() //刹车,停车
{ digitalWrite(left_XI,LOW);
delay(10);
digitalWrite(right_XI,LOW);
delay(10);}void empty() //空
{ digitalWrite(left_XI,HIGH);
delay(10);
digitalWrite(right_XI,HIGH);
delay(10);}void left() // 左转
{ digitalWrite(left_DIR,HIGH);
digitalWrite(right_DIR,HIGH);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void right() // 右转
{ digitalWrite(left_DIR,LOW);
digitalWrite(right_DIR,LOW);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void spin_left() // S左转
{
digitalWrite(right_DIR,HIGH);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,LOW);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void left_back() // 左后转
{
digitalWrite(left_DIR,HIGH);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,LOW);
analogWrite(right_VSP,gear);
delay(10);
}
void spin_right() // S右转
{
digitalWrite(left_DIR,LOW);
digitalWrite(left_FG,HIGH);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_FG,LOW);
analogWrite(left_FG,cel);
delay(200);
digitalWrite(left_XI,HIGH);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,LOW);
analogWrite(right_VSP,gear);
delay(10);
}void right_back() // 右后转
{
digitalWrite(right_DIR,LOW);
digitalWrite(right_FG,HIGH);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(right_FG,LOW);
analogWrite(right_FG,cel);
delay(200);
digitalWrite(left_XI,LOW);
analogWrite(left_VSP,gear);
digitalWrite(right_XI,HIGH);
analogWrite(right_VSP,gear);
delay(10);
}void accelerate()//加速
{
cel=cel+10;
brake();
}void decelerate()//减速
{
cel=cel-10;
brake();
}void loop()
{
left_val= analogRead(left_ALM);
right_val= analogRead(right_ALM);
if(left_val>=0)
{ if(left_val>=0)
{
getstr=Serial.read(); //
delay(10);//传输延迟时间
if(getstr=='A')
{
run();
}
else if(getstr=='B')
{
back();
}
else if(getstr=='C')
{
left();
}
else if(getstr=='D')
{
right();
}
else if(getstr=='E')
{
spin_left();
}
else if(getstr=='F')
{
spin_right();
}
else if(getstr=='G')
{
empty();
}
else if(getstr=='H')
{
accelerate();
}
else if(getstr=='I')
{
decelerate();
}
else if(getstr=='K')
{
left_back();
}
else if(getstr=='L')
{
right_back();
}
else if(getstr=='Z')
{
brake();
}
}
}
}


