欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于arduino的超聲波,紅外綜合避障源程序
[打印本頁]
作者:
Ange233
時間:
2020-7-16 18:21
標題:
基于arduino的超聲波,紅外綜合避障源程序
#define IN1 12//12口電機右正反轉,引腳可調下同
#define IN2 11//11口電機右調速
#define IN3 10//10口電機左正反轉
#define IN4 9//9口電機左調速
#define hN1 4//4口左1紅外
//#define hN2 7//7口左2紅外
#define hN3 8//8口右3紅外
#define Trig 2//超聲波Trig
#define Echo 3//超聲波Echo
#define Trig2 5//超聲波Trig2
#define Echo2 6//超聲波Echo2
int Time=0;//高電平時間
int X=0; //X是距離,單位厘米
int X2=0; //X是距離,單位厘米
long ran;//定義隨機變量(1到4)
int xleft=0;//紅外感應左
//int xzhong=0;//紅外感應中
int xreight=0;//紅外感應右左
void motor(int x,int y)//x=1是后退;x=2是前;x=3是左;x=4是右;y是轉速
{
switch(x){
case 1:
digitalWrite(IN1,1);
analogWrite(IN2,y);
digitalWrite(IN3,0);
analogWrite(IN4,y);
break;
case 2:
digitalWrite(IN1,0);
analogWrite(IN2,y);
digitalWrite(IN3,1);
analogWrite(IN4,y);
break;
case 3:
digitalWrite(IN1,0);
analogWrite(IN2,y);
digitalWrite(IN3,0);
analogWrite(IN4,y);
break;
case 4:
digitalWrite(IN1,1);
analogWrite(IN2,y);
digitalWrite(IN3,1);
analogWrite(IN4,y);
break;
}
Serial.println("x=");
Serial.println(x);
}
void loop() {
csb();
ydyd();
}
void setup() {
Serial.begin(9600);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(Trig,OUTPUT);//口是對超聲波輸出波形Trig
pinMode(Echo,INPUT);//口是超聲波反饋Echo
pinMode(hN1,INPUT);//hN1口是1號紅外檢測
//pinMode(hN2,INPUT);//hN2口是2號紅外檢測
pinMode(hN3,INPUT);//hN3口是3號紅外檢測
//randomSeed(analogRead(0));
//attachInterrupt(0,back,RISING);//中斷函數
}
/*void back()
{
motor(1,120);
}*/
void csb(){
digitalWrite(Trig,LOW);//3口,輸出低電平
delayMicroseconds(2);//等待2微秒
digitalWrite(Trig,HIGH);//3口,輸出高電平
delayMicroseconds(10);//等待10微秒,觸發信號
digitalWrite(Trig,LOW);//拉低電平
Time=pulseIn(Echo,HIGH);//檢測反饋的高電平時間
X=Time/58;//計算距離
digitalWrite(Trig2,LOW);//3口,輸出低電平
delayMicroseconds(2);//等待2微秒
digitalWrite(Trig2,HIGH);//3口,輸出高電平
delayMicroseconds(10);//等待10微秒,觸發信號
digitalWrite(Trig2,LOW);//拉低電平
Time=pulseIn(Echo2,HIGH);//檢測反饋的高電平時間
X2=Time/58;//計算距離
}
void ydyd(){
xleft=digitalRead(hN1);
//xzhong=digitalRead(hN2);
xreight=digitalRead(hN3);
if(X>=5)
{
motor(1,100);
delay(1000);
}
else
{
if((xleft==1)&&(xreight==1))
{
// ran=random (2,5);
motor(2,120);
}
if((xleft==0)&&(xreight==1))
{
motor(3,100);
}
if((xleft==1)&&(xreight==0))
{
motor(4,100);
}
if((xleft==0)&&(xreight==0))
{
digitalWrite(IN1,0);
analogWrite(IN2,0);
digitalWrite(IN3,0);
analogWrite(IN4,0);
}
if(X2>=5)
{
motor(2,100);
delay(1000);
}
}
Serial.println("X=");
Serial.println(X);
Serial.println("x1=");
Serial.println(xleft);
Serial.println("xr=");
Serial.println(xreight);
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1