找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lxf 于 2020-8-17 13:29 编辑

第37课 超声波小车


目标

超声波小车的使用

实验材料

Arduino UNO开发板
配套USB数据线
L298N电机驱动板
9V充电锂电池和9V电池扣子
装有两个直流电机马达小车
HC-SR04超声波传感器模块
配套杜邦线若干
Arduino IDE软件

微信图片_20200710164847.png

内容

前面没有障碍物时,小车前进,有障碍物时小车停止前进。

接线图

图片1.png

备注: L298N电机驱动板的ENA接Arduino UNO4号引脚,ENB接Arduino UNO12号引脚。

接线方式

Arduino UNO     <------>  L298N电机驱动板
             5V          <------>              +5V
           GND        <------>              GND
           ENA         <------>                 4
           IN1          <------>                 5
           IN2          <------>                 6
           ENB         <------>                12
           IN3          <------>                10      
           IN4          <------>                11
L298N电机驱动板   <------>    直流减速电机A
             OUT1        <------>        一端接口
            OUT2         <------>      另一端接口
L298N电机驱动板   <------>    直流减速电机B
              OUT3       <------>        一端接口
              OUT4       <------>      另一端接口
9V充电锂电池        <------>    L298N电机驱动板
            正极          <------>            +12V
            负极          <------>             GND
Arduino UNO     <------>  HC-SR04超声波传感器模块
               5V        <------>                VCC
            GND       <------>               GND
                 7        <------>                Trig
                 3        <------>               Echo

程序实现代码

  1. float checkdistance_7_3() {  //定义一个浮点型函数checkdistance_7_3()
  2.   digitalWrite(7, LOW);      //低高低电平发一个短时间脉冲去Trigpin  
  3.   delayMicroseconds(2);
  4.   digitalWrite(7, HIGH);
  5.   delayMicroseconds(10);
  6.   digitalWrite(7, LOW);
  7.   float distance = pulseIn(3, HIGH) / 58.00;   //将回波时间换算成distance
  8.   delay(10);
  9.   return distance;     //向调用函数返回distance
  10. }
  11. void setup(){
  12.   pinMode(7, OUTPUT);   //定义7号管脚为输出
  13.   pinMode(3, INPUT);    //定义3号管脚为输入
  14.   pinMode(4, OUTPUT);  //定义4号管脚为输出
  15.   pinMode(12, OUTPUT);  //定义12号管脚为输出
  16.   pinMode(5, OUTPUT);   //定义5号管脚为输出
  17.   pinMode(6, OUTPUT);   //定义6号管脚为输出
  18.   pinMode(10, OUTPUT);   //定义10号管脚为输出
  19.   pinMode(11, OUTPUT);   //定义11号管脚为输出
  20. }
  21. void loop(){
  22.   if (checkdistance_7_3() < 20) {  //如果前面有障碍物,小车停止
  23.     digitalWrite(4,LOW);
  24.     digitalWrite(12,LOW);
  25.   } else {      //否则小车前进
  26.     digitalWrite(4,HIGH);
  27.     digitalWrite(12,HIGH);
  28.     digitalWrite(5,HIGH);
  29.     digitalWrite(6,LOW);
  30.     digitalWrite(10,HIGH);
  31.     digitalWrite(11,LOW);
  32.   }
  33. }
复制代码
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册