用arduino制作蓝牙遥控小车(2)

2019-03-03 17:05

· 6·

***********************************************************************/

void BT_SERVO_REDUCE() //舵机左转

{

while(!Serial.available()) //若无指令到来,则循环执行本条程序 {

BT_PWM-=2;

if(BT_PWM<5)BT_PWM=5; //设置最角度值

myservo.write(BT_PWM); //给舵机输送当前角度值 delay(50); //延时50ms } }

void BT_SERVO_ADD() //舵机右转 {

while(!Serial.available()) //原理同上 {

BT_PWM+=2;

if(BT_PWM>150)BT_PWM=150; myservo.write(BT_PWM); delay(50); } }

/***********激光灯开关函数*************/

void LASER_ON_SWITCH() //打开激光灯 {

LASER_Flag=1; //先判断当前激光灯状态,1则当前关 // 闭,0则当前打开 while(!Serial.available()) {

LASER_ON; //打开激光灯

} }

void LASER_OFF_SWITCH() //关闭激光灯,原理同上 {

LASER_Flag=0;

while(!Serial.available()) {

LASER_OFF; } }

/************测距模块工作函数***********/ void MY_DISTANCE() {

·7·

digitalWrite(Triq,LOW); //先向Triq引脚输送一个大于10us的高电平 delayMicroseconds(2); digitalWrite(Triq,HIGH); delayMicroseconds(10);

distance=pulseIn(Echo,HIGH); //检测Echo高电平持续时间,返回单位是us distance=distance*0.018; //由时间转换成距离

Serial.print(\ //串口打印”distance=”这几个字符 Serial.print(distance); //串口打印测得的距离值 Serial.println(\ //串口打印单位cm

}

/************电机转向函数**************/

void turnleft() //通过给(A1,B1,A2,B2)引脚赋值(0,1,1,0),使小车左转 //赋0表示引脚低电平,赋1表示引脚高电平 {

digitalWrite(INT_A1,0); digitalWrite(INT_B1,1); digitalWrite(INT_A2,1); digitalWrite(INT_B2,0); }

void turnright() //通过给(A1,B1,A2,B2)引脚赋值(1,0,01),使小车右转 //赋0表示引脚低电平,赋1表示引脚高电平 {

digitalWrite(INT_A1,1); digitalWrite(INT_B1,0); digitalWrite(INT_A2,0); digitalWrite(INT_B2,1); }

void forward() //通过给(A1,B1,A2,B2)引脚赋值(0,1,0,1),使小车前进 //赋0表示引脚低电平,赋1表示引脚高电平 {

digitalWrite(INT_A1,0); digitalWrite(INT_B1,1); digitalWrite(INT_A2,0); digitalWrite(INT_B2,1); }

void backup() //通过给(A1,B1,A2,B2)引脚赋值(1,0,1,0),使小车后退 //赋0表示引脚低电平,赋1表示引脚高电平

· 8·

{

digitalWrite(INT_A1,1); digitalWrite(INT_B1,0); digitalWrite(INT_A2,1); digitalWrite(INT_B2,0); }

void stopcar() //通过给(A1,B1,A2,B2)引脚赋值(0,0,0,0),使小车停止 //赋0表示引脚低电平,赋1表示引脚高电平 {

digitalWrite(INT_A1,0); digitalWrite(INT_B1,0); digitalWrite(INT_A2,0); digitalWrite(INT_B2,0); }

/***注意赋值可能因为电机的连接方式不同而有所改动,具体可自己试验得出正确赋值***/

/****************避障模式****************/

void BiZhang() {

while(!Serial.available()) {

MY_DISTANCE(); //引用测距函数先测量距离

delay(50);

if(distance>20&&distance<40)turnleft(); //判断距离后指示小车转向或前进或后退 else if(distance<20)backup(); else if(distance>40)forward(); }

}

注意:

程序中多处用到了 while(!Serial.available())这条语句。为的是能够在下一条指令到底前能够循环运行本条指令动作,能够避免程序运行出错。

按照程序定义的引脚,插上各种模块,组装你的小车: 接下来,手机下载SPP蓝牙串口软件:

打开软件,向后滑动切换到“键盘”,软件提供了12个自定义按钮,长按按钮自定义按钮,名称写你要定义的按钮名称,选择发送“字符”,消息就是程序中定义的要发送的字符。如:名称:前进 消息:a。

·9·

图10.12 小车组装效果图 图10.13 SPP蓝牙串口软件

图10.14 自定义按钮界面 图10.15 按钮编辑器

定义完所有按钮之后,点击右上角的“连接”,搜索设备,注意此时蓝牙模块直接插在扩展板的“bluetooth”插槽内,上电后蓝牙指示灯处于快闪状态表明处于配对等待模式,等待片刻手机会搜索到蓝牙,默认名字为H-C-2010-06-01(注意:不同厂家生产的模块可能名字不同)

· 10·

图10.16 编辑好按钮图示 图10.17 搜索附近蓝牙设备

点击蓝牙名字,输入配对密码,默认为“1234”,需要提到的一点是,当点击“测距”按钮小车测量距离后,返回的距离值会显示在SPP软件的“终端”窗口内,向左滑动进入“终端”窗口,就能看到测量到的距离值啦!

图10.18 输入配对密码 图10.19 距离测量值回传演示 好了,到此为止你的手机蓝牙遥控小车就完工啦,享受无线操作的乐趣吧!


用arduino制作蓝牙遥控小车(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:13-机电处-矿井泵工题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: