int LA=14;
int LB=15;
int RA=16;
int RB=17;
int EN1=3;
int EN2=5;
int input=9;
int output=8;
void setup()
{
pinMode(LA,OUTPUT);
pinMode(LB,OUTPUT);
pinMode(RA,OUTPUT);
pinMode(RB,OUTPUT);
pinMode(EN1,OUTPUT);
pinMode(EN2,OUTPUT);
pinMode(input,INPUT);
pinMode(output,OUTPUT);
}
void loop()
{
if (feye()>15 && feye()<=25) pause(0.2);
if (feye()<=15) back(0.5);
if (feye()>25) forward(0.05);
}
void forward(float a)
{
analogWrite(EN1,150);
digitalWrite(LA,HIGH);
digitalWrite(LB,LOW);
analogWrite(EN2,164);
digitalWrite(RA,HIGH);
digitalWrite(RB,LOW);
delay(a*1000);
}
void back(float b)
{
analogWrite(EN1,150);
digitalWrite(LA,LOW);
digitalWrite(LB,HIGH);
analogWrite(EN2,188);
digitalWrite(RA,LOW);
digitalWrite(RB,HIGH);
delay(b*1000);
}
void pause(float c)
{
analogWrite(EN1,150);
digitalWrite(LA,LOW);
digitalWrite(LB,LOW);
analogWrite(EN2,188);
digitalWrite(RA,LOW);
digitalWrite(RB,LOW);
delay(c*1000);
}
float feye(){
digitalWrite(output,LOW);
delayMicroseconds(2);
digitalWrite(output,HIGH);
delayMicroseconds(10);
digitalWrite(output,LOW);
float fdis=pulseIn(input,HIGH);
fdis=fdis/58;
return(fdis);
}
int LB=15;
int RA=16;
int RB=17;
int EN1=3;
int EN2=5;
int input=9;
int output=8;
void setup()
{
pinMode(LA,OUTPUT);
pinMode(LB,OUTPUT);
pinMode(RA,OUTPUT);
pinMode(RB,OUTPUT);
pinMode(EN1,OUTPUT);
pinMode(EN2,OUTPUT);
pinMode(input,INPUT);
pinMode(output,OUTPUT);
}
void loop()
{
if (feye()>15 && feye()<=25) pause(0.2);
if (feye()<=15) back(0.5);
if (feye()>25) forward(0.05);
}
void forward(float a)
{
analogWrite(EN1,150);
digitalWrite(LA,HIGH);
digitalWrite(LB,LOW);
analogWrite(EN2,164);
digitalWrite(RA,HIGH);
digitalWrite(RB,LOW);
delay(a*1000);
}
void back(float b)
{
analogWrite(EN1,150);
digitalWrite(LA,LOW);
digitalWrite(LB,HIGH);
analogWrite(EN2,188);
digitalWrite(RA,LOW);
digitalWrite(RB,HIGH);
delay(b*1000);
}
void pause(float c)
{
analogWrite(EN1,150);
digitalWrite(LA,LOW);
digitalWrite(LB,LOW);
analogWrite(EN2,188);
digitalWrite(RA,LOW);
digitalWrite(RB,LOW);
delay(c*1000);
}
float feye(){
digitalWrite(output,LOW);
delayMicroseconds(2);
digitalWrite(output,HIGH);
delayMicroseconds(10);
digitalWrite(output,LOW);
float fdis=pulseIn(input,HIGH);
fdis=fdis/58;
return(fdis);
}
本文介绍了一个使用Arduino实现的简易机器人项目,通过超声波传感器测量距离并据此控制机器人的前进、后退及暂停。文章详细展示了如何设置引脚、定义电机控制函数,并通过条件判断实现基本的避障功能。
1105

被折叠的 条评论
为什么被折叠?



