欢迎来到天天文库
浏览记录
ID:55209486
大小:475.50 KB
页数:14页
时间:2020-05-03
《Arduino智能避障小车避障程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、首先建立一个名为modulecar.ino的主程序。//modulecar.ino,玩转智能小车主程序#include//导入舵机库#include//导入NwePing库//对照系统配线方案依次指定各I/OconstintENA=3;//左电机PWMconstintIN1=4;//左电机正constintIN2=5;//左电机负constintENB=6;//右电机PWMconstintIN3=7;//右电机正constintIN4=8;//右电机负constinttrigger
2、=9;//定义超声波传感器发射脚为D9constintecho=10;//定义传感器接收脚为D10constintmax_read=300;//设定传感器最大探测距离。intno_good=35;//*设定35cm警戒距离。intread_ahead;//实际距离读数。ServosensorStation;//设定传感器平台。NewPingsensor(trigger,echo,max_read);//设定传感器引脚和最大读数//系统初始化voidsetup(){Serial.begin(9600);//启用串行监视器可
3、以给调试带来极大便利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(6
4、000);//上电等待6s后进入主循环}//主程序voidloop(){read_ahead=readDistance();//调用readDistance()函数读出前方距离Serial.println("AHEAD:");Serial.println(read_ahead);//串行监视器显示机器人前方距离if(read_ahead5、但可以确保机器人高速运转下动作的连贯性}elsegoForward();//否则就一直向前行驶}主程序用到了两个库,Servo库是IDE自带的,NwePing库是第三方库,需要下载安装。接下来建立一个名为move.ino的标签。//move.ino,机动模块。//刹车voidfastStop(){Serial.println("STOP");//串行监视器显示机器人状态为STOP(停止)//左电机急停(注:L298N和L293D均带有刹车功能,在使能成立的条件下,同时向两相写入高电平可令电机急停,详见芯片手册)digit6、alWrite(ENA,HIGH);digitalWrite(IN1,HIGH);digitalWrite(IN2,HIGH);//右电机急停digitalWrite(ENB,HIGH);digitalWrite(IN3,HIGH);digitalWrite(IN4,HIGH);}//前进voidgoForward(){Serial.println("FORWARD");//串行监视器显示机器人状态为FORWARD(前进)//左电机逆时针旋转analogWrite(ENA,106);//左电机PWM,可微调这个数值使小车7、左右两侧车轮转速相等,右电机同理digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);//右电机顺时针旋转analogWrite(ENB,118);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);}//原地左转voidturnLeft(){Serial.println("LEFT");//串行监视器显示机器人状态为LEFT(向左转)//左电机正转analogWrite(ENA,106);digitalWrite(IN1,HIGH);digita8、lWrite(IN2,LOW);//右电机正转analogWrite(ENB,59);//*微调这个数值,使转弯时内侧车轮起主导作用。相当于让小车向后打一把轮再拐弯。右转同理digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);delay(205);//*延迟,数值以毫秒为单位,调
5、但可以确保机器人高速运转下动作的连贯性}elsegoForward();//否则就一直向前行驶}主程序用到了两个库,Servo库是IDE自带的,NwePing库是第三方库,需要下载安装。接下来建立一个名为move.ino的标签。//move.ino,机动模块。//刹车voidfastStop(){Serial.println("STOP");//串行监视器显示机器人状态为STOP(停止)//左电机急停(注:L298N和L293D均带有刹车功能,在使能成立的条件下,同时向两相写入高电平可令电机急停,详见芯片手册)digit
6、alWrite(ENA,HIGH);digitalWrite(IN1,HIGH);digitalWrite(IN2,HIGH);//右电机急停digitalWrite(ENB,HIGH);digitalWrite(IN3,HIGH);digitalWrite(IN4,HIGH);}//前进voidgoForward(){Serial.println("FORWARD");//串行监视器显示机器人状态为FORWARD(前进)//左电机逆时针旋转analogWrite(ENA,106);//左电机PWM,可微调这个数值使小车
7、左右两侧车轮转速相等,右电机同理digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);//右电机顺时针旋转analogWrite(ENB,118);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);}//原地左转voidturnLeft(){Serial.println("LEFT");//串行监视器显示机器人状态为LEFT(向左转)//左电机正转analogWrite(ENA,106);digitalWrite(IN1,HIGH);digita
8、lWrite(IN2,LOW);//右电机正转analogWrite(ENB,59);//*微调这个数值,使转弯时内侧车轮起主导作用。相当于让小车向后打一把轮再拐弯。右转同理digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);delay(205);//*延迟,数值以毫秒为单位,调
此文档下载收益归作者所有