arduino蓝牙遥控小车.docx
《arduino蓝牙遥控小车.docx》由会员分享,可在线阅读,更多相关《arduino蓝牙遥控小车.docx(12页珍藏版)》请在冰豆网上搜索。
arduino蓝牙遥控小车
Arduino蓝牙遥控小车
作者:
陈帅
一、效果图
二、demo
方案一:
unsignedcharch,i=0,j=0,flag=5;//标记小车当前状态默认为5,小车关闭
/************************************
*函数名:
setup()
*功能:
1、初始化串口波特率115200
2、设置管脚状态
3、初始关闭小车引擎
*参数:
无
*返回值:
无
************************************/
voidsetup()
{
Serial.begin(115200);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
digitalWrite(4,1);
stopcar_api();
}
/************************************
*函数名:
front()
*功能:
小车前进
*参数:
无
*返回值:
无
************************************/
voidfront()
{
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);//前进时关闭小车的挖掘手臂
}
/************************************
*函数名:
behind()
*功能:
小车后退
*参数:
无
*返回值:
无
************************************/
voidbehind()
{
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,LOW);//后退时关闭小车的挖掘手臂
}
/************************************
*函数名:
left()
*参数:
小车左转
*返回值:
无
************************************/
voidleft_api()
{
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);//左转时关闭小车的挖掘手臂
}
/************************************
*函数名:
right()
*参数:
小车右转
*返回值:
无
************************************/
voidright_api()
{
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);//右转时关闭小车的挖掘手臂
}
/************************************
*函数名:
watu()
*功能:
小车挖土
*参数:
无
*返回值:
无
************************************/
voidwatu_api()
{
digitalWrite(8,HIGH);//
digitalWrite(9,HIGH);//
digitalWrite(10,HIGH);//关闭引擎,小车原地挖土
digitalWrite(11,HIGH);
}
/************************************
*函数名:
stopcar()
*功能:
小车停止
*参数:
无
*返回值:
无
************************************/
voidstopcar_api()
{
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
flag=5;//停止状态
}
/************************************
*函数名:
stopcar()
*功能:
小车左转
*参数:
无
*返回值:
无
************************************/
voiduser_left()
{
if(flag==5)
{
right_api();//小车原地左转
delay(200);
stopcar_api();
}
elseif(flag==0)//小车边前进边左转
{
for(i=0;i<20;i++)
{
front();
delay
(1);
right_api();
delay
(1);
}
}
elseif(flag==1)//小车边后退边左转
{
for(i=0;i<20;i++)
{
behind();
delay
(1);
right_api();
delay
(1);
}
};
}
voiduser_right()
{
if(flag==5)
{
left_api();//小车原地右转
delay(200);
stopcar_api();
}
elseif(flag==0)//小车边前进边右转
{
for(i=0;i<20;i++)
{
front();
delay
(1);
left_api();
delay
(1);
}
}
elseif(flag==1)//小车边后退边右转
{
for(i=0;i<20;i++)
{
behind();
delay
(1);
left_api();
delay
(1);
}
};
}
/************************************
*函数名:
主循环
*参数:
无
*返回值:
无
************************************/
voidloop()
{
if(Serial.available()>0)
{
ch=Serial.read();
Serial.print(ch);
if(ch==4)//前进(只是前进)
{
front();
flag=0;
}
elseif(ch==7)//后退(只是后退)
{
behind();
flag=1;
}
elseif(ch==5)//左
{
user_left();
}
elseif(ch==6)//右
{
user_right();
}
elseif(ch>7)//挖土
{
watu_api();
delay(200);
stopcar_api();
}
elseif(ch==1)//刹车
{
stopcar_api();
}
Serial.print(flag);
}
}
方案二:
voidsetup()
{
Serial.begin(115200);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
digitalWrite(4,1);
stopcar();
}
voidfront()
{
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
}
voidbehind()
{
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
}
voidleft()
{
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
}
voidright()
{
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
}
voidwatu()
{
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}
voidstopcar()
{
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
unsignedcharch,flag=2;
voidloop()
{
if(Serial.available()>0)
{
ch=Serial.read();
Serial.print(ch);
if(ch==4)//前进
{
front();
flag=0;
}
elseif(ch==7)//后退
{
behind();
flag=1;
}
elseif(ch==5)//左
{
right();
flag=3;
delay(200);
stopcar();
}
elseif(ch==6)//右
{
left();
flag=2;
delay(200);
stopcar();
}
elseif(ch>7)//挖土
{
watu();
flag=4;
delay(200);
stopcar();
}
elseif(ch==1)//刹车
{
stopcar();
flag=5;
}
Serial.print(flag);
}
}