arduino超声波自动避障小车制作过程
超声波自动避障小车
#include <Servo.h>
#define Trig 2 //引脚控制超声波发出声波
#define Echo 3 //引脚反应接收到返回声波
#define LIN1 7 //左侧轮子
#define LIN2 6
#define RIN1 5 //右侧轮子
#define RIN2 4
//#define Steeringpin 9 //舵机控制端口
int S = 0; //初始化距离
Servo Steering; //转向舵机
void setup() {// put your setup code here, to run once:Serial.begin(9600); //设置比特率 pinMode(Trig, OUTPUT);pinMode(Echo, INPUT);pinMode(LIN1, OUTPUT);pinMode(LIN2, OUTPUT);pinMode(RIN1, OUTPUT);pinMode(RIN2, OUTPUT);
// pinMode(Steeringpin, OUTPUT);Steering.attach(9); //定义舵机所用引脚Steering.write(90); //初始化舵机角度delay(2000); //开机延时
}
void loop() {// put your main code here, to run repeatedly:Steering.write(90);Range(); //测距函数if(S <= 5) //距离太近不足以转弯{Back(); //执行后退函数delay(300); //后退持续时间}else if(S >= 5 && S <= 15) //距离中等可以转弯{Turn(); //执行转弯判断函数}else //距离充足{Line(); //执行直行函数}
}
void Range() //测距函数
{digitalWrite(Trig,LOW); //测距delay(2); //延时2微秒digitalWrite(Trig,HIGH);delay(10);digitalWrite(Trig,LOW);float distance = pulseIn(Echo,HIGH); //读取高电平时间S = float( distance * 17 )/1000; //把值赋给SSerial.println(S); //向串口发送S的值,可以在显示器上显示距离
}
// float distance = pulseIn(Echo,HIGH);
// S = float( distance * 17 )/1000;
// 将回波时间换算成cm
// 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。
// 返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。
// 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒)
// 接收到的高电平的时间(us)* 340m/s / 2 = 接收到高电平的时间(us) * 17000 cm / 1000000 us = 接收到高电平的时间 * 17 / 1000 (cm)
void Turn() //转向函数
{Lull(); //停止Steering.write(170); //使舵机转到170度(左侧)delay(1000); //留时间给舵机转向Range(); //测距Steering.write(90); //使舵机回复原位delay(1000);if(S >= 15) //距离充足{turnLeft(); //左转弯后退}else //距离不足{Steering.write(10); //使舵机转到10度(右侧)delay(1000);Range();Steering.write(90); //使舵机回复原位delay(1000);if(S >= 15) //距离充足{turnRight(); //右转弯后退}else{Back(); //后退int x = random(1); //产生一个随机数使小车随机转向if(x == 0)turnLeft();elseturnRight();}}
}
void Back() //后退函数(使电机反转)
{digitalWrite(LIN1, LOW);digitalWrite(LIN2, HIGH);digitalWrite(RIN1, HIGH);digitalWrite(RIN2, LOW);
}
void Line() //直线行驶函数(使电机正转)
{digitalWrite(LIN1, HIGH);digitalWrite(LIN2, LOW);digitalWrite(RIN1, LOW);digitalWrite(RIN2, HIGH);
}
void turnLeft() //小车左转后退
{digitalWrite(LIN1, LOW);digitalWrite(LIN2, HIGH);digitalWrite(RIN1, LOW);digitalWrite(RIN2, LOW);delay(1000);
}
void turnRight() //小车右转后退
{digitalWrite(LIN1, LOW);digitalWrite(LIN2, LOW);digitalWrite(RIN1, HIGH);digitalWrite(RIN2, LOW);delay(1000);
}
void Lull() //停止
{digitalWrite(LIN1, LOW);digitalWrite(LIN2, LOW);digitalWrite(RIN1, LOW);digitalWrite(RIN2, LOW);
}
所需器材:
1:小车底盘一个、万向轮一个、测速码盘2个、车轮两个
2:减速直流电机2个
3:紧固件4片、螺丝若干
4:电池1.5V4个
5:L298N电机驱动模块
6;HC-SR04超声波传感器
7:ARDUINO UNO、USB数据线
8:杜邦线若干
9:舵机
连线步骤
成品图
arduino超声波自动避障小车制作过程相关推荐
- (4WD+2路红外线)arduino UNO四驱arduino超声波+红外线避障小车
有兴趣可以点击**我的店铺**看看小车硬件.提供安装说明.此图片仅供参考,图中是2驱超声波避障+循迹双模式小车.程序与本文有相同之处. .................... 四驱arduino超声 ...
- 【arduino】KitteBlock自动避障小车
原文链接:http://www.arduino.cn/thread-45399-1-1.html [KitteBlock]自动避障小车 (超级简单, 推荐新手) avirufus 注册会员 201 ...
- 树莓派小车(远程控制、PWM变速、超声波自动避障)
代码地址:github.com/Sanzo00/pi-car 功能展示 远程控制小车 PWM变速 小车在低电压情况下跑的比较慢,因此增加变速的功能. 超声波自动避障 这里使用超声波测距模块(HC-SR ...
- 基于arduino单片机智能避障小车
基于arduino单片机智能避障小车 思路简介 本文简要介绍了基于arduino单片机智能小车可以通过手机端蓝牙助手对其进行遥控操作'可以切换手动操作和自动避障两个模式,避障基于蝙蝠超声波测距的原理, ...
- 基于51单片机的红外自动避障小车(lunwen+任务书+开题+文献综述+翻译及原文+避障程序)
目 录 1 绪论 1 1.1 课题研究背景及意义 1 1.2 国内外研究现状 1 1.2.1国外智能车辆研究现状 2 1.2.2发展前景 3 1.3 课题主要研究内容 4 2 工作原理及总体设计 5 ...
- 自动避障小车可视化界面使用说明
自动避障小车可视化界面使用说明 使用说明 使用说明 1.在桌面打开终端,输入指令 ./car 2.点击粉色按钮"训练模型",模型开始训练. 按Ctrl+c,模型训练强制停止. 3. ...
- 超声波+红外线避障小车(Arduino + L298P电机驱动扩展板)
我是一名小学6年级的学生,就叫我小花生吧.我就读于北京市朝阳区垂杨柳中心小学金都分校.我学习Python编程已经两年多了,曾获得蓝桥杯全国选拔赛二等奖(Python中级青少年组)和北京复赛二等奖.打算 ...
- 将循迹小车改为蓝牙控制自动避障小车#arduino
演示视频:https://www.bilibili.com/video/BV1CM41187oh/?share_source=copy_web&vd_source=d43eaf7cae2ed3 ...
- 光电自动避障小车_智能化搬运的实现 AGV小车无人搬运车
AGV小车是实现人工智能.智能搬运的开端.AGV上装有自动导航系统,自动避障传感器,可以保障系统在不需要人工引航的情况下就能够沿预定的路线自动行驶,将货物或者物料自动从起始点运送到目的地.实现无人搬运 ...
最新文章
- boost::hana::at_c用法的测试程序
- SQL SERVER 2008安全配置
- H.264/AVC视频压缩编码标准的新进展
- 富文本编辑器 CKeditor
- 2019 sample-free(样本不平衡)目标检测论文阅读笔记
- 在 Windows 8 中支持传感器
- [原创]软件质量管理培训
- 使用ExMerge工具管理Exchange用户邮箱。
- 27. Remove Element
- php留言系统源码,XYCMS php留言板 v8.0
- linux系统安装r语言环境,R语言Linux环境安装说明
- linux simg2img,simg2img工具
- layui 模板引擎用法小结
- 关于killer网卡与win10 擦出火花 内存爆炸的原因
- three.js + jquery灯光照耀js特效
- 如何看懂论文公式:LaTex数学公式分析
- 跑步机健身器材标准ENISO20957检测范围有哪些
- html5中奖名单特效,jQuery基于json动态随机获取中奖名单抽奖代码
- 第三章 sysrepo-plugind源码分析
- 【midomi】Android下最强音乐搜索工具