Arduino智能避障小车避障程序
基于Arduino和超声波传感器避障小车制作方案
基于Arduino和超声波传感器避障小车制作方案避障小车是一种智能设备,可以自动感知前方的障碍物,并通过朝另一个方向转动来避开障碍物。
该设计允许小车通过避免碰撞在未知环境中导航,这是任何自主移动小车的主要要求。
避障小车的应用不受限制,现在大多数军事组织都使用它,这有助于执行许多士兵无法完成的危险工作。
在本篇文章中,我们将使用Arduino和超声波传感器制作一个避障小车。
这里,超声波传感器用于通过计算机器人和障碍物之间的距离来感测路径中的障碍物。
如果机器人发现任何障碍物,它会改变方向并继续移动。
超声波传感器如何用于避免障碍物在制作之前,了解超声波传感器的工作原理非常重要,因为这种传感器在检测障碍物方面起着重要作用。
超声波传感器工作的基本原理是记录传感器在撞击表面后传输超声波束和接收超声波束所需的时间。
然后使用该公式计算距离。
在本文中,使用了广泛使用的HC-SR04超声波传感器。
因此,HC-SR04的Trig引脚高至少10 us。
声波束以8个40KHz的脉冲传输。
然后信号撞击表面并返回并由HC-SR04的接收器Echo引脚捕获。
Echo引脚在发送高电平时为高电平。
光束返回所用的时间保存在变量中,并使用如下所示的适当计算转换为距离距离=(时间x空气中声音的速度(343 m / s))/ 2可轻松找到避免机器人的障碍物的组件。
为了搭建底盘,可以使用任何玩具底盘或者可以定制。
需要的组件● Arduino NANO或Uno开发板● HC-SR04超声波传感器● LM298N电机驱动器模块● 5V直流电动机● 电池● 车轮● 机壳● 跳线电路原理图避障小车的Arduino编程在本文末尾处将给出了完整程序。
该程序将包括设置HC-SR04模块并将信号输出到电机引脚以相应地移动电机方向。
此项目中不会使用任何库。
首先在程序中定义HC-SR04的TRIG和ECHO引脚。
在本文中,trig引脚连接到GPIO9,echo引脚连接到Arduino NANO的GPIO10。
基于ArduinoUNO和L298N的避障小车DIY制作
基于ArduinoUNO和L298N的避障小车DIY制作一、壁障小车的制作1、制作避障小车的准备工作硬件:Arduino UNO、L298N驱动模块、超声波模块、小车底盘、舵机模块、一块面包板、一些杜邦线。
软件: Arduino UNO的程序下载软件下面来一张安装好的的图2、舵机模块的解析认识本次用的是简单实用的9克小舵机。
它的扭力不是很大,但是对于咱们想用作扫描超声测距探头来说足够了。
一般舵机的旋转角度范围都是0-180度旋转的,也有一种数字电机可以在电机和舵机这两种状态下切换,既可以控制精确的旋转角度也可以连续旋转作为电机使用。
舵机转动的角度是由控制器的脉冲宽度决定的,假如舵机处在中间位置(90度),这时的脉冲宽度设定为1.5ms那么我们想让舵机转动到0度的时候可以给他1ms的脉冲,如果想让它转动到180度的时候可以给2ms的脉冲,这就是舵机角度控制的基本原理了。
3、超声波模块的解析认识本次用的超声波模块如图所示模块工作原理:1、采用IO触发测距,给至少10us的高电平信号;2、模块自动发送8个40KHz的方波,自动检测是否有信号返回;3、有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340m/s))/2;4、L298N模块的解析认识本次用的L298N模块如图所示1.驱动芯片:L298N双H桥直流电机驱动芯片2.驱动部分端子供电范围Vs:+5V~+35V ;如需要板内取电,则供电范围Vs:+7V~+35V3.驱动部分峰值电流Io:2A4.逻辑部分工作电流范围:0~36mA6.控制信号输入电压范围(IN1 IN2 IN3 IN4):低电平:-0.3V≤Vin≤1.5V高电平:2.3V≤Vin≤Vss7.使能信号输入电压范围(ENA ENB):低电平:-0.3≤Vin≤1.5V(控制信号无效)高电平:2.3V≤Vin≤Vss(控制信号有效)8.最大功耗:20W(温度T=75℃时)9.存储温度:-25℃~+130℃10.驱动板尺寸:58mm*40mm12.其他扩展:控制方向指示灯、逻辑部分板内取电接口。
智能避障小车原理图及源程序,诺基亚显示屏显示信息
智能小车原理图及源程序智能小车避障、圣光报警程序/*用T0计时器中断进行对小车方向的调节用INT0外部中断进行声光报警用INT1外部中断进行超声避障用T1计时器进行对时间的测量*/#include<reg52.h>#include<stdio.h>sbit P00=P1^0; //循迹口sbit P01=P1^1;sbit P02=P1^2;sbit P03=P0^3; //声光信号P03接蜂鸣器,P04接LED sbit P04=P0^4;sbit P20=P2^0; //电机1 左轮sbit P21=P2^1;sbit P22=P2^2; //电机2sbit P23=P2^3;void zhuanxiang(char,char,char);void delay1ms(void);void delaynms(int);unsigned int i=0,j=0; //特殊情况旗标void kongzhi(void) interrupt 1 //PWM信号进行电机控制{if(P00==0&&P01==1&&P02==0) //小车直线快走定时0.02ms{TH0=0X1F;TL0=0XEC;P20=0; //电机1 左轮P21=1;P22=1; //电机2 右转P23=0;}if(P00==0&&P01==0&&P02==1) //小车右转定时0.05ms {TH0=0X1F;TL0=0XCE;P20=1; //电机1 左轮P21=1;P22=1; //电机2P23=0;i=1;}if(P00==0&&P01==0&&P02==0&&i==1) // 特别{TH0=0X1F;TL0=0XCE;P20=1;P21=1;P22=1;P23=0;j=0;}if(P00==1&&P01==0&&P02==0) //小车左转定时0.05ms {TH0=0X1F;TL0=0XCE;P20=0; //电机1P21=1;P22=1; //电机2P23=1;j=1;}if(P00==0&&P01==0&&P02==0&&j==1) // 特别{TH0=0X1F;TL0=0XCE;P20=0;P21=1;P22=1;P23=1;i=0;}if(P00==1&&P01==1&&P02==1){ //全部检测到黑线时车停TH0=0X1F;TL0=0XCE;P20=1;P21=1;P22=1;P23=1;}}void shengguang(void) interrupt 0 //停车并产生声光2s{unsigned int i,j;P20=1;P21=1;P22=1;P23=1;delaynms(500);for(i=0;i<20;i++){P04=0;for(j=0;j<100;j++){P03=0;delay1ms();P03=~P03;}}P03=1; //关闭声光P04=1;delaynms(500);P20=0;//继续行车P21=1;P22=1;P23=0;}void chaoshengbo(void) interrupt 2 //超声波测距避障程序{}void main(){while(1){P20=1;P21=1;P22=1;P23=1;//小车停P03=1;P04=1;PX0=1;TMOD=0X10;//T0用方式0,T1用方式1EA=1; //开启中断总开关EX0=1;//T0中断EX1=1; //T1中断ET0=1;//INT0中断ET1=1; //INT1中断TR1=1; //开启T1计时器zhuanxiang(P00,P01,P02);}}void zhuanxiang(char P00,char P01,char P02){if(P00==0&&P01==1&&P02==0) // 小车直走{ //0.01msTH0=0X1F;TL0=0XF6;;TR0=1;}if(P00==0&&P01==0&&P02==1) //小车右转定时0.05ms{TH0=0X1F;TL0=0XCE;TR0=1;}if(P00==1&&P01==0&&P02==0) //小车左转定时0.05ms {TH0=0X1F;TL0=0XCE;TR0=1;}if(P00==1&&P01==1&&P02==1) //全部检测到黑线时车停{TH0=0X1F;TL0=0XCE;TR0=1;}}void delay1ms(void){int i;for(i=0;i<120;i++);}void delaynms(int n){int i,j;for(i=0;i<n;i++)for(j=0;j<120;j++);}诺基亚显示程序:#include <reg51.h>#include <stdio.h>#include<string.h>sbit SCLK = P1^5; // pin 2 header 5sbit SDIN = P1^4; // pin 3 header 4sbit LCD_DC = P1^3; // pin 4 header 3sbit LCD_CE = P1^2; // pin 5 header 2sbit LCD_RST = P1^1; // pin 9 header 1void LCD_init(void);void LCD_clear(void);void LCD_write_chinese_string(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row);void LCD_write_char(unsigned char c);void LCD_write_byte(unsigned char dat, unsigned char dc);void LCD_set_XY(unsigned char X, unsigned char Y);void delay_1us(void);unsigned char font6x8[5][4]={{'a','s','d','f'},{'j','k','f','e'},{'j','y','i','o'},{'t','f','j','g'},{'d','s',' ','g'}}; unsigned char write_chinese[3][1]={{'1'},{'g'},{'h'}};void main(void){LCD_init(); //初始化液晶LCD_clear();while(1){LCD_init();//设置基本功能LCD_clear();//清屏LCD_set_XY(0,0);//设置坐标X:0-83,Y:0-5LCD_write_chinese_string(12,4,12,4,0,5);//写入汉字}}void LCD_init(void){// 产生一个让LCD复位的低电平脉冲LCD_RST = 0;delay_1us();LCD_RST = 1;// 关闭LCDLCD_CE = 0;delay_1us();// 使能LCDLCD_CE = 1;delay_1us();LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式LCD_write_byte(0xc8, 0); // 设置偏置电压LCD_write_byte(0x06, 0); // 温度校正LCD_write_byte(0x13, 0); // 1:48LCD_write_byte(0x20, 0); // 使用基本命令LCD_clear(); // 清屏LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示// 关闭LCDLCD_CE = 0;}void LCD_clear(void) //LCD_clear : LCD清屏函数{unsigned int i;LCD_write_byte(0x0c, 0);LCD_write_byte(0x80, 0);for (i=0; i<504; i++)LCD_write_byte(0, 1);}/* LCD_set_XY : 设置LCD坐标函数输入参数:X :0-83Y :0-5*/void LCD_set_XY(unsigned char X, unsigned char Y){LCD_write_byte(0x40 | Y, 0); // columnLCD_write_byte(0x80 | X, 0); // row}/*-----------------------------------------------------------------------LCD_write_char : 显示英文字符输入参数:c :显示的字符;*/void LCD_write_char(unsigned char c){unsigned char line;c -= 32;for (line=0; line<6; line++)LCD_write_byte(font6x8[c][line], 1);}/*----------------------------------------LCD_write_chinese_string: 在LCD上显示汉字输入参数:X、Y :显示汉字的起始X、Y坐标;ch_with :汉字点阵的宽度num :显示汉字的个数;line :汉字点阵数组中的起始行数row :汉字显示的行间距例如:LCD_write_chi(0,0,12,7,0,0);-------------------------------------------*/void LCD_write_chinese_string(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row){unsigned char i,n;LCD_set_XY(X,Y); //设置初始位置for (i=0;i<num;){for (n=0; n<ch_with*2; n++) //写一个汉字{if (n==ch_with) //写汉字的下半部分{if (i==0) LCD_set_XY(X,Y+1);elseLCD_set_XY((X+(ch_with+row)*i),Y+1);}LCD_write_byte(write_chinese[line+i][n],1);}i++;LCD_set_XY((X+(ch_with+row)*i),Y);}}/*-----------------------------------------------------------------------LCD_write_byte : 使用SPI接口写数据到LCD输入参数:data :写入的数据;command :写数据/命令选择;-----------------------------------------------------------------------*/void LCD_write_byte(unsigned char dat, unsigned char command) {unsigned char i;//PORTB &= ~LCD_CE ; // 使能LCDLCD_CE = 0;if (command == 0)// PORTB &= ~LCD_DC ; // 传送命令LCD_DC = 0;else// PORTB |= LCD_DC ; // 传送数据LCD_DC = 1;for(i=0;i<8;i++){if(dat&0x80)SDIN = 1;elseSDIN = 0;SCLK = 0;dat = dat << 1;SCLK = 1;}// SPDR = data; // 传送数据到SPI寄存器//while ((SPSR & 0x80) == 0); // 等待数据传送完毕//PORTB |= LCD_CE ; // 关闭LCDLCD_CE = 1;}。
基于Arduino典型传感器智能避障小车的设计开发
0&0&0&0&0&0&0©0令0°0j设计与开发II I0&0&0&0©0°0&0&0°0&0基于Arduino典型传感器智能避障小车的设计开发付晓云(沈阳理工大学机械工程学院实验中心沈阳110159)摘要以Arduino UNO开发板为核心,以红外传感器、超声波传感器、电机、车轮等外部固件,小车能实现自主避障的功能,该装置通过红外传感器监控,经由Arduino处理器处理,控制智能避障小车躲避障碍。
主要讨论以Arduino UNO开发板为核心的超声避障小车制作过程,它是由4个直流电机和L298n电机驱动模块控制行驶方向,辅以舵机和超声波传感器组成的超声避障模块实现避障功能,用Arduino IDE编程软件编写总体程序。
智能避障小车具有实际意义,在一些非常危险的情况下它能够代替人进行工作;特别是避障小车的探测功能,在抗震救灾中能够起到极大的作用。
关键词Arduino IDE Arduino UNO智能避障小车智能车领域以美国、意大利、法国等国家处于领先地位,在智能车领域有着一系列研究成果。
车辆与控制人员之间能够进行信息交流利用的是无线电及光缆技术,操作人员可以根据反馈的信息远程遥控车辆。
与上述这些在智能车领域处于前沿的国家相比,我国在智能车方面的起步比较晚,但目前也取得了很大进步,清华大学研制的“THMR-V”的智能车就是其中之一。
“THMR-V”的智能车能够在标准路面自动追踪车道线,在复杂的路面能够根据实际情况自行避障。
但此智能车也有不足,只能在结构化道路上画有清晰白线处进行车道跟踪。
国防科技大学在车辆的自动驾驶技术方面起步较早,CITAVT系列无人驾驶车是其主要的研究成果,其中CITAVT-IV型视觉导航自主车的主要目标是研究在结构化道路环境下的自主驾驶技术[1]o 此类型无人驾驶车在视觉识别方面有所缺陷,有时不能正确识别道路出口。
基于Arduino的智能小车自动避障系统设计与研究
基于Arduino的智能小车自动避障系统设计与研究基于Arduino的智能小车自动避障系统设计与研究引言随着人工智能和机器人技术的不断发展,智能小车系统已经成为当前热门的研究领域之一。
智能小车的自动避障功能是其中的重要组成部分。
本文将介绍基于Arduino的智能小车自动避障系统的设计与研究,并对系统的原理和实现进行详细的探讨。
一、智能小车自动避障系统设计的需求分析智能小车自动避障系统设计的目标是实现小车在行进过程中自动感知并避开障碍物。
这一功能在实际应用中非常重要,可以用于无人驾驶汽车、智能家居服务机器人等领域。
在需求分析阶段,我们首先考虑到了以下几个关键需求: 1. 高精度的障碍物感知能力:智能小车需要能够精确地感知到前方的障碍物并进行判断。
2. 高速响应能力:避障系统需要能够实时地对感知到的障碍物做出反应,并给出合适的控制指令。
3. 稳定性:系统需要具备较高的稳定性,能够在各种复杂环境下稳定运行。
二、基于Arduino的智能小车自动避障系统设计方案基于以上需求分析,我们选择了Arduino作为智能小车自动避障系统的控制平台。
Arduino是一款简单易用且功能强大的开源电子平台,具备较高的可扩展性和稳定性。
系统的基本设计思路如下:1. 硬件设计:- 小车底盘:选择合适的底盘作为基础,具备足够的承载能力和稳定性。
- 传感器:使用超声波传感器作为主要感知器件,用于测量与障碍物的距离。
- 控制器:选择Arduino作为控制器,通过编程实现系统的逻辑功能。
2. 软件设计:- 障碍物感知算法:根据传感器的测量结果,确定与障碍物的距离,并将其作为输入。
- 避障决策算法:根据传感器测量结果和当前状态,通过算法决策小车的运动方向。
- 控制指令生成算法:输出合适的控制指令,控制小车运动。
三、系统实现与验证基于以上设计方案,我们进行了系统的实现与验证。
具体步骤如下:1. 硬件搭建:将选择的底盘与超声波传感器连接,并接入Arduino控制器。
基于Arduino的智能越障小车设计
• 122•基于Arduino的智能越障小车设计岭南师范学院物理科学与技术学院 林佳纯广州鱼窝头中学 梁士儒岭南师范学院物理科学与技术学院 周小燕本文基于智能机器人设计这一方向,针对当前越障机器人结构的局限,设计一款八轮驱动,具备自主反应、防倒退的越障小车。
实验以Arduino为控制中心,集合红外传感器、碰撞传感器和超声波传感器等多种传感器,采用可伸缩八轮式结构,结合分步越障的运行模式,对障碍准确快速做出反应。
通过多次实验测试,该小车能够很好适应复杂的环境。
应用于非结构性环境中的智能机器人一直以来都是技术研究的重点(汤天骄.基于DSTAR和神经网络的未知环境移动机器人路径规划方法:哈尔滨工业大学,2010,23-40)。
越障小车作为典型的智能越障机器人,集合机械、电子控制、车辆工程等相关领域的研究,能够工作在险恶地形上,协助人类完成任务。
目前现有的越障机器人按越障功能实现的原理主要分为腿式、履带式、轮式等几类(徐国华,谭民.移动机器人的发展现状及其趋势:机器人技术与应用,2011(3):7-14),而后又衍生了诸如轮履式(曹冲振,王凤芹,张吉亮.虾形六轮机器人尾部越障性能分析:机械设计与制造,2009(11):164-166)、轮腿式(唐鸿儒,宋爱国,章小兵.基于传感器信息融合的移动机器人自主爬楼梯技术研究:传感技术学报,2005(04):828-833)、铰接式(任常吉,贺继林,周烜亦.铰接式串联八轮机器人越障机理研究:机械科学与技术)等复合式行走机构。
由于结构上的设计限制了越障的尺度,在稳定性和自我恢复性上不能很好地适应复杂的地形结构。
本文设计的越障小车采用可伸缩八轮式结构,其结构如图1所示。
小车在平坦地面行驶时,八轮着地,其中第一、四组轮作为主动轮带动其余轮组前进。
当遇障碍物时,具备升降功能的第二、四组轮分别做出反应,固定在车身上的舵机驱动轮腿使轮组升起实现越障功能。
1 系统工作原理小车的工作流程如图2所示。
基于Arduino的智能双传感器避障小车设计
基于Arduino的智能双传感器避障小车设计【摘要】以Arduino为基础,应用超声波反射与红外线反射原理设计智能避障小车。
当小车在运行过程中,通过超声波传感器检测到的障碍物位置比较,选择无障碍方向行进一段距离。
当小车在行进时遇到障碍物停止但又未及时停下,小车与障碍物距离将缩短会发生碰撞,此时,当快要碰撞时,小车上的红外传感器感应到近距离变化,便启动电机反转给小车一个克服运动惯性的动力,使其脱离碰撞的可能,从而完成一系列的避障动作。
【关键词】Arduino单片机;超声波;红外,避障随着机械技术,越来越多产品要求轻薄小巧节省能源,同时还要求高性能智能化,而微电子技术的高速发展,使微电子技术在机械系统中应用的越来越广泛,满足了对产品智能化的要求,出现了各式各样的机电一体化系统。
机电一体化的内容并不是简单的组合,而是彼此互补,有机结合,从而使机构和性能达到最优化。
作为机电一体化的应用,本文介绍的基于Arduino的智能避障小车就是一个机电一体化结合的例子。
在2005年,意大利一家高科技设计学校两位教师Massimo Banzi跟David Cuartielles为解决学生在实验过程中找不到便宜好用的微处理器的问题,创建了Arduino开源项目,从此,开源硬件平台Arduino诞生了。
Arduino的硬件是一个包含Atmel AVR单片机为核心的开发板和其他各种I/O 电路板,软件的开发工具是使用基于Java框架编写的IDE,由于Arduino是在Atmel A VR单片机基础上的封装,所以编程语言风格与C语言类似。
Arduino其调用的类库都做过二次封装,有C语言的基础就能够进行软件程序的编写,这也是Arduino较为流行的原因。
一、Arduino板本小车的控制由Arduino UNO板(图1)来完成。
图1开发板采用Ateml AvR ATmega328处理器,本质就是一个将CPU、内存、外设等封装好的单芯片计算机。
基于Arduino开发板的自动循迹避障智能车控制系统设计
基于Arduino开发板的自动循迹避障智能车控制系统设计作者:闫博扬李玉衡姚磊来源:《软件》2020年第07期Avoidance Antelligent VehicleControl System Based on Arduino Development Board0 引言在高度現代化的今天,AI及自动化技术广泛应用,却还有许多小工厂、物流中心,在用人力搬运货物。
耗费了大量的人力物力在搬运货物这种简单机械的工作,现有的运货机器人有造价高、维护难等问题。
故想开发一款低成本,易维护的可循迹避障的货运智能自控车系统。
该自控智能车具有循迹黑线,超声避障,以及利用摄像头追踪捕获彩色物块功能,可应用于人工智能领域里,参与智能运输[1]。
1 系统硬件环境1.1 运行测试赛道如图1为基于arduino开发板的自动循迹避障智能车系统测试赛道。
赛道分为从三部分,第一部分为循迹部分,最左端虚线为出发点,智能小车从虚线端出发,首先进入循迹段,利用红外传感器进行PID算法循迹;第二部分为避障路段,该路段有五个相同的合适挡板作为障碍物,智能小车利用超声波模块进行避障前进;第三部分为彩色小球追踪识别路段,智能小车利用openmv摄像头进行颜色形状识别,运动到小球附近一定距离范围内后停止运行,整个赛道测试完成[2-5]。
1.2 智能车整体结构板球平衡控制系统的框架如图2所示,由电源模块,主控模块,摄像头模块,红外模块以及超声波模块构成,利用主控器件和各传感器得到的处理信息对电机控制,完成路段功能测试。
2 系统软件环境系统主体设计流程图如图3所示。
对于模拟测试赛道三个不同路段,分别对应不同的控制算法。
3 控制原理及算法设计通过在小车的各个位置加装红外传感器、超声波传感器等。
收集小车的自身位置信息,将其传输给处理器处理后,通过控制PWM波,改变小车的运动状态,达到自动控制通过路段的目的。
利用智能摄像头的图像识别以及测距原理,对小车进行追踪控制。
arduino避障小车课程设计
arduino避障小车课程设计一、课程目标知识目标:1. 学生能理解Arduino的基本原理,掌握其编程基础。
2. 学生能掌握避障小车的工作原理,了解传感器在其中的作用。
3. 学生能了解电路连接的基本方法,能正确连接Arduino、电机驱动和传感器。
技能目标:1. 学生能运用Arduino编程,实现避障小车的控制。
2. 学生能通过实际操作,提高动手能力,培养解决问题的能力。
3. 学生能通过团队协作,完成避障小车的搭建和调试。
情感态度价值观目标:1. 学生能培养对科学技术的兴趣,激发创新精神。
2. 学生能培养合作意识,提高沟通能力,学会团队协作。
3. 学生能在实践中体会科技带来的乐趣,树立正确的价值观。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力、创新精神和团队协作能力。
学生特点:六年级学生具备一定的逻辑思维能力和动手能力,对新鲜事物充满好奇,喜欢挑战。
教学要求:教师需结合学生特点,以引导为主,注重激发学生的兴趣,鼓励学生主动探究,培养学生的实践能力和创新能力。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. Arduino基础知识:- Arduino原理与结构- 编程基础:变量、数据类型、运算符、控制结构等- 传感器原理:红外传感器、超声波传感器等2. 避障小车工作原理:- 小车结构及各部件功能- 避障原理及实现方法3. 电路连接与编程:- 电机驱动连接与控制- 传感器与Arduino的连接- 编写程序实现避障功能4. 实践操作:- 搭建避障小车- 调试与优化程序5. 团队协作与展示:- 分组合作完成任务- 展示与分享作品教学内容安排与进度:第一课时:Arduino基础知识学习,了解小车结构与避障原理第二课时:学习传感器原理,进行电路连接与编程基础第三课时:动手搭建避障小车,进行初步调试第四课时:优化程序,实现稳定避障功能,团队协作与展示教材关联:教学内容与教材中“机器人制作与应用”章节相关,结合教材内容,使学生能够掌握Arduino编程及机器人制作的基本技能。
基于Arduino单片机的智能避障小车设计
输入后,由压电陶瓷激励器和谐振片转换成机械振 动, 经锥形辐射器将超声振动信号向外发射出去; 发射出的超声波向空中四面八方直线传播,遇到障 碍物后它可以发生反射;接收器在收到由发射器传 来的超声波后,使内部的谐振片谐振,通过声电转
自动化与仪表 2013(5)
控制 脉冲
控制 电路
马达
齿轮组 比例电位器
图 2 舵机原理示意图 Fig.2 Steering gear principle diagram
2.3 电源模块 电源模块为系统其他各个模块提供可靠的工作
电压,设计中,除了需要考虑电压范围和电流容量等 基本参数之外,还要在电源转换效率、降低噪声、防 止干扰等方面进行优化。 可靠的电源方案是整个硬 件电路稳定可靠运行的基础。 采用 6 节 1.2 V 干电 池 串 联 供 电 ,电 压 达 到 7.2 V,其 中 7.2 V 供 驱 动 电 机使用,6 V 供舵机使用,5 V 供控制芯片和速度传 感器使用,3 V 供超声波感器使用。 各种所需电源均 从 7.2 V 经电源转换芯片转换得到。 系统各模块电 路结构如图 3 所示。
年间成功研制出了名为 Shakey 的地面自主移动机 器人,标志着机器人研究的开始[1]。 随着计算机与传 感技术的发展,移动机器人的研究进入了小高潮,美 国和欧洲的一些制造厂家对地面移动机器人进行尺 寸与结构标准化,并大量研究与制造,推动了移动机 器人的迅速发展。 进入 20 世纪 80 年代以后,在美 国国防部高级研究计划局投资 6 亿美元制定了地面 无人作战的战略计划并对此立项,此计划全面推动
目前超声避障实现方便、计算简单、易于做到 实时控制, 并且在测量精度方面能达到实用的要 求,因此成为常用的避障方法。 本文利用超声波传 感器来实现小车的智能避障。 通过控制小车与障碍 物的距离,实现了小车多角度检测障碍物,从而加 以判断转向、后退和前进,使小车能成功的躲避障 碍物,并按照预定轨道前进。
Arduino智能避障小车避障程序
Arduino智能避障小车避障程序首先建立一个名为modulecar.ino的主程序。
// modulecar.ino,玩转智能小车主程序#include <Servo.h> //导入舵机库#include <NewPing.h> //导入NwePing库// 对照系统配线方案依次指定各I/Oconst int ENA = 3 ; //左电机PWMconst int IN1 = 4 ; //左电机正const int IN2 = 5 ; //左电机负const int ENB = 6 ; //右电机PWMconst int IN3 = 7 ; //右电机正const int IN4 = 8 ; //右电机负const int trigger = 9 ; //定义超声波传感器发射脚为D9 const int echo = 10 ; //定义传感器接收脚为D10 const int max_read = 300; //设定传感器最大探测距离。
int no_good = 35; //*设定35cm警戒距离。
int read_ahead; //实际距离读数。
Servo sensorStation; //设定传感器平台。
NewPing sensor(trigger, echo, max_read); //设定传感器引脚和最大读数//系统初始化void setup(){Serial.begin(9600); //启用串行监视器可以给调试带来极大便利sensorStation.attach(11); //把D11分配给舵机pinMode(ENA, OUTPUT); //依次设定各I/O属性pinMode(IN1, OUTPUT);pinMode(IN2, OUTPUT);pinMode(ENB, OUTPUT);pinMode(IN3, OUTPUT);pinMode(IN4, OUTPUT);pinMode(trigger, OUTPUT);pinMode(echo, INPUT);sensorStation.write(90); //舵机复位至90?delay(6000); //上电等待6s后进入主循环}//主程序void loop(){read_ahead = readDistance(); //调用readDistance()函数读出前方距离Serial.println("AHEAD:");Serial.println(read_ahead); //串行监视器显示机器人前方距离if (read_ahead < no_good) //如果前方距离小于警戒值{fastStop(); //就令机器人紧急刹车waTch(); //然后左右查看,分析得出最佳路线goForward(); //*此处调用看似多余,但可以确保机器人高速运转下动作的连贯性}else goForward(); //否则就一直向前行驶}主程序用到了两个库,Servo库是IDE自带的,NwePing库是第三方库,需要下载安装。
第3课 避障小车
第3课避障小车一、教材与学生情况分析本节课是《Arduino创意机器人》第三章《智能小车》的第三节课。
通过前面两节课的学习,学生已经可以使用小车完成基本的运动。
但是我们的小车还不智能,随着学习的深入,对小车也有了更高的要求。
本节课利用多种传感器实现小车避障。
二、教学目标1.通过使用触碰传感器以及数字防跌落传感器,掌握避障小车制作的一般过程。
2.通过不同传感器的使用,体验多种办法解决避障问题的优势,感受学习Arduino机器人的乐趣。
三、教学重难点教学重点:使用两种传感器进行避障教学难点:小车避障过程的分析四、教学流程1.抛出疑问,引入新课教师:我们发现在自然界中,有很多昆虫通过触角检测前进道路上的障碍,所以在遇到障碍物时可以绕道而行。
当然,我们的小车在前进途中,也会遇到各种各样的障碍物。
我们想不想给小车也装上触角进而避障呢?出示课题《避障小车》。
2.教学新课(1)触碰传感器展示触碰传感器,并让学生从工具盒中拿出触碰传感器,将其安装在小车上(这里使用一左一右,可以根据实际情况进行调整)。
讲解触碰传感器特性:它是一个利用接触片实现检测触碰功能的电子部件,主要用于检测外界触碰情况,是一种数字传感器,在碰到障碍物时,值为0,否则值为1。
让学生将触碰传感器接在数字针脚上,观察当手碰到触碰传感器时,其自带指示灯亮灭情况。
(2)基础任务:使用触碰传感器制作避障小车1)任务描述使用两个触碰传感器进行避障,使小车能够避障。
2)搭建硬件将触碰传感器一左一右安装在小车上,注意将触碰传感器的触角朝外。
这里,我们分别接在了数字针脚2、3。
3)编写程序(参考)【提示】在使用触碰传感器时,当传感器检测到障碍物,会后退几秒,再转弯,而不能让其直接转弯。
这是因为触碰传感器要接触到障碍物,才算检测到了。
可以尝试直接转弯的情况。
(3)提高任务:使用防跌落感器制作避障小车1)任务描述使用前面用过的防跌落传感器进行避障。
注意到防跌落传感器可以检测到10cm以内的障碍物。
基于Arduino单片机的智能避障小车设计
种, 其 内容 涵 盖 机 械 、 汽车 、 电子 、 自动 控 制 、 计 算
机、 传感技术等多个学科的知识领域 , 作 为 一 门新 兴 的综合 技 术 ,可 广 泛地 应用 于工 厂 自动料 车 、 固 定场地搬运车等技术领域 , 也 可应 用 于 复 杂 、 恶 劣
智 能小 车 . 即轮 式 机 器 人 , 是 移 动 机 器 人 的 一
年 间 成 功研 制 出 了名 为 S h a k e y的地 面 自主 移 动机 器人 , 标 志着 机器 人研究 的开始 【 l J 。随 着计 算机 与传 感技 术 的发展 。 移 动机器 人 的研究 进 入 了小 高潮 。 美
动 的 布置 方式 , 两轮 各 用一 个直 流 电机 配 合 齿 轮 减 速 机 构 实现 。 选 用A r d u i n o 单 片 机 芯 片作
为控 制 核心 。进 行 了软硬 件 系统 的设 计 。 搭 建 了智 能 小 车平 台 , 取得 了良好 的 实验 效 果 。
关键词 : 智能小车; 避障 ; 超 声 波 传 感 器
文章编号 : 1 0 0 1 — 9 9 4 4 ( 2 0 1 3 ) 0 5 — 0 0 0 1 — 0 4
基于A r d u i n o单片机 的智能避 障小车 学 机 械 学 院 , 贵州 5 5 0 0 2 5 )
摘要: 本 文介 绍 了采 用 超 声波 传 感 器的 自主避 障 小车 的设 计 与 实现 。 通 过 发 送脉 冲检 测 与障 碍物 的距 离, 从 而控 制舵 机 进 行 转 向 。 实现 小 车 的避 障 功 能。智 能 小 车采 用 前桥 转 向 。 后 轮 驱
基于Arduino的智能小车自动避障系统设计与研究
基于Arduino的智能小车自动避障系统设计与研究目录第一章绪论 (1)1.1选题背景 (1)1.2研究目的和意义 (2)1.2.1研究目的 (2)1.2.2研究意义 (2)1.3国内外研究现状 (3)1.3.1国外研究现状 (3)1.3.2国内研究现状 (4)1.4论文的研究内容 (5)1.5论文的组织结构 (6)第二章环境信息采集系统研究 (7)2.1超声波传感器 (7)2.1.1超声波传感器结构 (7)2.1.2超声波测距原理 (8)2.1.3超声波传感器测距的优缺点 (8)2.2红外测距传感器 (9)2.2.1红外测距传感器的结构 (10)2.2.2红外测距传感器的原理 (10)2.2.3红外测距传感器测距的优缺点 (11)2.3传感器的选择方案 (11)2.3.1对测距传感器选取的要求 (11)2.3.2几种传感器的性能简介 (12)2.3.3传感器选择方案 (12)2.4传感器的配置方案 (13)2.5本章小结 (15)第三章自动避障策略研究 (16)3.1障碍物分类 (16)iii3.2安全避障距离的选取 (17)3.3避障策略分析 (18)3.3.1避开b类型障碍物分析 (18)3.3.2避开c类型障碍物分析 (19)3.3.3避开d类型障碍物分析 (20)3.4本章小结 (21)第四章自动避障系统设计与实现 (22)4.1自动避障系统的总体结构设计 (22) 4.1.1 Arduino控制模块 (22)4.1.2信息采集模块 (27)4.1.3驱动模块 (29)4.1.4液晶显示模块 (30)4.1.5蓝牙通信模块 (31)4.1.6 Android控制软件 (33)4.1.7系统硬件线路连接 (34)4.2避障系统的控制模式设计 (35)4.3自动避障系统各模块功能的实现 (37) 4.3.1驱动模块 (37)4.3.2信息采集模块 (38)4.3.3液晶显示模块 (40)4.3.4蓝牙通信模块 (41)4.3.5 Android控制软件 (41)4.4自动避障策略的设计与实现 (42)4.4.1自动避障参数的确定 (42)4.4.2转弯方向的判定与实现 (44)4.4.3 自动避障主控程序的设计与实现 (45) 4.4.4 手动控制模式的设计与实现 (48) 4.5本章小结 (49)iv第五章自动避障实验 (50)5.1自动避障实验 (50)5.1.1 无障碍物智能小车运行实验 (50)5.1.2 模拟障碍物类型b的实验 (50)5.1.3 模拟障碍物类型c的实验 (51)5.1.4模拟障碍物类型d的实验 (53)5.2本章小结 (54)第六章总结与展望 (55)6.1总结 (55)6.2展望 (55)参考文献 (56)致谢 (60)v第一章绪论第一章绪论智能小车是一种多轮驱动的智能机器人,又被称为轮式移动机器人,它具有体积比较小、重心比较低、运动灵活、操控简单等优点[1,2]。
采用Arduino为核心控制的智能小车避障系统
采用Arduino为核心控制的智能小车避障系统
人工智能技术是与多门基础学科联系紧密、相互促进相互发展的前沿技术,是集计算机、物理学、生理学、控制技术、传感器技术等于一体的高新技术产业。
人工智能技术的应用领域也越来越广泛,除了传统的工业领域,人工智能技术的应用也涉及到军事、娱乐、服务、医疗等领域。
随着机器人技术的不断发展,人们对机器人的要求也越来越高,机器人的智能化已成为当今的热点。
智能小车作为一种四轮驱动的智能机器人,它行动灵活、操作方便,车上可集成各种精密传感器数据处理模块,其避障功能保证了智能小车在行进过程中行进方向的自行调节,避免发生碰撞、碰擦,是智能小车的重要组成部分。
目前,智能小车大多采用单个传感器实现单面避障,但单面避障存在着固有的缺陷,如:障碍物探测缓慢、避障成功率较低等。
由此,设计了一种能全方位避障的智能小车系统,采用红外单点避障与超声波双路避障相结合的模式,可实现多面自动探测,并实现全方位避障,有效提高了避障的成功率和效率。
1系统设计
设计的避障系统采用红外单点避障与超声波双路避障相结合的模式,以实现对障碍物的全方位有效避障。
为此,在小车前端中央设置一个红外避障传感器,用于探测小车前方障碍物,再在小车前端两侧设置左右两个超声波避障传感器,他们分别探测小车前方左右两侧障碍物,有效的扩大了探测范围,从而实现了小车的全方位避障。
本系统利用多模块协调配合,使其具有较高自适应能力。
硬件以需求为基础,选择了合适的模块,总体模块中包含:电源模块,红外传感模块,超声波传感模块,电机驱动模块,Arduino模块等。
系统整体框。
基于Arduino的Mecanum轮无线遥控避障小车
Key Words: Arduino Control Panel Mecanum Wheels Wireless Remote Control Obstacle Avoidance
随着制造业的发展, 更有效地利用车间货物储存 空间以提高空间利用率, 已成为生产管理的一个重要 问题,因此,运输车应尽可能减少其转向空间。 普通的 轮式与履带式机构都需要一定的转弯半径, 在拥挤的 工作空间内实现全方位运动相对困难。 工人驾驶装卸 车进行货物运输的运输方式效率低, 在复杂工作空间 内的劳动强度大大增加,且容易出现错误。
2 系统的硬件设计
2.1 Mecanum 轮 Mecanum 轮的轮毂外围安装了一周与轮毂轴线成
一定角度的无动力辊子, 这些辊子既可绕轮毂轴公 转, 也可绕各自的支撑芯轴自转。 由同样结构的若干 Mecanum 轮按一定规则组成的轮组系统, 通过改变各 轮毂速度来改变各轮辊子的轴向力, 进而改变运动系 统中心合速度的大小和方向, 使小车实现平面全方位
函数 MotorCar 创建一个对象 Motor。
255,之后应用 到 库 函 数 中 的 成 员 函 数 时 ,直 接 声 明 该
本设计中采集到的模拟量与对应的运动字符、速
库函数的对象即可。根据遥控模拟量信号图编写程序,
度以及调用的函数关系见表 2。
表 2 遥控器模拟量与小车运动形式对应关系
遥控器中采集到的运动
系 统 选 用 Arduino Atmega 控 制 板 , 核 心 是 一 片 ATmega328P AU 1226 芯 片 , 可 支 持 上 千 种 开 放 源 代 码,其程序设计语言的编程语法规则类似于 C++。
Arduino 的 I/O 扩 展 板 可 以 灵 活 扩 展 数 字 量 与 模 拟量输入接口和各种功能模块, 实现与其它传感器、 RS485 设备的 简单连接,小 车使用一个 I/O 扩展板,用 以支持 RS485 接口并驱动 4 个电机。 2.3 遥控器
基于Arduino的避障小车设计与实现
第8卷第20期 黑龙江科学V88 2017 年10 月HEILONGJIANGSCIENCE O cto be r 2017基于Arduino的避障小车设计与实现罗琴(广州工程技术职业学院,广州510900*摘要:本设计基于Ardumo开源设计平台,以Ardumo UNO开发板为核心控制器,利用舵机、起声波传感器模块、电机驱动模块等,研究起声波测距的算法,分析避障小车避障执行流程,使小车按照设定的模式避开障碍物,自动循迹,实现无障碍运行,达到实用要求。
实践表明,该设计有效。
关键词#Arduino$起声波测距;避障;自动循迹;避障小车中图分类号:TP23 文献标志码:A文章编号#1674 -8646(2017)20 -0024 -02Desij»n and implementation of avoid carrier based on arduinoL U O Qin(Guangzliou Institute of Engineering Technology,Guangzhou510900,China)Abstract +Based on Arduino open source design platform,taking Arduino U N O development board as the core controller,t o s tudy ultrasonic ranging algorithm with the use of steering gear,ultrasonic sensor module and the motor drive module,and analyze the obstacle avoidance barrier implementation process,avoid obstacles and achieve barrier-free operation and meet the practical requirements.Practice shows that the design i s effective.Key words :Arduino;Ultrasonic ranging;Obstacle avoidance;Automatic tracking;Obstacle avoidance carArduino是目前使用最为广泛的开源硬件之一,其 大部分硬件已配置好,是一款自带有用于连接电脑 U S B接口的小型单片机电路板。
基于Arduino多传感器的智能小车避障系统设计
基于Arduino多传感器的智能小车避障系统设计一、本文概述本文旨在探讨基于Arduino控制器设计并实现一个多传感器融合的智能小车避障系统。
在现代自动化和机器人技术领域,自主导航与障碍物规避能力是衡量移动平台智能化水平的重要指标。
本项目聚焦于采用开源硬件平台Arduino为核心控制器,结合各类传感器(如超声波测距传感器、红外线传感器、摄像头等)构建一套高效、实时的环境感知系统,并通过集成相应的数据处理算法与控制策略,使智能小车能够在复杂环境中自动探测周围障碍物,进而做出准确的路径规划与实时避障决策。
论文首先阐述了智能小车避障系统的总体架构及其工作原理,详述所选传感器的工作方式以及如何利用Arduino进行数据采集与处理。
接着,分析和比较不同传感器的特点及优劣,并讨论传感器融合技术在提高系统精度和鲁棒性上的关键作用。
介绍设计并实现实时避障算法的具体过程,包括但不限于障碍物检测、定位、路径规划与控制执行等方面。
通过实验验证该基于Arduino多传感器融合的智能小车避障系统的性能和实用性,展示其实地运行效果及可能的应用前景。
二、系统设计理论基础Arduino作为核心控制器,其开源硬件和软件平台为智能小车系统的构建提供了便捷且灵活的基础。
Arduino能够处理来自多个传感器的数据输入,并据此做出实时决策,控制小车的运动与方向。
它通过CC编程语言环境实现算法编程,从而对各类传感器数据进行整合分析,进而实现避障功能的设计与实现。
智能小车的避障能力依赖于多种传感器的有效结合使用,如超声波测距传感器、红外线避障传感器、光电传感器等。
每种传感器都有其特定的工作原理和检测范围,通过集成这些传感器可以获取更全面、准确的环境信息。
例如,超声波传感器用于测量障碍物的距离,红外线传感器则可在较近范围内快速响应障碍变化,而光电传感器可用于地面标记识别或路线追踪。
多传感器融合技术旨在有效融合各个传感器数据,降低误报率和漏报率,提高避障系统的可靠性和鲁棒性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sensorStation.write(90);//这一行确保只要小车处于行驶状态,传感器就面向正前方
delay (500); //延迟0.5s。
//分析得出最佳行进路线。
if (read_right > read_left) //如果右前方距离比较大
}
//原地右转
void turnRight()
{
Serial.println("RIGHT");//串行监视器显示机器人状态为RIGHT(向右转)
//左电机反转
analogWrite(ENA,53);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
//右电机反转
//左电机反转
analogWrite(ENA,106);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
//右电机反转
analogWrite(ENB,118);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
const int IN1 = 4 ; //左电机正
const int IN2 = 5 ; //左电机负
const int ENB = 6 ; //右电机PWM
const int IN3 = 7 ; //右电机正
cБайду номын сангаасnst int IN4 = 8 ;//右电机负
const int trigger = 9 ; //定义超声波传感器发射脚为D9
//刹车
void fastStop()
{
Serial.println("STOP");//串行监视器显示机器人状态为STOP(停止)
//左电机急停(注:L298N和L293D均带有刹车功能,在使能成立的条件下,同时向两相写入高电平可令电机急停,详见芯片手册)
digitalWrite(ENA, HIGH);
delay(1200); //延迟1.2s待舵机稳定
int read_right = readDistance(); //调用readDistance()函数读出右前方距离
Serial.print("RIGHT:");
Serial.println(read_right);
//sensorStation.write(90); //*舵机复位至90度。廉价舵机大角度旋转会产生抖动,要加上这两行以求读数准确。
pinMode(ENA, OUTPUT); //依次设定各I/O属性
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(trigger, OUTPUT);
{
turnRight(); //就向右转,
}
else turnLeft();//否则就向左转
//此处也可以加入另一层逻辑:如果左右两侧读数相等就调用turnAround()原地掉头。但实际上触发的几率不大。
}
// I2C液晶测试程序,Arduino版本1.5.6-r2,LiquidCrystal_I2C库版本2.0
return map(IRvalue,120,930,30,0);//用map()函数把读数转换为距离
}
代码
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);//发送10μs的高电平触发信号
delayMicroseconds(10);
//左电机逆时针旋转
int val1 = analogRead(A0);//手动调整左电机转速。电位器两端分别接至+5V和GND,中心抽头接至A0
int leftSpeed = map(val1,0,1023,0,255); //把读数映射为PWM
analogWrite(ENA,leftSpeed); //写入速度。下面的右电机同理
lcd.print("Hello, world!");//开始打印信息
lcd.setCursor(3,1);//设定显示位置,第3列,第1行
lcd.print("ZANG.HAIBO");
}
void loop()
{
}
//前进
void goForward()
{
Serial.println("FORWARD"); //串行监视器显示机器人状态为FORWARD(前进)
goForward(); //*此处调用看似多余,但可以确保机器人高速运转下动作的连贯性
}
else goForward();//否则就一直向前行驶
}
主程序用到了两个库,Servo库是IDE自带的,NwePing库是第三方库,需要下载安装。
接下来建立一个名为move.ino的标签。
//move.ino,机动模块。
#include <Wire.h>
#include "LiquidCrystal_I2C.h" //导入I2C液晶库
LiquidCrystal_I2C lcd(0x27,16,2); //设定I2C地址及液晶屏参数
void setup()
{
lcd.init();//始化液晶屏
lcd.backlight();
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
//右电机急停
digitalWrite(ENB, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
}
//前进
void goForward()
{
Serial.println("FORWARD"); //串行监视器显示机器人状态为FORWARD(前进)
digitalWrite(IN4, LOW);
}
//原地左转
void turnLeft()
{
Serial.println("LEFT");//串行监视器显示机器人状态为LEFT(向左转)
//左电机正转
analogWrite(ENA,106);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
NewPing sensor(trigger, echo, max_read); //设定传感器引脚和最大读数
//系统初始化
void setup()
{
Serial.begin(9600);//启用串行监视器可以给调试带来极大便利
sensorStation.attach(11); //把D11分配给舵机
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH)*340/60/2;//检测脉冲宽度即为超声波往返时间
代码2:简易超声波测距代码
const int TrigPin = 2;
const int EchoPin = 3;//设定SR04连接的Arduino引脚
IRvalue=analogRead(echo);//读取自然光和红外线下反射值的总和
digitalWrite(trigger,LOW);//关闭红外发射管以读取自然光下的反射值
delayMicroseconds(200);//留出200μs响应时间
IRvalue=IRvalue-analogRead(echo);//刨除自然光得出实际值(红外发射管产生的部分)
const int echo = 10 ; //定义传感器接收脚为D10
const int max_read = 300; //设定传感器最大探测距离。
int no_good = 35;//*设定35cm警戒距离。
int read_ahead;//实际距离读数。
Servo sensorStation;//设定传感器平台。
return(cm); //readDistance()返回的数值是cm
}
最后是驱动云台扫描并分析左右两侧距离的watch.ino模块。
// watch.ino,查看模块
void waTch()
{
//测量右前方距离。
//*注意舵机旋转方向,SG5010为逆时针旋转
sensorStation.write(20); //*舵机右转至20°。调节此值会影响传感器扫描区域,夹角越小,机器人转弯越谨慎
analogWrite(ENB,118);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay (205);//*调节此值可使机器人动作连贯
}
//原地掉头(暂时用不到)
void turnAround()
{
Serial.println("TURN 180"); //串行监视器显示机器人状态为TURN 180(原地顺时针旋转180°)
首先建立一个名为modulecar.ino的主程序。
// modulecar.ino,玩转智能小车主程序
#include <Servo.h> //导入舵机库
#include <NewPing.h>//导入NwePing库