标题:
基于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://www.51hei.com/bbs/)
Powered by Discuz! X3.1