|
最近鄙人學(xué)單片機(jī)一直想嘗試做東西實(shí)踐一下,于是就決定做一個(gè)常見(jiàn)的智能小車,用兩個(gè)紅外對(duì)管模塊和超聲波傳感器簡(jiǎn)單做了避障的功能,但是就出現(xiàn)了問(wèn)題,程序修改了幾次,也找同學(xué)一起研究了一下,還是想不到為啥,還望各位大佬指點(diǎn)迷津~
1.我用的紅外對(duì)管模塊,感覺(jué)這個(gè)模塊不怎么好,電壓5V電位調(diào)到最大,靈敏度只有12cm左右,大佬們都用過(guò)哪些更好的類似模塊?
2.運(yùn)行程序之后,小車遇到障礙會(huì)停下轉(zhuǎn)彎,但是會(huì)有這種情況,前方明明沒(méi)有障礙,小車前進(jìn)(0~兩三米)就會(huì)自動(dòng)轉(zhuǎn)彎,這個(gè)問(wèn)題讓我很糾結(jié)
IMG_7227.JPG (2.1 MB, 下載次數(shù): 40)
下載附件
2018-10-23 21:22 上傳
單片機(jī)源碼:
- #include<reg52.h>
- #define uc unsigned char
- #define ui unsigned int
- sbit IN1=P2^1; //L298N
- sbit IN2=P2^2;
- sbit IN3=P2^3;
- sbit IN4=P2^4;
- sbit ENA=P2^0;
- sbit ENB=P2^5;
- ui count1=50,count2=50,time;
- ui timer,date;
- sbit trig=P3^7; //超聲波
- sbit echo=P3^6;
- sbit leftled=P3^5;
- sbit rightled=P3^4;
- void delay(ui i) //延時(shí)函數(shù)
- {
- while(i--);
- }
- void init0() //定時(shí)器0初始化,用于輸出PWM
- {
- TMOD = 0x01;
- TH0 = (65536 - 10)/256;
- TL0 = (65536 - 10)%256;
- TR0 = 1;
- EA = 1;
- ET0 = 1;
-
- }
- void init1() //定時(shí)器1初始化,用于超聲波測(cè)距
- {
- TMOD=0X01;
- TH1=0x00;
- TL1=0x00;
- }
- void super_start() //超聲波發(fā)送信號(hào)
- {
- trig=1;
- delay(10);
- trig=0;
- }
- void super_count() //計(jì)算距離
- {
- timer=TH1*256+TL1;
- TH1=0x00;
- TL1=0x00;
- date=(timer*1.7)/100;
-
- }
- void cargo() //小車前進(jìn)
- {
復(fù)制代碼
|
|