“(RB-13K056)AS-4WD移动侦测避障机器人”的版本间的差异
来自ALSROBOT WiKi
(→电控部分安装步骤) |
(→应用例程) |
||
第37行: | 第37行: | ||
[[文件:4wddiankonganzhuang07.jpg|700px|缩略图|居中|4WD侦测避障平台安装完成效果图]] | [[文件:4wddiankonganzhuang07.jpg|700px|缩略图|居中|4WD侦测避障平台安装完成效果图]] | ||
− | ==应用例程== | + | ==整机测试== |
+ | ===应用例程=== | ||
+ | <pre style='color:blue'> | ||
+ | #include <Servo.h> | ||
+ | Servo myservo; | ||
+ | int duration; //定义变量duration用来存储脉冲 | ||
+ | int distance; //定义变量distance用来存储距离值 | ||
+ | int srfPin = 15; //定义srfPin为数字口15 | ||
+ | int z; //定义变量Z int val; | ||
+ | //定义变量val | ||
+ | int val1; //定义变量val1 | ||
+ | int val2; //定义变量val2 | ||
+ | void setup() | ||
+ | { | ||
+ | myservo.attach(8); //8号引脚输出舵机控制信号 | ||
+ | Serial.begin(9600); //仅能使用9、10号引脚 | ||
+ | pinMode(9,OUTPUT); //定义I3接口 | ||
+ | pinMode(10,OUTPUT); //定义I4接口 | ||
+ | pinMode(11,OUTPUT); //定义EB(PWM调速)接口 | ||
+ | pinMode(5,OUTPUT); //定义EA(PWM调速)接口 | ||
+ | pinMode(6,OUTPUT); //定义I2接口 | ||
+ | pinMode(7,OUTPUT); //定义I1接口 | ||
+ | myservo.write(90); //使舵机转到90度 | ||
+ | } | ||
+ | void loop() | ||
+ | { | ||
+ | delay(20); //延时20毫秒 | ||
+ | Goahead(); //调用前进子程序 | ||
+ | val=Ultrasonic(z); //将超声波读取的距离值赋值给val | ||
+ | if(val<25) //判断如果val小于25则继续执行 | ||
+ | { | ||
+ | Stop(); //调用停止子程序 | ||
+ | myservo.write(0); //让舵机转0度 | ||
+ | delay(1000); //延时1秒等待舵机到达指定位置 | ||
+ | val1=Ultrasonic(z); //将超声波读取的距离值赋值给 | ||
+ | val1 delay(1000); //延时1秒等待舵机到达指定位置 | ||
+ | myservo.write(179); //让舵机转180度 | ||
+ | delay(1000); //延时1秒等待舵机到达指定位置 | ||
+ | val2=Ultrasonic(z); //将超声波读取的距离值赋值给val2 | ||
+ | delay(1000); //延时1秒等待舵机到达指定位置 | ||
+ | myservo.write(83); //让舵机转90度 | ||
+ | delay(1000); //延时1秒 | ||
+ | if(val1<val2) | ||
+ | { | ||
+ | Turn_left(); //调用左转子程序 | ||
+ | delay(200); //延时200毫秒 | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | Turn_right(); //调用右转子程序 | ||
+ | delay(200); //延时200毫秒 | ||
+ | } | ||
+ | int Ultrasonic(int distance) | ||
+ | { | ||
+ | pinMode(srfPin,OUTPUT); //定义srfPin为输出接口 | ||
+ | digitalWrite(srfPin, LOW); //高电平触发前发送2微秒的低电平 | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(srfPin, HIGH); //发送10微秒的高电平开始检测 | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(srfPin, LOW); //等待脉冲返回前发送一个低电平 | ||
+ | pinMode(srfPin, INPUT); //定义srfPin为输入接口 | ||
+ | duration = pulseIn(srfPin, HIGH); //从URF02读取脉冲 | ||
+ | distance = duration/58; //除以58得到距离值 | ||
+ | return distance; | ||
+ | } | ||
+ | void Goahead()//前进 | ||
+ | { | ||
+ | analogWrite(5,165); //输入模拟值进行设定速度 | ||
+ | digitalWrite(7,LOW); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,HIGH); | ||
+ | analogWrite(11,160); //输入模拟值进行设定速度 | ||
+ | digitalWrite(9,HIGH); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(10,LOW); | ||
+ | } | ||
+ | void Stop()//停止 | ||
+ | { | ||
+ | digitalWrite(6,HIGH); //使直流电机(右)制动 | ||
+ | digitalWrite(7,HIGH); | ||
+ | digitalWrite(9,HIGH); //使直流电机(左)制动 | ||
+ | digitalWrite(10,HIGH); | ||
+ | } | ||
+ | void Turn_right()//右转 | ||
+ | { | ||
+ | analogWrite(5,170); //输入模拟值进行设定速度 | ||
+ | digitalWrite(6,LOW); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(7,HIGH); | ||
+ | analogWrite(11,150); //输入模拟值进行设定速度 | ||
+ | digitalWrite(9,HIGH); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(10,LOW); | ||
+ | } | ||
+ | void Turn_left()//左转 | ||
+ | { | ||
+ | analogWrite(5,150); //输入模拟值进行设定速度 | ||
+ | digitalWrite(7,LOW); //使直流电机(右)顺时针转 | ||
+ | digitalWrite(6,HIGH); | ||
+ | analogWrite(11,170); //输入模拟值进行设定速度 | ||
+ | digitalWrite(10,HIGH); //使直流电机(左)逆时针转 | ||
+ | digitalWrite(9,LOW); | ||
+ | } | ||
+ | delay(500); //延时500毫秒 | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
==产品相关推荐== | ==产品相关推荐== |
2015年8月20日 (四) 15:35的版本
目录 |
产品概述
超声波作为智能车避障的一种重要手段,以其避障实现便,计算简单,易于做时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛。AS-4WD 超声侦测自主避障机器人采用RB-URF02超声波传感器,可使机器人像蝙蝠一样通过声纳来感知周围的环境,传感器下面安装伺服舵机可以令其具有旋转功从而可实现一个传感器多方位测距与探测避障功能。产品为全铝合金车体,结实耐用,四个马达7.2V电压独立驱动,动力强劲,结构合理,便于扩展;独立散件包装,让您完全体验DIY的乐趣。
规格参数
- 驱动电机齿轮箱减速比:1:48
- 驱动电机无负载转速:220rpm
- 车轮直径:65mm
- 车轮宽度:25mm
- 平台长度:206mm
- 平台宽度:200mm
- 平台高度:65mm
- 平台重量:620g
- 底盘距地面距离:15mm
零件清单
安装步骤
机械部分安装步骤
直流电机安装
4WD平台两侧电机安装方法相同,需要注意的是在安装电机之前需要将电机连接线使用电烙铁焊接好,并使用热缩过加热塑封。
平台侧板安装
平台端板安装
电控部分安装步骤
整机测试
应用例程
#include <Servo.h> Servo myservo; int duration; //定义变量duration用来存储脉冲 int distance; //定义变量distance用来存储距离值 int srfPin = 15; //定义srfPin为数字口15 int z; //定义变量Z int val; //定义变量val int val1; //定义变量val1 int val2; //定义变量val2 void setup() { myservo.attach(8); //8号引脚输出舵机控制信号 Serial.begin(9600); //仅能使用9、10号引脚 pinMode(9,OUTPUT); //定义I3接口 pinMode(10,OUTPUT); //定义I4接口 pinMode(11,OUTPUT); //定义EB(PWM调速)接口 pinMode(5,OUTPUT); //定义EA(PWM调速)接口 pinMode(6,OUTPUT); //定义I2接口 pinMode(7,OUTPUT); //定义I1接口 myservo.write(90); //使舵机转到90度 } void loop() { delay(20); //延时20毫秒 Goahead(); //调用前进子程序 val=Ultrasonic(z); //将超声波读取的距离值赋值给val if(val<25) //判断如果val小于25则继续执行 { Stop(); //调用停止子程序 myservo.write(0); //让舵机转0度 delay(1000); //延时1秒等待舵机到达指定位置 val1=Ultrasonic(z); //将超声波读取的距离值赋值给 val1 delay(1000); //延时1秒等待舵机到达指定位置 myservo.write(179); //让舵机转180度 delay(1000); //延时1秒等待舵机到达指定位置 val2=Ultrasonic(z); //将超声波读取的距离值赋值给val2 delay(1000); //延时1秒等待舵机到达指定位置 myservo.write(83); //让舵机转90度 delay(1000); //延时1秒 if(val1<val2) { Turn_left(); //调用左转子程序 delay(200); //延时200毫秒 } else { Turn_right(); //调用右转子程序 delay(200); //延时200毫秒 } int Ultrasonic(int distance) { pinMode(srfPin,OUTPUT); //定义srfPin为输出接口 digitalWrite(srfPin, LOW); //高电平触发前发送2微秒的低电平 delayMicroseconds(2); digitalWrite(srfPin, HIGH); //发送10微秒的高电平开始检测 delayMicroseconds(10); digitalWrite(srfPin, LOW); //等待脉冲返回前发送一个低电平 pinMode(srfPin, INPUT); //定义srfPin为输入接口 duration = pulseIn(srfPin, HIGH); //从URF02读取脉冲 distance = duration/58; //除以58得到距离值 return distance; } void Goahead()//前进 { analogWrite(5,165); //输入模拟值进行设定速度 digitalWrite(7,LOW); //使直流电机(右)顺时针转 digitalWrite(6,HIGH); analogWrite(11,160); //输入模拟值进行设定速度 digitalWrite(9,HIGH); //使直流电机(左)逆时针转 digitalWrite(10,LOW); } void Stop()//停止 { digitalWrite(6,HIGH); //使直流电机(右)制动 digitalWrite(7,HIGH); digitalWrite(9,HIGH); //使直流电机(左)制动 digitalWrite(10,HIGH); } void Turn_right()//右转 { analogWrite(5,170); //输入模拟值进行设定速度 digitalWrite(6,LOW); //使直流电机(右)顺时针转 digitalWrite(7,HIGH); analogWrite(11,150); //输入模拟值进行设定速度 digitalWrite(9,HIGH); //使直流电机(左)逆时针转 digitalWrite(10,LOW); } void Turn_left()//左转 { analogWrite(5,150); //输入模拟值进行设定速度 digitalWrite(7,LOW); //使直流电机(右)顺时针转 digitalWrite(6,HIGH); analogWrite(11,170); //输入模拟值进行设定速度 digitalWrite(10,HIGH); //使直流电机(左)逆时针转 digitalWrite(9,LOW); } delay(500); //延时500毫秒 } }