欢迎来到天天文库
浏览记录
ID:22582083
大小:266.25 KB
页数:15页
时间:2018-10-30
《arduino智能避障小车避障程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、首先建立一个名为modulccar.ino的主程序。//modulecar.ino,玩转智能小车主程序#include//导入驼机库^include〈NewPing.h〉//导入NwePing序//对照系统配线方案依次指定各I/OconstintENA=3;//左电机PWMconstintIN1=4;//左电机正constintIN2=5;//左也机货constintENB=6;"右电机PWMconstintIN3=7;//右电机正constintIN4=8;//右电机负constinttrigger=9;/
2、/史义趨声波传感器发射脚为D9constintecho=10;//定义传感器接收脚为D10constintmax_read=300;//没定传感器最人探测距离。intno_good=35;//*设定35cm瞥戒距离。intrcad_ahcad;//实•距离读数。ServosensorStation;//设定传感器平台。NewPingsensor(trigger,echo,max_read);//设定传感認引脚和最大读数//系统初始化voidsetup(){Serial.begin(9600);Mj用巾行监视器4以给调试仰来极大
3、便利sensorStation.attach(l1);//把DI1分配给驼机pinMode(ENA,OUTPUT);//依次设定各I/O屈性pinMode(INl,OUTPUT);pinMode(IN2,OUTPUT);pinModc(ENB,OUTPUT);pinMode(IN3,OUTPUT);pinMode(IN4,OUTPUT);pinMode(trigger,OUTPUT);pinMode(echo,INPUT);sensorStation.write(90);//舵机复位至90°delay(6000);//上电等待
4、6s后进入主循环}//主程序voidloop(){read_ahead=readDistance();//调用readDistance()闲数速出前力•距离Serial.println("AHEAD:");Serial.println(read_ahead);//申行监视器显示机器人前方SLi离if(rcad_ahcad5、动作的连贯性}elsegoForward();//否则就一且向前行驶主程序用到了两个庳,Servo庳是IDE自带的,NwePing库是第三方庠,需要下载安装。接K來建立一个名为move.ino的标签。//move.ino,机动模块。"刹车voidfastStopO{Serial.println("STOP");//串行监视器显示机器人状态为STOP(停止)//左电机急停(注:L298N和L293D均带奋刹车功能,在使能成立的条件K,同时昀两相写入高电平可令电机急停,详见芯片手册)digitalWrite(ENA,HIGH);d6、igitalWritc(INl,HIGH);digitalWrite(IN2,HIGH);//右电机急停digitalWrite(ENB,HIGH);digitalWrite(IN3,HIGH);digitalWritc(IN4,HIGH);}//前进voidgoForward(){Serial.printlnfFORWARD'1);//巾行监视器显示机器人状态为FORWARD(前进)//左电机逆时针旋转analogWrite(ENA,106);//左电机PWM,hJ■微调这个数值使小车左右两侧车轮转速相等,右电机同理digi7、talWrite(INl,LOW);digitalWrite(IN2,HIGH);//右电机顺吋针旋转analogWrite(ENBJ18);digitalWrite(lN3,HIGH);digitalWrite(IN4,LOW);}//原地左转voidturnLeft(){SeriaLprintlnfLEFT");//屯行监视器显示机器人状态为LEFT(向左转)//左电机正转analogWrite(ENA,106);digitalWrite(lNl,HIGH);digitalWritc(IN2,LOW);//右电机正转ana8、logWrite(ENB,59);//*微调这个数值,使转弯吋内侧牛:轮起主导作用。相当于让小:午:向后打一把轮再拐弯。右转同理digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);delay(205);//*延迟,数值以毫秒为单位,调节此
5、动作的连贯性}elsegoForward();//否则就一且向前行驶主程序用到了两个庳,Servo庳是IDE自带的,NwePing库是第三方庠,需要下载安装。接K來建立一个名为move.ino的标签。//move.ino,机动模块。"刹车voidfastStopO{Serial.println("STOP");//串行监视器显示机器人状态为STOP(停止)//左电机急停(注:L298N和L293D均带奋刹车功能,在使能成立的条件K,同时昀两相写入高电平可令电机急停,详见芯片手册)digitalWrite(ENA,HIGH);d
6、igitalWritc(INl,HIGH);digitalWrite(IN2,HIGH);//右电机急停digitalWrite(ENB,HIGH);digitalWrite(IN3,HIGH);digitalWritc(IN4,HIGH);}//前进voidgoForward(){Serial.printlnfFORWARD'1);//巾行监视器显示机器人状态为FORWARD(前进)//左电机逆时针旋转analogWrite(ENA,106);//左电机PWM,hJ■微调这个数值使小车左右两侧车轮转速相等,右电机同理digi
7、talWrite(INl,LOW);digitalWrite(IN2,HIGH);//右电机顺吋针旋转analogWrite(ENBJ18);digitalWrite(lN3,HIGH);digitalWrite(IN4,LOW);}//原地左转voidturnLeft(){SeriaLprintlnfLEFT");//屯行监视器显示机器人状态为LEFT(向左转)//左电机正转analogWrite(ENA,106);digitalWrite(lNl,HIGH);digitalWritc(IN2,LOW);//右电机正转ana
8、logWrite(ENB,59);//*微调这个数值,使转弯吋内侧牛:轮起主导作用。相当于让小:午:向后打一把轮再拐弯。右转同理digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);delay(205);//*延迟,数值以毫秒为单位,调节此
此文档下载收益归作者所有