目錄
任務要求
摘要
1、前言
2、系統(tǒng)方案設計
3、理論分析與計算
3.1 病房選擇:
3.2 電機引腳及狀態(tài)
3.3 灰度傳感器及電機狀態(tài)
4、系統(tǒng)電路設計與仿真
4.1系統(tǒng)硬件框圖
4.2 單片機最小板電路
4.3 驅動電路設計
4.4?灰度傳感器設計
5、系統(tǒng)軟件設計
6、系統(tǒng)測試及結果分析
6.1 系統(tǒng)指標參數
6.1.1 STC89C52指標參數
6.1.2 灰度傳感器參數
6.1.3 電機驅動模塊參數
6.2 測試內容與方法
6.2.1 軟件測試
6.2.2 硬件測試
6.3 實物外觀
6.4 實物功能測試
6.5 測試結果分析
7、結論
任務要求:
?
摘要
? ? ? ?本設計完成了基于STC89C52的智能送藥小車控制系統(tǒng)的設計過程,此系統(tǒng)主要包括51最小開發(fā)板、按鍵控制電路、電機驅動電路、灰度檢測傳感電路等電路組合而成。以STC89C52為主控芯片及其外圍擴展電路實現系統(tǒng)整體功能,用灰度傳感器實現小車循跡功能,使用STC89C52驅動L298N芯片控制電機,由PWM控制小車速度,從而使小車順利通過直線、轉彎、識別十字路口并正確轉向功能。在硬件設計的基礎上實現了電機控制功能以及小車簡單循跡的軟件設計方案。
關鍵詞:單片機 ?循跡?PWM??L298N??智能送藥小車
1、前言
? ? ? ?隨著人工智能和自動化技術的迅速發(fā)展,各種高科技以及前沿技術開始廣泛運用于智能小車領域,使智能小車越來越多樣化。作為集多種高科技于一身的高薪技術集成產物,它融合了傳統(tǒng)機械、傳感器、單片機、軟件與人工智能技術等多個學科的知識。智能小車的研究和開發(fā)正成為廣泛關注的焦點。智能化小車是未來人們生活中的重要工具,將會給我們的生活生產帶來很大的便利。本設計基于單片機為核心設計了一款智能送藥小車,以多路灰度傳感器實現循跡、路口識別、終點識別功能,通過 PWM 調整小車姿態(tài)。能夠在規(guī)定醫(yī)院的藥房和病房間根據指令在藥房與病房間往返送藥。本設計采用STC89C52芯片實現其智能控制功能,通過五路灰度傳感器判斷小車運行狀態(tài)及小車位置,經單片機判斷后驅動電機驅動模塊對小車進行控制。采用的數字量灰度傳感器可對被測面的兩種顏色差異進行調節(jié)比較,對于本設計中病房要求的白紅線循跡識別精度高、抗干擾能力強。
2、系統(tǒng)方案設計
? ? ? ? 本課程設計要求設計智能送藥小車,模擬完成在醫(yī)院藥房與病房的藥物送取。病房分為近端、中端、遠端三部分,要求小車分別送往三端病房并返回,并且運送和返回時間均不超過40秒。
? ? ? ? ?小車系統(tǒng)+7V電源為L298N電機驅動提供電源,經L298N驅動模塊內置的穩(wěn)壓模塊輸出+5V電源為其他模塊供電,通過由發(fā)光二極管和光敏二極管組成的灰度傳感器循跡模塊對白色底板和紅線對光的反射率不同來實現循跡、轉彎和十字路口的判斷。由STC98C52通過對I/O口控制驅動L298N模塊改變四個直流電機的工作狀態(tài),通過四個電機驅動模塊和調節(jié)PWM輸出實現小車前進、后退、轉向、掉頭、加速、減速功能。
系統(tǒng)軟件框圖如圖2.1所示,當傳感器檢測到紅色軌道后開始判斷是否讀取到房間信息,進而驅動L298N電機驅動模塊來驅動電機運作,使小車前往對應病房。
?、
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2.1 系統(tǒng)軟件框圖
? ? ? ? 系統(tǒng)硬件框圖如圖2.2所示,使用+7V電壓源為L298N電機驅動模塊供電,經L298N內部穩(wěn)壓管輸出+5V電壓為單片機及其他模塊供電。單片機通過I/O口讀取灰度傳感器和按鍵數據對小車進行控制。
3、理論分析與計算
3.1 病房選擇:
目標病房選擇說明示意圖如表3.1按鍵對應病房所示,當按下不同按鍵使對應端口接地時,通過讀取I/O端口,通過按鍵判斷函數進行判斷從而執(zhí)行不同的子程序來進行病房之間的往返,從而達到智能送藥的目的。
按鍵 |
|||||||||
KEY1 |
KEY2 |
KEY3 |
KEY4 |
KEY5 |
KEY6 |
KEY7 |
KEY8 |
病房號 |
|
按鍵狀態(tài) |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
|
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
3 |
|
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
4 |
|
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
5 |
|
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
6 |
|
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
7 |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
8 |
表3.1 按鍵對應病房
3.2 電機引腳及狀態(tài)
? ? ? ? L298N真值表如圖3.2所示,ENA為使能引腳,通過單片機輸出PWM信號使能ENA來調整電機轉速。IN1和IN2分別為高、低和低、高電平時電機對應正轉、反轉,IN1和IN2同時為低電平或同時為高電平時電機制動。ENA為低電平時使能IN1、IN2引腳無法對電機進行控制。
3.3 灰度傳感器及電機狀態(tài)
本設計采用五路灰度傳感器L2、L1、M、R1、R2,當中間三個傳感器L1、M、R1檢測到紅線時認為小車處于紅線上,允許啟動按鍵模塊,啟動后進行自動循跡和路口、終點識別。當M測到紅線,L1、R1均未測到時,小車正常前進。當L1和M同時測到紅線時,小車小幅度偏離軌道,此時左輪小幅度減速調整姿態(tài)直到L1檢測不到紅線。當L1測到紅線而M未測到紅線時小車大幅偏離軌道,此時左輪大幅度減速調整小車姿態(tài)直到L1和M同時測到紅線,此時小車姿態(tài)恢復到小幅度偏離狀態(tài),左輪由大幅度減速改為小幅度減速至L1未測到紅線而M測到紅線。右邊通過M、R1檢測同理。此方法僅通過改變小車左右輪PWM進行姿態(tài)調整,且根據小車偏離的情況設置不同的差速,可以讓小車在循跡過程中行進路線更為平滑穩(wěn)定且不易偏離軌道。循跡過程L1、M、R1狀態(tài)對應小車幾種姿態(tài)如表3.3.1所示。
L1、M、R1輸出狀態(tài) |
小車姿態(tài) |
000 |
小車未在紅線上 |
001 |
小車大幅度左偏 |
010 |
小車在紅線中間 |
011 |
小車小幅度左偏 |
100 |
小車大幅度右偏 |
110 |
小車小幅度右偏 |
表3.3.1 循跡過程傳感器狀態(tài)對應的幾種小車姿態(tài)
L2和R2傳感器用于判斷小車是否到達路口及終點,當五個傳感器同時識別到紅線則表示到達路口,五個傳感器同時識別不到紅線則表示小車通過終點虛線到達終點白色區(qū)域。對于遠端病房T型路口則是檢測L2、L1或者R2、R1識別到紅線而對應R2、L2識別不到紅線。路口、終點識別傳感器狀態(tài)如表3.3.2所示。
L2、L1、M、R1、R2輸出狀態(tài) |
路口、終點判定 |
11111 |
到達路口 |
00000 |
到達終點 |
0XX11 |
T型路口(需右轉) |
11XX0 |
T型路口(需左轉) |
表3.3.2 路口、終點識別傳感器狀態(tài)
4、系統(tǒng)電路設計與仿真
4.1系統(tǒng)硬件框圖
系統(tǒng)硬件如圖4.1所示,由電源部分為L298N電機驅動供電,L298N電機驅動輸出的5V電壓為單片機和灰度傳感器供電。由STC89C52控制L298N來驅動電機轉動,通過灰度傳感器采集到的不同的樣本數據來控制小車處于不同的運動狀態(tài),再通過影響小車的運動狀態(tài)反過來影響采樣的數據。
圖4.1 系統(tǒng)硬件框圖
4.2 單片機最小板電路
本設計采用市場常見51最小開發(fā)板,搭配STC89C52芯片,是一個低功耗,高性能的51內核的CMOS 8位單片機,具有在線編程功能,使用簡單價格低廉。51最小開發(fā)板電路圖如圖4.2所示。
4.3 驅動電路設計
在小車電機驅動方案的選擇上,選擇了市面上常見的電機驅動模塊L298N雙H橋直流電機驅動模塊,此驅動板體積小,重量輕,具有強大的驅動能力:2A的峰值電流和46V的峰值電壓;內置DC to?DC穩(wěn)壓(LM2596穩(wěn)壓管),可提供5V電壓為其他模塊供電。L298N電路原理圖如圖4.3所示。
?
圖4.3 L298N電路原理圖
4.4?灰度傳感器設計
本設計采用五路灰度傳感器,每一組傳感器均由一只發(fā)光二極管和一只光敏二極管組成,兩個傳感器安裝在同一面上,利用不同顏色的被檢測面對光的反射強弱程度 不同進行比較,從而輸出對應的信號供單片機I/O口采集和控制。數字量灰度傳感器可對被探測面的兩種顏色差異進行調節(jié)比較,只可以用于識別任意顏色中色差較大的兩種顏色(例如黑和白、白和綠,黑和紅,白和藍,黃和黑,黃和紅,等等),數字量傳感器帶有電壓比較器芯片和可調電位器;電壓比較器芯片可以對接收管接收回來的信號進行放大處理,然后經過電位器功率調制,可實現識別靈敏度(或探測距 離)的調節(jié),一般是探測到灰度值高(指接近于白色)的時候輸出低電平,而探測到灰度值低(指接近于黑色)的顏色時則輸出高電平;數字量為高低電平1和0兩種信號狀態(tài)輸出,可以簡化程序?;叶葌鞲衅髟韴D如圖4.4所示。
圖4.4 灰度傳感器原理圖
5、系統(tǒng)軟件設計
? ? ? ? 系統(tǒng)軟件設計部分分為主函數、循跡調速函數、電機控制函數、定時器中端函數、按鍵掃描函數、前往各個房間函數、延時函數等部分組成。
? ? ? ? 在檢測到小車在紅線上時開放按鍵許可,共8個按鍵、三個前往近中遠病房函數,通過按下的按鍵確認對應函數前往不同病房。具體函數實現在后文展示。軟件邏輯設計圖如圖5.1所示。
?
6、系統(tǒng)測試及結果分析
6.1 系統(tǒng)指標參數
6.1.1 STC89C52指標參數
??????1、電源電壓:5.5V~3.3V
??????2、工作頻率:40MHz
??????3、512字節(jié)RAM,8K ROM
6.1.2 灰度傳感器參數
??????①額定電壓:直流電源5.0V
??????②檢測高度:1-3cm
6.1.3 電機驅動模塊參數
??????①輸出電壓:5.0V
??????②輸入電機電壓:5.0~36.0V
??????③輸出驅動電流:2A
6.2 測試內容與方法
6.2.1 軟件測試
在Keil5中進行程序的編譯,檢查程序是否有錯誤。通過不斷測試調整,使得最終程序“0 Error(s), 0 Warning(s)”。將軟件代碼燒錄進去后在跑道上進行實測,測試小車是否能檢測房間、正確循線,對紅黑色塊的檢測是否靈敏,在十字路口的識別和轉彎情況 ,偏移軌跡后能不能返回軌道,還有檢測、停車位置的準確度。如果有偏差,調整代碼再反復調試。?
6.2.2 硬件測試
??????通電前先檢查連線,組裝好電路后對照電路圖按一定的順序逐級檢查電路連線,排查電源是否接錯,電源與地線是否短路,二極管方向和電容正負是否接反,焊點是否焊牢,等等。通電后觀察是否有冒煙、異常氣味、元器件發(fā)燙等異象。
??????先不加信號,測量各級直流工作電壓和電流是否正常,一般對電路的靜態(tài)工作點調試。 加上輸入信號,觀測電路輸出信號是否符合要求。
6.3 實物外觀
將小車按照電路圖進行組裝后,小車實物外觀如圖6.3所示。
圖6.3 小車實物圖
6.4 實物功能測試
????本設計的小車功能是從藥房出發(fā),分別到近端、中端、遠端病房并
返回藥房,去和返回的時間均不超過40s。
近端病房:送給小車一個近端病房的房間號,小車檢測后循紅線在第一個十字路口右轉準確到達病房,小車走過終點虛線后停車,1s后倒車并前進,檢測到十字路口后轉彎返回藥房。過程用時小于40s。
中端病房:送給小車中端房間號,小車在第二個十字路口左轉,到達病房檢 ??
測到超過虛線后停車,1s后倒車并前進,檢測到十字路口后左轉返回藥房。過程用時小于40s。
遠端病房:送給小車遠端房間號,小車在第三個T字路口左轉,第四個T字路口左轉,到達病房檢測到超過虛線后停車,1s后直行倒車,檢測到十字路口后轉彎按原路返回藥房。過程用時小于40s。
6.5 測試結果分析
經過多次測試調試,整體測試結果能夠達到題目要求和預期效果,并且速度遠超題目所要求的40s的要求,完美的實現了整個送藥的功能。
在測試過程中,小車在跑道上跑的時候車輪碾壓會使跑道鼓起反光,或
者跑道所在環(huán)境光線的強度變化以及跑到表面腳印等使傳感器檢測不太準確,以致小車不能成功到達房間。經多次修改程序增加延遲檢測以及短時間多次檢測的方式可以減小極短時間的干擾。
通過多次對小車整體測試,小車性能達到設計要求,對于環(huán)境干擾有較強抵抗能力。經多次測試均能前往目的病房并原路返回,在巡線過程中未出現沖出軌道的情況,轉彎和掉頭時也能正確在轉至中間傳感器到達紅線時停止。
7、結論
???????在這次課程實踐中,我充分的來利用了自己上大學以來學過的知識,同時加強了自己的動手能力,一切書本上的知識都應該轉換成實踐才有用處,所以我們應該更加重視起來實踐能力,才能充分的運用自己所學的知識。當然小車還有不足之處,比如,模塊性能有待提高,選用性能更強、更穩(wěn)定的芯片等,功能比較少。我們應該更加的深入學習,掌握更多專業(yè)相關知識,才能做得更好,成為行業(yè)中的佼佼者。
如還需相關資料,可私信我獲得,感謝支持文章來源:http://www.zghlxwxcb.cn/news/detail-493214.html
代碼:
#include<reg52.h>
#include<intrins.h>
unsigned char i1=0,i2=0;
unsigned char Left_PWM=50,Right_PWM=50;
/*L298N驅動引腳*///
sbit ENA=P1^0;//L298N使能端 左輪
sbit ENB=P1^1;//L298N使能端 右輪
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit IN3=P1^4;
sbit IN4=P1^5;
/*五路灰度傳感器*///
sbit IRN1=P2^0;//L2左2
sbit IRN2=P2^1;//L1左1
sbit IRN3=P2^2;//M中間 //黑高白低
sbit IRN4=P2^3;//R1右1
sbit IRN5=P2^4;//R2右2
//按鍵1~8//
sbit KEY1=P0^0;
sbit KEY2=P0^1;
sbit KEY3=P0^2;
sbit KEY4=P0^3;
sbit KEY5=P0^4;
sbit KEY6=P0^5;
sbit KEY7=P0^6;
sbit KEY8=P0^7;
/
void Time_r0_Init();//定時器裝載
void Right_go();//右輪前進
void Right_back();//右輪后退
void Right_stop();//右輪停止
void Left_go();//左輪前進
void Left_back();//左輪后退
void Left_stop();//左輪停止
void Car_go();//小車前進
void Car_back();//小車后退
void Car_stop();//小車停止
void turn_around();//小車掉頭
void Left_Z();//左直角轉
void Right_z();//右直角轉
void turn();//判斷轉彎情況
void KEY();//按鍵掃描函數
///
void go_to_near(char a1);//去近端病房 0左1右
void go_to_mid(char a2);//去中端病房 0左1右
void go_to_distant(char a3);//去遠端病房 0左左1左右2右左3右右
void delay(unsigned char delay_t);//延時函數
void main(void)
{
P2=0xFF;
Time_r0_Init();
while(1)
{
KEY();
}
}
void Time_r0_Init() //設置定時器0
{ //通過設置定時器0來調制小車的轉速
TMOD=0x01; //選擇16位的定時器
TH0=(65536-100)/256;
TL0=(65536-100)%256;
ET0=1; //開放定時器中斷0
TR0=1;
EA=1;
}
void delay(unsigned char delay_t)
{
unsigned char delayi, delayj;
for(delayi=delay_t;delayi>0;delayi--)
{
for(delayj=110;delayj>0;delayj--);
}
}
void KEY()
{
while(1)
{
if(KEY1==0)
{
delay(20);
if(KEY1==0)
{
go_to_near(0);//去近端左邊
break;
}
}
else if(KEY2==0)
{
delay(20);
if(KEY2==0)
{
go_to_near(1);//去近端右邊
break;
}
}
else if(KEY3==0)
{
delay(20);
if(KEY3==0)
{
go_to_mid(0);//去中端左邊
break;
}
}
else if(KEY4==0)
{
delay(20);
if(KEY4==0)
{
go_to_mid(1);//去中端右邊
break;
}
}
else if(KEY5==0)
{
delay(20);
if(KEY5==0)
{
go_to_distant(0);//去遠端左左
break;
}
}
else if(KEY6==0)
{
delay(20);
if(KEY6==0)
{
go_to_distant(1);//去遠端左右
break;
}
}
else if(KEY7==0)
{
delay(20);
if(KEY7==0)
{
go_to_distant(2);//去遠端右左
break;
}
}
else if(KEY8==0)
{
delay(20);
if(KEY8==0)
{
go_to_distant(3);//去遠端右右
break;
}
}
}
}
void Right_back()
{
IN3=0;
IN4=1;
}
void Right_go()
{
IN3=1;
IN4=0;
}
void Right_stop()
{
IN3=0;
IN4=0;
}
void Left_back()
{
IN1=0;
IN2=1;
}
void Left_go()
{
IN1=1;
IN2=0;
}
void Left_stop()
{
IN1=0;
IN2=0;
}
void Car_go()
{
Right_go();
Left_go();
}
void Car_stop()
{
Right_stop();
Left_stop();
}
void Car_back()
{
Right_back();
Left_back();
}
void Right_z()//右直角轉彎
{
Right_PWM=0;
Left_PWM=30;
while(1)
{
if(IRN5==1)
{
delay(10);
if(IRN5==1)
{
while(1)
{
if(IRN5==0&&IRN3==1)
{
Right_PWM=30;
break;
}
}
break;
}
}
}
}
void Left_z()
{
Right_PWM=30;
Left_PWM=0;
while(1)
{
if(IRN1==1)
{
delay(10);
if(IRN1==1)
{
while(1)
{
if(IRN1==0&&IRN3==1)
{
Left_PWM=30;
break;
}
}
break;
}
}
}
}
void turn_around()//小車掉頭
{
Car_stop();
delay(100);
Right_go();
Left_back();
for(i2=0;i2<3;i2++)
{
delay(5000);
}
while(1)
{
if(IRN1==1)
{
delay(10);
if(IRN1==1)
{
while(1)
{
if(IRN3==1)
{
delay(10);
if(IRN3==1)
{
break;
}
}
}
break;
}
}
}
Car_stop();
delay(100);
}
void go_to_near(char a1)//去近端病房
{
char i6=0;
while(1)
{
if((IRN1==0&&IRN5==0)&&(IRN3==1||IRN2==1||IRN4==1))
{
while(1)
{
if(a1==0)
{
if(KEY1==0)
{
delay(20);
if(KEY1==0)
{
Car_go();
delay(30);
break;
}
}
}
if(a1==1)
{
if(KEY2==0)
{
delay(20);
if(KEY2==0)
{
Car_go();
delay(30);
break;
}
}
}
}
break;
}
}
while(1)
{
turn();
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
while(1)
{
if(IRN1==0&&IRN5==0)
{
if(a1==1)
{
Right_z();
}
else
{
Left_z();
}
i6++;
break;
}
}
}
}
}
if(i6>=1)
{
i6=0;
break;
}
}
while(1)
{
turn();
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
delay(20);
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
delay(20);
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
Car_stop();
delay(100);
break;
}
}
}
}
turn_around();
Car_go();
while(1)
{
turn();
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
while(1)
{
if(IRN1==0&&IRN5==0)
{
if(a1==1)
{
Left_z();
}
else
{
Right_z();
}
i6++;
break;
}
}
}
}
}
if(i6==1)
{
i6=0;
break;
}
}
while(1)
{
turn();
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
delay(15);
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
delay(15);
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
Car_stop();
delay(100);
turn_around();
}
}
}
}
}
void go_to_mid(char a2)//去中端病房
{
char i7=0;
while(1)
{
if((IRN1==0&&IRN5==0)&&(IRN3==1||IRN2==1||IRN4==1))
{
while(1)
{
if(a2==0)
{
if(KEY3==0)
{
delay(20);
if(KEY3==0)
{
Car_go();
delay(30);
break;
}
}
}
if(a2==1)
{
if(KEY4==0)
{
delay(20);
if(KEY4==0)
{
Car_go();
delay(30);
break;
}
}
}
}
break;
}
}
//
while(1)
{
turn();
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
while(1)
{
if(IRN1==0&&IRN5==0)//等待通過十字路口
{
delay(20);
if(IRN1==0&&IRN5==0)
{
i7++;
break;
}
}
}
}
}
}
if(i7==1)
{
i7=0;
break;
}
}
///
while(1)
{
turn();
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
while(1)
{
if(IRN1==0&&IRN5==0)
{
if(a2==1)
{
Right_z();
}
else
{
Left_z();
}
i7++;
break;
}
}
}
}
}
if(i7==1)
{
i7=0;
break;
}
}
/
while(1)
{
turn();
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
delay(15);
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
delay(15);
if(IRN1==0&&IRN2==0&&IRN3==0&&IRN4==0&&IRN5==0)
{
Car_stop();
delay(1000);
break;
}
}
}
}
turn_around();//掉頭
Car_go();
while(1)
{
turn();
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
while(1)
{
if(IRN1==0&&IRN5==0)
{
if(a2==1)
{
Left_z();
}
else
{
Right_z();
}
i7++;
break;
}
}
}
}
}
if(i7==1)
{
i7=0;
break;
}
}
while(1)
{
turn();
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
delay(15);
if(IRN1==1&&IRN5==1)
{
while(1)
{
if(IRN1==0&&IRN5==0)//等待通過十字路口
?文章來源地址http://www.zghlxwxcb.cn/news/detail-493214.html
到了這里,關于智能送藥小車完整版【電賽、課設】開源(含源代碼)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!