首页 > 其他分享 >基于Arduino的超声波和舵机模块集成使用

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

时间:2024-10-09 23:17:35浏览次数:10  
标签:舵机 超声波 Arduino 模块 Serial trigPin

在这里插入图片描述

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

  • 超声波模块: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。

标签:舵机,超声波,Arduino,模块,Serial,trigPin
From: https://blog.csdn.net/weixin_42255385/article/details/142798582

相关文章

  • Arduino UNO R3自学笔记23 之 Arduino如何使用4511控制数码管?
    注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。前言:因为7段数码管控制需要用到7个IO,这会严重占用Arduino的IO口,因此我们采用现有IC来节省Arduino的IO口。1.CD4511介绍        CD4511是一款用于驱动共阴极LED(数码管)显示器的BCD码-七段码译码器。它具......
  • Arduino物联网开发笔记01
    首先将开发板连接电脑然后下载Arduinoide(我的是2.0版的)这是官网的下载链接:https://www.arduino.cc/en/software接着左上角项目新建文件夹编写第一个程序`voidsetup(){Serial.begin(115200);//设置串口波特率}voidloop(){Serial.printf("Helloworld\n");delay(500)......
  • Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集
    ArduinoNano和DHT11实现LabVIEW温湿度采集ArduinoIDE安装如下库文件DHTsensorlibrarybyAdafruitDHT11温湿度传感器Data引脚与ArduinoNano开发板的D2引脚连接代码#include<DHT.h>#defineTemperature_COMMAND0x10//采集命令字#defineHumidity......
  • 3.资源《Arduino UNO R3 proteus 电机测速仿真工程文件(含驱动代码)》说明。
     资源链接: ArduinoUNOR3proteus电机测速仿真工程文件(含驱动代码)1.文件明细:2.文件内容说明包含:proteus工程、原理图、仿真程序。3.内容展示4.简述该文件为Proteus工程。用于电机测速验证。5.演示视频proteus仿真电机测速......
  • 【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM使用joystick双轴摇杆模块控制LED灯
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM使用DHT11模块测量温湿度
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM使用模拟量霍尔检测磁场并设定阈值控
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM使用霍尔传感器测量磁场控制LED灯
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 使用Arduino Uno控制DHT22温湿度传感器模块的设计方案
       以下是使用ArduinoUno控制DHT22温湿度传感器模块的设计方案:一、硬件准备:1. ArduinoUno开发板一块2. DHT22温湿度传感器模块一个3. 面包板一块4. 杜邦线若干5.5V直流电源1个二、硬件连接:1.将ArduinoUno的5V电源引脚和GND引脚,分别连接到5V直流电源正极......
  • 开箱我用过的强Z大的舵机—DYNAMIXEL-Y
    原文链接:UnboxingthemostPOWERFULservoI'veeverused-TheDYNAMIXEL-Y(youtube.com) CheckoutthisamazingvideofeaturingDYNAMIXEL-YbyMr.Volt!看看Volt先生发布的这段令人惊叹的DYNAMIXEL-Y视频吧! Thesepowerfulyetversatileactuatorscanbeused......