“(RB-13K049)AS-4WD语音识别移动机器人”的版本间的差异
(→产品相关推荐) |
|||
(未显示1个用户的5个中间版本) | |||
第32行: | 第32行: | ||
====步骤12:插入蓝牙模块==== | ====步骤12:插入蓝牙模块==== | ||
注意:在插入蓝牙模块之前要将Carduino中下载好程序,插着蓝牙模块进行程序下载会造成程序下载不成功问题。<br/> | 注意:在插入蓝牙模块之前要将Carduino中下载好程序,插着蓝牙模块进行程序下载会造成程序下载不成功问题。<br/> | ||
− | + | ==配件参数== | |
− | ==凌阳61板技术参数== | + | ===凌阳61板技术参数=== |
# 控制器供电范围:DC5V 或DC3.3V | # 控制器供电范围:DC5V 或DC3.3V | ||
# 机器人供电7.4V 锂电 | # 机器人供电7.4V 锂电 | ||
第39行: | 第39行: | ||
# 波特率:115200b / s | # 波特率:115200b / s | ||
# 扩展功能:AD 输入、舵机控制等 | # 扩展功能:AD 输入、舵机控制等 | ||
+ | ===Carduino UNO控制器=== | ||
+ | [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C076)CarDuino_UNO_R3%EF%BC%88%E7%9B%B4%E6%8F%92%E8%8A%AF%E7%89%87%EF%BC%89 Carduino UNO相关资料及使用方法]<br/> | ||
+ | ===双H桥电机驱动板=== | ||
+ | [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C025)%E5%8F%8CH%E6%A1%A5%E7%9B%B4%E6%B5%81%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8%E6%9D%BF 双H桥电机驱动板相关资料及使用方法]<br/> | ||
+ | ===超声波传感器=== | ||
+ | [http://www.alsrobot.cn/wiki/index.php?title=(SKU:RB-02S001)RB_URF02%E8%B6%85%E5%A3%B0%E6%B3%A2%E4%BC%A0%E6%84%9F%E5%99%A8 超声波传感器相关资料及使用方法]<br/> | ||
+ | ===传感器扩展板=== | ||
+ | [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C015)Arduino_%E4%BC%A0%E6%84%9F%E5%99%A8%E6%89%A9%E5%B1%95%E6%9D%BFv5.0#.E8.B4.AD.E4.B9.B0.E5.9C.B0.E5.9D.80 V5.0传感器扩展板相关资料及使用方法]<br/> | ||
+ | ===RB-421舵机=== | ||
+ | [http://www.alsrobot.cn/wiki/index.php?title=(SKU:RB-04M008)RB-421%E8%88%B5%E6%9C%BA RB-421舵机相关资料及使用方法]<br/> | ||
+ | ===蓝牙模块=== | ||
+ | [http://www.alsrobot.cn/wiki/index.php?title=(SKU:RB-03T008)RB%E6%97%A0%E7%BA%BF%E8%93%9D%E7%89%99%E6%A8%A1%E5%9D%97 RB无线蓝牙模块相关资料及使用方法]<br/> | ||
==使用方法== | ==使用方法== | ||
===凌阳61控制板供电<br/>=== | ===凌阳61控制板供电<br/>=== | ||
第52行: | 第64行: | ||
到此第一条命令训练完毕。如果训练成功控制器会自动进入吓一跳命令的训练,如果环境很吵或前后你说的话偏差太大,控制器会提示“没有声音”或者“没有听清”这样这条命令就会从新训练。当所有的命令训练完毕,控制器会提示“准备好了”。此时命令已经存储完毕,断电后开启不用从新训练,如果在训练过程中断电,则再次上电时会从新从第一条训练。<br/> | 到此第一条命令训练完毕。如果训练成功控制器会自动进入吓一跳命令的训练,如果环境很吵或前后你说的话偏差太大,控制器会提示“没有声音”或者“没有听清”这样这条命令就会从新训练。当所有的命令训练完毕,控制器会提示“准备好了”。此时命令已经存储完毕,断电后开启不用从新训练,如果在训练过程中断电,则再次上电时会从新从第一条训练。<br/> | ||
[[文件:RB13K04904.png|500px|有框|居中]] | [[文件:RB13K04904.png|500px|有框|居中]] | ||
− | + | 按键说明:<br> | |
KEY1:按下KEY1 键播放控制器内所有语音(控制器自检功能)<br/> | KEY1:按下KEY1 键播放控制器内所有语音(控制器自检功能)<br/> | ||
KEY2:紧急停止命令等同语音“停止”命令<br/> | KEY2:紧急停止命令等同语音“停止”命令<br/> | ||
KEY3:从新进行语音训练(当识别灵敏度降低或更换法令人时使用)<br/> | KEY3:从新进行语音训练(当识别灵敏度降低或更换法令人时使用)<br/> | ||
+ | |||
===凌阳61 接线说明=== | ===凌阳61 接线说明=== | ||
[[文件:RB13K04905.png|500px|有框|居中]] | [[文件:RB13K04905.png|500px|有框|居中]] | ||
第68行: | 第81行: | ||
|- | |- | ||
|align="center"|超声波模块引脚 | |align="center"|超声波模块引脚 | ||
− | |align="center"|Carduino | + | |align="center"|Carduino UNO控制器 |
|- | |- | ||
|align="center"|5V | |align="center"|5V | ||
第81行: | 第94行: | ||
|align="center"|INPUT | |align="center"|INPUT | ||
|align="center"|数字2脚S端 | |align="center"|数字2脚S端 | ||
− | | | + | |} |
+ | ====双H桥驱动板接线==== | ||
+ | {|border="1" cellspacing="0" align="center" cellpadding="5" width="400px" | ||
+ | |- | ||
+ | |align="center"|双H桥驱动板 | ||
+ | |align="center"|Carduino UNO控制器 | ||
+ | |- | ||
+ | |align="center"|EA | ||
+ | |align="center"|数字脚10信号S | ||
+ | |- | ||
+ | |align="center"|EB | ||
+ | |align="center"|数字脚5信号S | ||
+ | |- | ||
+ | |align="center"|I1 | ||
+ | |align="center"|数字脚8信号S | ||
+ | |- | ||
+ | |align="center"|I2 | ||
+ | |align="center"|数字脚9信号S | ||
+ | |- | ||
+ | |align="center"|I3 | ||
+ | |align="center"|数字脚7信号S | ||
+ | |- | ||
+ | |align="center"|I4 | ||
+ | |align="center"|数字脚6信号S | ||
+ | |} | ||
+ | ===语音控制4WD平台=== | ||
+ | ====基本语音控制==== | ||
+ | 第一步:打开控制器电源及4WD 机器人电源。<br/> | ||
+ | 第二步:等待蓝牙配对。主从蓝牙模块黄灯都亮起表示配对成功(十秒左右)。<br/> | ||
+ | 第三步:发号施令,在说出命令后4WD 开始运动,控制器回应相同的命令。如说“前进”4WD 机器人向前走,控制器回应“前进”。<br/> | ||
+ | ====复合语音控制==== | ||
+ | 第一次说“前进”4WD 慢速前进(一档),控制器应答“前进”再说一次“前进”,4WD 快速前进(二档)控制器应答“加速前进”再次说“前进”4WD 更快速前进(三档)控制器应答“全速前进”。在“前进”命令中执行其他命令后4WD 从慢速前进(一档)开始。<br/> | ||
+ | 第一次说“停止”4WD 停止所有动作,控制器应答“停止”再次说“停止”4WD 机器人测试前面障碍物与超声波探头距离,测试完成后数据回传给控制器进行播报“当前距离XX 厘米。”<br/> | ||
+ | ==例子程序== | ||
+ | <pre style="color:blue"> | ||
+ | int srfPin = 2; //定义srfPin 发送引脚为2 | ||
+ | int z; //定义全局变量z | ||
+ | int Distance; //定义距离寄存器存放测试距离数据 | ||
+ | int duration; //定义脉宽寄存器 | ||
+ | int data; //定义串口接收寄存器 | ||
+ | int ultrasonic(int distance) | ||
+ | { digitalWrite(srfPin, LOW); //确保在发送脉冲前保持该引脚为低电平 | ||
+ | delayMicroseconds(2); //保持低电平2ms | ||
+ | digitalWrite(srfPin, HIGH); //发送一个高脉冲开始测距 | ||
+ | delayMicroseconds(10); //保持10ms | ||
+ | digitalWrite(srfPin, LOW); //在等待脉冲返回来之前发送低电平 | ||
+ | pinMode(srfPin, INPUT); //调整超声波引脚为输入 | ||
+ | duration = pulseIn(srfPin, HIGH); //从SRF05 回波脉冲在读取在微秒 | ||
+ | distance = duration/58; //除以58 就是我们要得到的厘米数 | ||
+ | return distance; //返回厘米数 | ||
+ | } | ||
+ | void BACK() //后退 | ||
+ | { | ||
+ | analogWrite(10,120); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,120); | ||
+ | digitalWrite(7,LOW); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,HIGH); | ||
+ | digitalWrite(8,LOW); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(9,HIGH); | ||
+ | } | ||
+ | void GO() //前进 | ||
+ | { | ||
+ | analogWrite(10,100); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,100); | ||
+ | digitalWrite(7,HIGH); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(9,LOW); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(8,HIGH); | ||
+ | } | ||
+ | void QUICKEN() //加速前进 | ||
+ | { | ||
+ | analogWrite(10,120); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,120); | ||
+ | digitalWrite(7,HIGH); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(9,LOW); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(8,HIGH); | ||
+ | } | ||
+ | void FULLSPEED() //全速前进 | ||
+ | { | ||
+ | analogWrite(10,250); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,250); | ||
+ | digitalWrite(7,HIGH); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(9,LOW); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(8,HIGH); | ||
+ | } | ||
+ | void LEFT() //左转 | ||
+ | { | ||
+ | analogWrite(10,170); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,170); | ||
+ | digitalWrite(7,HIGH); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(8,LOW); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(9,HIGH); | ||
+ | } | ||
+ | void RIGHT() //右转 | ||
+ | { | ||
+ | analogWrite(10,170); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,170); | ||
+ | digitalWrite(7,LOW); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,HIGH); | ||
+ | digitalWrite(8,HIGH); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(9,LOW); | ||
+ | } | ||
+ | void STOP() //停止 | ||
+ | { | ||
+ | analogWrite(10,0); //输入模拟值进行设定速度 | ||
+ | analogWrite(5,0); | ||
+ | digitalWrite(7,LOW); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,HIGH); | ||
+ | digitalWrite(8,HIGH); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(9,LOW); | ||
+ | } | ||
+ | void PLAYDISTANCE() //发送超声波数据 | ||
+ | { | ||
+ | Distance = ultrasonic(z); | ||
+ | if(Distance > 0 && Distance <= 10){ //判断测试距离为1 至10CM | ||
+ | Serial.print('a');} | ||
+ | else if(Distance > 10 && Distance <= 15){ //判断测试距离为11 至15CM | ||
+ | Serial.print('b');} //发送字符'b' | ||
+ | else if(Distance > 15 && Distance <= 20){ | ||
+ | Serial.print('c');} | ||
+ | else if(Distance > 20 && Distance <= 25){ | ||
+ | Serial.print('d');} | ||
+ | else if(Distance > 25 && Distance <= 30){ | ||
+ | Serial.print('e');} | ||
+ | else if(Distance > 30 && Distance <= 35){ | ||
+ | Serial.print('f');} | ||
+ | else if(Distance > 35 && Distance <= 40){ | ||
+ | Serial.print('g');} | ||
+ | else if(Distance > 40 && Distance <= 45){ | ||
+ | Serial.print('h');} | ||
+ | else if(Distance > 45 && Distance <= 50){ | ||
+ | Serial.print('i');} | ||
+ | else if(Distance > 50 && Distance <= 55){ | ||
+ | Serial.print('j');} | ||
+ | else if(Distance > 55 && Distance <= 60){ | ||
+ | Serial.print('k');} | ||
+ | else if(Distance > 60 && Distance <= 65){ | ||
+ | Serial.print('l');} | ||
+ | else if(Distance > 65 && Distance <= 70){ | ||
+ | Serial.print('m');} | ||
+ | else if(Distance > 70 && Distance <= 75){ | ||
+ | Serial.print('n');} | ||
+ | else if(Distance > 75 && Distance <= 80){ | ||
+ | Serial.print('o');} | ||
+ | else if(Distance > 80 && Distance <= 85){ | ||
+ | Serial.print('p');} | ||
+ | else if(Distance > 85 && Distance <= 90){ | ||
+ | Serial.print('q');} | ||
+ | else if(Distance > 90 && Distance <= 95){ | ||
+ | Serial.print('r');} | ||
+ | else{ | ||
+ | Serial.print('~');} | ||
+ | } | ||
+ | void setup(){ | ||
+ | Serial.begin(115200); //打开串口并设置通信波特率为9600 | ||
+ | pinMode(8,OUTPUT); //定义I1 接口 | ||
+ | pinMode(9,OUTPUT); //定义I2 接口 | ||
+ | pinMode(11,OUTPUT); //定义EA(PWM 调速)接口 | ||
+ | pinMode(5,OUTPUT); //定义EB(PWM 调速)接口 | ||
+ | pinMode(6,OUTPUT); //定义I4 接口 | ||
+ | pinMode(7,OUTPUT); //定义I3 接口 | ||
+ | } | ||
+ | void loop(){ //主程序开始 | ||
+ | Distance = ultrasonic(z); //读取超声波值 | ||
+ | data = Serial.read(); //读取串口数据 | ||
+ | switch (data){ | ||
+ | case 'W': //前进命令 | ||
+ | GO(); //前进函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | case 'X': //后退命令 | ||
+ | BACK(); //后退函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | case 'A': //左转命令 | ||
+ | LEFT(); //左转函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | case 'D': //右转命令 | ||
+ | RIGHT(); //右转函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | case 'S': //停止命令 | ||
+ | STOP(); //停止函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | case '1': //加速前进命令 | ||
+ | QUICKEN(); //加速前进函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | case '2': //全速前进命令 | ||
+ | FULLSPEED(); //全速前进函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | case '#': //测试当前距离命令 | ||
+ | PLAYDISTANCE(); //发送当前距离函数 | ||
+ | Serial.flush(); //刷新串口缓冲区数据 | ||
+ | break; | ||
+ | default: | ||
+ | break; | ||
+ | } | ||
} | } | ||
+ | </pre> | ||
+ | ==视频演示== | ||
+ | [[File:4wd yu yin 01.png|400px|左|link=http://v.youku.com/v_show/id_XMzQyODA1MzAw.html?from=y1.7-2]] | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | ==产品相关推荐== | ||
+ | [[文件:erweima.png|230px|无框|右]] | ||
+ | ===产品购买地址=== | ||
+ | [http://www.alsrobot.cn/goods-309.html AS-4WD语音控制移动机器人平台]<br/> | ||
+ | ===周边产品推荐=== | ||
+ | [http://www.alsrobot.cn/goods-407.html Arduino 4WD铝合金移动平台车灯套件]<br/> | ||
+ | [http://www.alsrobot.cn/goods-185.html Arduino 光电码盘 光电测速传感器]<br/> | ||
+ | ===相关问题解答=== | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=4875&highlight=4WD AS-4WD 碰撞机器人如何安装]<br/> | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=5473&fromuid=10780 4wd 红外线巡线壁障车调试助手没有反应]<br/> | ||
+ | ===相关学习资料=== | ||
+ | [http://v.youku.com/v_show/id_XMzQyODA1MzAw.html?from=y1.7-2 视频: Arduino-4WD移动机器人语音识别操控功能演示] | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3953&fromuid=10780 视频:机器人调试助手无线操控AS-4WD轮式机器人]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwMjk0NDE2.html 视频:Arduino-4WD移动机器人寻线功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwMjkyNDM2.html 视频:Arduino-4WD移动机器人碰撞功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwMjk4MjU2.html 视频:Arduino-4WD移动机器人追光功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwNTg5NTI4.html 视频:Arduino-4WD移动机器人寻线与避障功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMzQyNzk2MzM2.html 视频:Arduino-4WD移动机器人侦测避障功能演示]<br/> | ||
+ | [http://www.makerspace.cn/portal.php 奥松机器人技术论坛]<br/> |
2015年10月21日 (三) 14:10的最后版本
目录 |
产品概述
2014年最新推出的AS-4WD语音识别移动机器人是哈尔滨奥松机器人科技有限公司汲取国内外多款移动平台优点于一体,自主研发的语音识别的机器人。音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。 语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。与机器人进行语音交流,让机器人明白你说什么,这是人们长期以来梦寐以求的事情。AS-4WD语音识别移动机器人就可以实现你的梦想,其语音识别器采用凌阳单片机控制器可以学习记录你的声音,并且跟你实现人机对话,通过识别和理解过程把语音信号转变为相应命令,经无线蓝牙模块传输给机器人,从而可以完成前进、后退、左转、右转、测距播报等功能。这款平台非常适合Arduino爱好者、各大中小学开展机器人普及教育使用,更适合学生用其参加全国大学生电子大赛、智能车竞赛、足球机器人等比赛。让你轻松感受机器人DIY无限乐趣。
产品清单
安装步骤
4WD平台安装
步骤1:充电接口拨动开关连接线制作
步骤2:直流电机安装
4WD平台两侧电机安装方法相同,需要注意的是在安装电机之前需要将电机连接线使用电烙铁焊接好,并使用热缩过加热塑封。
步骤3:平台侧板安装
步骤4:平台端板安装
步骤5:双H桥驱动板安装
步骤6:充电接口拨动开关安装
步骤7;Carduino UNO 控制器安装
步骤8:RB-421舵机安装
步骤9:超声波传感器安装
步骤10:组合体安装
步骤11:4WD 轮子安装
步骤12:插入蓝牙模块
注意:在插入蓝牙模块之前要将Carduino中下载好程序,插着蓝牙模块进行程序下载会造成程序下载不成功问题。
配件参数
凌阳61板技术参数
- 控制器供电范围:DC5V 或DC3.3V
- 机器人供电7.4V 锂电
- 通信接口:RS232(串口)或TTL 配合无线蓝牙模组
- 波特率:115200b / s
- 扩展功能:AD 输入、舵机控制等
Carduino UNO控制器
双H桥电机驱动板
超声波传感器
传感器扩展板
RB-421舵机
蓝牙模块
使用方法
凌阳61控制板供电
整机供电三粒五号电池或外接5V 电源。
语音训练
按一下KEY3 键开始按照语音提示进行语音训练。
训练采用应答形式,每条指令训练两次,每条命令的训练方法是相同的,以第一条命令“前进”为例说明:
第一步:控制器提示“前进”
第二部:我们对着话筒说“前进”
第三部:语音控制器提示“再说一遍”
第四部:我们再次对着话筒说“前进”
到此第一条命令训练完毕。如果训练成功控制器会自动进入吓一跳命令的训练,如果环境很吵或前后你说的话偏差太大,控制器会提示“没有声音”或者“没有听清”这样这条命令就会从新训练。当所有的命令训练完毕,控制器会提示“准备好了”。此时命令已经存储完毕,断电后开启不用从新训练,如果在训练过程中断电,则再次上电时会从新从第一条训练。
按键说明:
KEY1:按下KEY1 键播放控制器内所有语音(控制器自检功能)
KEY2:紧急停止命令等同语音“停止”命令
KEY3:从新进行语音训练(当识别灵敏度降低或更换法令人时使用)
凌阳61 接线说明
控制器————无线蓝牙模块
IOB7(RXD) ——PIN5(TXD)
IOB10(TXD)——PIN4(RXD)
IOB+(5V) ———PIN1(5V)
IOB-(GND)———PIN2(GND)
4WD 平台部分接线
超声波传感器接线
超声波模块引脚 | Carduino UNO控制器 |
5V | 数字2脚VCC端 |
GND | 数字2脚GND端 |
OUTPUT | 空 |
INPUT | 数字2脚S端 |
双H桥驱动板接线
双H桥驱动板 | Carduino UNO控制器 |
EA | 数字脚10信号S |
EB | 数字脚5信号S |
I1 | 数字脚8信号S |
I2 | 数字脚9信号S |
I3 | 数字脚7信号S |
I4 | 数字脚6信号S |
语音控制4WD平台
基本语音控制
第一步:打开控制器电源及4WD 机器人电源。
第二步:等待蓝牙配对。主从蓝牙模块黄灯都亮起表示配对成功(十秒左右)。
第三步:发号施令,在说出命令后4WD 开始运动,控制器回应相同的命令。如说“前进”4WD 机器人向前走,控制器回应“前进”。
复合语音控制
第一次说“前进”4WD 慢速前进(一档),控制器应答“前进”再说一次“前进”,4WD 快速前进(二档)控制器应答“加速前进”再次说“前进”4WD 更快速前进(三档)控制器应答“全速前进”。在“前进”命令中执行其他命令后4WD 从慢速前进(一档)开始。
第一次说“停止”4WD 停止所有动作,控制器应答“停止”再次说“停止”4WD 机器人测试前面障碍物与超声波探头距离,测试完成后数据回传给控制器进行播报“当前距离XX 厘米。”
例子程序
int srfPin = 2; //定义srfPin 发送引脚为2 int z; //定义全局变量z int Distance; //定义距离寄存器存放测试距离数据 int duration; //定义脉宽寄存器 int data; //定义串口接收寄存器 int ultrasonic(int distance) { digitalWrite(srfPin, LOW); //确保在发送脉冲前保持该引脚为低电平 delayMicroseconds(2); //保持低电平2ms digitalWrite(srfPin, HIGH); //发送一个高脉冲开始测距 delayMicroseconds(10); //保持10ms digitalWrite(srfPin, LOW); //在等待脉冲返回来之前发送低电平 pinMode(srfPin, INPUT); //调整超声波引脚为输入 duration = pulseIn(srfPin, HIGH); //从SRF05 回波脉冲在读取在微秒 distance = duration/58; //除以58 就是我们要得到的厘米数 return distance; //返回厘米数 } void BACK() //后退 { analogWrite(10,120); //输入模拟值进行设定速度 analogWrite(5,120); digitalWrite(7,LOW); //使直流电机(右)顺时针转 digitalWrite(6,HIGH); digitalWrite(8,LOW); //使直流电机(左)逆时针转 digitalWrite(9,HIGH); } void GO() //前进 { analogWrite(10,100); //输入模拟值进行设定速度 analogWrite(5,100); digitalWrite(7,HIGH); //使直流电机(右)顺时针转 digitalWrite(6,LOW); digitalWrite(9,LOW); //使直流电机(左)逆时针转 digitalWrite(8,HIGH); } void QUICKEN() //加速前进 { analogWrite(10,120); //输入模拟值进行设定速度 analogWrite(5,120); digitalWrite(7,HIGH); //使直流电机(右)顺时针转 digitalWrite(6,LOW); digitalWrite(9,LOW); //使直流电机(左)逆时针转 digitalWrite(8,HIGH); } void FULLSPEED() //全速前进 { analogWrite(10,250); //输入模拟值进行设定速度 analogWrite(5,250); digitalWrite(7,HIGH); //使直流电机(右)顺时针转 digitalWrite(6,LOW); digitalWrite(9,LOW); //使直流电机(左)逆时针转 digitalWrite(8,HIGH); } void LEFT() //左转 { analogWrite(10,170); //输入模拟值进行设定速度 analogWrite(5,170); digitalWrite(7,HIGH); //使直流电机(右)顺时针转 digitalWrite(6,LOW); digitalWrite(8,LOW); //使直流电机(左)逆时针转 digitalWrite(9,HIGH); } void RIGHT() //右转 { analogWrite(10,170); //输入模拟值进行设定速度 analogWrite(5,170); digitalWrite(7,LOW); //使直流电机(右)顺时针转 digitalWrite(6,HIGH); digitalWrite(8,HIGH); //使直流电机(左)逆时针转 digitalWrite(9,LOW); } void STOP() //停止 { analogWrite(10,0); //输入模拟值进行设定速度 analogWrite(5,0); digitalWrite(7,LOW); //使直流电机(右)顺时针转 digitalWrite(6,HIGH); digitalWrite(8,HIGH); //使直流电机(左)逆时针转 digitalWrite(9,LOW); } void PLAYDISTANCE() //发送超声波数据 { Distance = ultrasonic(z); if(Distance > 0 && Distance <= 10){ //判断测试距离为1 至10CM Serial.print('a');} else if(Distance > 10 && Distance <= 15){ //判断测试距离为11 至15CM Serial.print('b');} //发送字符'b' else if(Distance > 15 && Distance <= 20){ Serial.print('c');} else if(Distance > 20 && Distance <= 25){ Serial.print('d');} else if(Distance > 25 && Distance <= 30){ Serial.print('e');} else if(Distance > 30 && Distance <= 35){ Serial.print('f');} else if(Distance > 35 && Distance <= 40){ Serial.print('g');} else if(Distance > 40 && Distance <= 45){ Serial.print('h');} else if(Distance > 45 && Distance <= 50){ Serial.print('i');} else if(Distance > 50 && Distance <= 55){ Serial.print('j');} else if(Distance > 55 && Distance <= 60){ Serial.print('k');} else if(Distance > 60 && Distance <= 65){ Serial.print('l');} else if(Distance > 65 && Distance <= 70){ Serial.print('m');} else if(Distance > 70 && Distance <= 75){ Serial.print('n');} else if(Distance > 75 && Distance <= 80){ Serial.print('o');} else if(Distance > 80 && Distance <= 85){ Serial.print('p');} else if(Distance > 85 && Distance <= 90){ Serial.print('q');} else if(Distance > 90 && Distance <= 95){ Serial.print('r');} else{ Serial.print('~');} } void setup(){ Serial.begin(115200); //打开串口并设置通信波特率为9600 pinMode(8,OUTPUT); //定义I1 接口 pinMode(9,OUTPUT); //定义I2 接口 pinMode(11,OUTPUT); //定义EA(PWM 调速)接口 pinMode(5,OUTPUT); //定义EB(PWM 调速)接口 pinMode(6,OUTPUT); //定义I4 接口 pinMode(7,OUTPUT); //定义I3 接口 } void loop(){ //主程序开始 Distance = ultrasonic(z); //读取超声波值 data = Serial.read(); //读取串口数据 switch (data){ case 'W': //前进命令 GO(); //前进函数 Serial.flush(); //刷新串口缓冲区数据 break; case 'X': //后退命令 BACK(); //后退函数 Serial.flush(); //刷新串口缓冲区数据 break; case 'A': //左转命令 LEFT(); //左转函数 Serial.flush(); //刷新串口缓冲区数据 break; case 'D': //右转命令 RIGHT(); //右转函数 Serial.flush(); //刷新串口缓冲区数据 break; case 'S': //停止命令 STOP(); //停止函数 Serial.flush(); //刷新串口缓冲区数据 break; case '1': //加速前进命令 QUICKEN(); //加速前进函数 Serial.flush(); //刷新串口缓冲区数据 case '2': //全速前进命令 FULLSPEED(); //全速前进函数 Serial.flush(); //刷新串口缓冲区数据 break; case '#': //测试当前距离命令 PLAYDISTANCE(); //发送当前距离函数 Serial.flush(); //刷新串口缓冲区数据 break; default: break; } }
视频演示
产品相关推荐
产品购买地址
周边产品推荐
Arduino 4WD铝合金移动平台车灯套件
Arduino 光电码盘 光电测速传感器
相关问题解答
AS-4WD 碰撞机器人如何安装
4wd 红外线巡线壁障车调试助手没有反应
相关学习资料
视频: Arduino-4WD移动机器人语音识别操控功能演示
视频:机器人调试助手无线操控AS-4WD轮式机器人
视频:Arduino-4WD移动机器人寻线功能演示
视频:Arduino-4WD移动机器人碰撞功能演示
视频:Arduino-4WD移动机器人追光功能演示
视频:Arduino-4WD移动机器人寻线与避障功能演示
视频:Arduino-4WD移动机器人侦测避障功能演示
奥松机器人技术论坛