資源描述:
《arduino智能避障小車避障程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、首先建立一個(gè)名為modulccar.ino的主程序。//modulecar.ino,玩轉(zhuǎn)智能小車主程序#include//導(dǎo)入駝機(jī)庫(kù)^include〈NewPing.h〉//導(dǎo)入NwePing序//對(duì)照系統(tǒng)配線方案依次指定各I/OconstintENA=3;//左電機(jī)PWMconstintIN1=4;//左電機(jī)正constintIN2=5;//左也機(jī)貨constintENB=6;"右電機(jī)PWMconstintIN3=7;//右電機(jī)正constintIN4=8;//右電機(jī)負(fù)constinttrigger=9;/
2、/史義趨聲波傳感器發(fā)射腳為D9constintecho=10;//定義傳感器接收腳為D10constintmax_read=300;//沒(méi)定傳感器最人探測(cè)距離。intno_good=35;//*設(shè)定35cm瞥戒距離。intrcad_ahcad;//實(shí)?距離讀數(shù)。ServosensorStation;//設(shè)定傳感器平臺(tái)。NewPingsensor(trigger,echo,max_read);//設(shè)定傳感認(rèn)引腳和最大讀數(shù)//系統(tǒng)初始化voidsetup(){Serial.begin(9600);Mj用巾行監(jiān)視器4以給調(diào)試仰來(lái)極大
3、便利sensorStation.attach(l1);//把DI1分配給駝機(jī)pinMode(ENA,OUTPUT);//依次設(shè)定各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);//舵機(jī)復(fù)位至90°delay(6000);//上電等待
4、6s后進(jìn)入主循環(huán)}//主程序voidloop(){read_ahead=readDistance();//調(diào)用readDistance()閑數(shù)速出前力?距離Serial.println("AHEAD:");Serial.println(read_ahead);//申行監(jiān)視器顯示機(jī)器人前方SLi離if(rcad_ahcad5、動(dòng)作的連貫性}elsegoForward();//否則就一且向前行駛主程序用到了兩個(gè)庳,Servo庳是IDE自帶的,NwePing庫(kù)是第三方庠,需要下載安裝。接K來(lái)建立一個(gè)名為move.ino的標(biāo)簽。//move.ino,機(jī)動(dòng)模塊。"剎車voidfastStopO{Serial.println("STOP");//串行監(jiān)視器顯示機(jī)器人狀態(tài)為STOP(停止)//左電機(jī)急停(注:L298N和L293D均帶奮剎車功能,在使能成立的條件K,同時(shí)昀兩相寫入高電平可令電機(jī)急停,詳見(jiàn)芯片手冊(cè))digitalWrite(ENA,HIGH);d
6、igitalWritc(INl,HIGH);digitalWrite(IN2,HIGH);//右電機(jī)急停digitalWrite(ENB,HIGH);digitalWrite(IN3,HIGH);digitalWritc(IN4,HIGH);}//前進(jìn)voidgoForward(){Serial.printlnfFORWARD'1);//巾行監(jiān)視器顯示機(jī)器人狀態(tài)為FORWARD(前進(jìn))//左電機(jī)逆時(shí)針旋轉(zhuǎn)analogWrite(ENA,106);//左電機(jī)PWM,hJ■微調(diào)這個(gè)數(shù)值使小車左右兩側(cè)車輪轉(zhuǎn)速相等,右電機(jī)同理digi
7、talWrite(INl,LOW);digitalWrite(IN2,HIGH);//右電機(jī)順吋針旋轉(zhuǎn)analogWrite(ENBJ18);digitalWrite(lN3,HIGH);digitalWrite(IN4,LOW);}//原地左轉(zhuǎn)voidturnLeft(){SeriaLprintlnfLEFT");//屯行監(jiān)視器顯示機(jī)器人狀態(tài)為L(zhǎng)EFT(向左轉(zhuǎn))//左電機(jī)正轉(zhuǎn)analogWrite(ENA,106);digitalWrite(lNl,HIGH);digitalWritc(IN2,LOW);//右電機(jī)正轉(zhuǎn)ana
8、logWrite(ENB,59);//*微調(diào)這個(gè)數(shù)值,使轉(zhuǎn)彎吋內(nèi)側(cè)牛:輪起主導(dǎo)作用。相當(dāng)于讓小:午:向后打一把輪再拐彎。右轉(zhuǎn)同理digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);delay(205);//*延遲,數(shù)值以毫秒為單位,調(diào)節(jié)此