arduino智能超声波避障小车

1.元器件
小车底板,L298N电机驱动模块,arduino板子,两个电机,超声波模块,杜邦线若干(公对公,公对母,母对母都要用到),胶带(用于固定元器件,当然胶水也可以,有螺丝固定最好),5V电池及电池盒(用于板子供电),12V电池及电池盒,用于L298N和电机供电,电烙铁及焊锡丝;
2.安装步骤
(1)硬件连接
用L298N模块的out1,2连接一个电机,out2,3连接剩下一个,然后用12V电源给L298N模块供电,用5V给板子供电,当然用L298N的5V给板子供电也可以,但建议分开供电,然后就是L298N和板子连接,以下是我的连接方式:
ENA:2;ENB:8;
IN3:5;IN1:9;
IN4:6;IN2:10;
每一列控制一个电机;注意连接时要连接在PWM一侧,并且IN1~4连接的端口前要有 ~ 标志,例如 ~ 5,如果没连接到这个上面,电机就不能进行正传及小车后退操作;

然后就是超声波模块连接,将其trag连接到A0端,其为发射端,Echo连接到A1端,为接收端,VCC,GND,连接电源和接地;
以上就是硬件的连接;
(2)代码实现
int i;
int s;

void setup() {
  for(i=2;i<=10;i++){
    pinMode(i,INPUT);
  }
  pinMode(A1,INPUT);
  pinMode(A0,OUTPUT);
}

void run(int time){	//前进函数
  digitalWrite(8,HIGH);//ENBzuo
  digitalWrite(9,HIGH);//IN1
  digitalWrite(10,LOW);//IN2
  analogWrite(9,80);
  analogWrite(10,0);

  digitalWrite(2,HIGH);//ENAyou
  digitalWrite(5,HIGH);//IN3
  digitalWrite(6,LOW);//IN4
  analogWrite(5,80);
  analogWrite(6,0);
  
  delay(time*100);
}

void back(int time){ //后退
  digitalWrite(8,HIGH);//ENBzuo
  digitalWrite(10,HIGH);//IN1
  digitalWrite(9,LOW);//IN2
  analogWrite(10,80);
  analogWrite(9,0);
  
  
   digitalWrite(2,HIGH);//ENAyou
  digitalWrite(6,HIGH);//IN3
  digitalWrite(5,LOW);//IN4
  analogWrite(6,80);
  analogWrite(5,0);

  delay(time*100);
}
void right(int time){	//右转
  digitalWrite(8,HIGH);//ENBzuo
  digitalWrite(9,HIGH);//IN1
  digitalWrite(10,LOW);//IN2
  analogWrite(9,80);
  analogWrite(10,0);

  digitalWrite(2,LOW);//ENA
  digitalWrite(5,LOW);//IN3
  digitalWrite(6,LOW);//IN4
  analogWrite(5,0);
  analogWrite(6,0);
 
  delay(time*100);
}

void left(int time){	//左转

  digitalWrite(8,LOW);//ENBzuo
  digitalWrite(9,LOW);//IN1
  digitalWrite(10,LOW);//IN2
  analogWrite(9,0);
  analogWrite(10,0);
  
  digitalWrite(2,HIGH);//ENAyou
  digitalWrite(5,HIGH);//IN3
  digitalWrite(6,LOW);//IN4
  analogWrite(5,80);
  analogWrite(6,0);

  delay(time*100);
}

int distance(){		//测距函数
  digitalWrite(A0,LOW);
  delayMicroseconds(2);
  digitalWrite(A0,HIGH);
  delayMicroseconds(15);
  digitalWrite(A0,LOW);
  
  int m = pulseIn(A1,HIGH);
  s=m/58;

  return s;
}

void loop() {	//主循环
  s=distance();
  if(s>=50){
    run(15);
  }
  else{
    back(10);
    right(5);
  }
  //left(15);
}
咋说里,这个代码其实差东西,但条件有限,没有舵机,所有只能判断前方是否有障碍物,因此这里的代码左转是没用的,哈哈,望各位见谅见谅,如果有机会的话,啥时候回补充一下舵机连接和代码。

看到这里,能不能给小友点个赞里。
  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是智造哎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值