基于Arduino的超声波和舵机模块集成使用

在这里插入图片描述

一.超声波模块和舵机模块集成使用

  • 超声波模块:HC-SR04
  • 舵机模块:SG90
  • 目的:通过Arduino UNO核心板控制舵机旋转到不同位置,同时获取不同位置超声波模块和障碍物间的距离,配合控制算法,进行基于超声波智能避障小车的制作。

二.源代码

#include <Servo.h>
#define trigPin 2
#define echoPin 3
#define pwmPin 9

Servo myServo;

void setup() {
  // put your setup code here, to run once:
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
  Serial.begin(9600);

  myServo.attach(pwmPin);
}

void loop() {
  // put your main code here, to run repeatedly:
  float value1,value2,value3;
  //舵机旋转到正前方
  servoRun(90);
  Serial.print("value1: ");
  value1 = getDistance();
  
  //舵机旋转到右前方45°处
  servoRun(45);
  Serial.print("value2: ");
  value2 = getDistance();
  
  //舵机旋转到左前方135°处
  servoRun(135);
  Serial.print("value3: ");
  value3 = getDistance();
}

float getDistance()
{
  //10us高电平脉冲触发超声波模块
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  float valueCM = 0;
  valueCM = float(pulseIn(echoPin,HIGH)*17/1000);

  Serial.print(valueCM);
  Serial.println("cm");
  delay(100);

  return valueCM;
}

//舵机旋转到不同的角度
void servoRun(int angle)
{
  myServo.write(angle);
  delay(500);//等待超声波模块稳定
}

说明:

  • 舵机模块使用参考本专栏文章《基于Arduino的SG90舵机驱动》
  • 超声波模块使用参考本专栏文章《基于Arduino的超声波测距模块HC-SR04》

三. 智能避障小车相关原理:

1)正常情况下,智能小车会沿直线行驶,当遇到前方有障碍物且小于一定距离时(设定距离可根据具体情况调整),智能小车立即停止运行。
2)舵机转动超声波模块探测右方45°和左方135°障碍物距离并返回给Arduino控制板。
3)Arduino控制板根据前方、右方、左方障碍物的距离,自动判断一条可以安全前进的路径,避开障碍物后,再继续沿直线行驶。

四. 运行效果

舵机分别旋转到正前方(90°),右前方(45°),左前方(135°)三个位置,并分别获取超声波模块和障碍物间的距离。使用Arduino IDE的串口监视器工具,能够实时显示获得的距离值,单位为cm。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT永勇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值