找回密码
 立即注册

QQ登录

只需一步,快速开始

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

第38课 巡线小车


目标

结合L298N电机驱动板、灰度传感器与带电机小车,完成小车巡线任务。

实验材料

Arduino UNO开发板
配套USB数据线
配套杜邦线若干
带直流电机小车
9V充电锂电池
9V电池扣子
L298N电机驱动板
灰度传感器*2
Arduino IDE软件

微信图片_20200710170730.png
硬件对照图

内容

完成小车走圆形,两个灰度传感器没有识别到黑线时,小车前进,当小车往左偏时,右边灰度传感器识别到黑线,小车右转修正,当小车往右偏时,左边灰度传感器识别到黑线,小车左转修正。

接线图

图片2.png
(Arduino UNO开发板与超声波传感器模块、直流电机、电池、16路pwm舵机驱动板、灰度传感器的连接方式)

备注: L298N电机驱动板的ENA接Arduino UNO的4号引脚,ENB接Arduino UNO的12号引脚。

接线方式

Arduino UNO    <------>  L298N电机驱动板
             5V         <------>              5V
          GND        <------>             GND
          ENA         <------>               4
           IN1         <------>               5
           IN2         <------>               6
          ENB         <------>              12
           IN3         <------>              10      
            IN4        <------>              11
Arduino UNO    <------>    灰度传感器模块1
             5V         <------>              VCC
          GND         <------>             GND
             A2         <------>              OUT
Arduino UNO    <------>    灰度传感器模块2
             5V          <------>              VCC
          GND         <------>             GND
             A1         <------>           OUT
L298N电机驱动板   <------>    直流减速电机1
         OUT1            <------>        一端接口
          OUT2           <------>      另一端接口
L298N电机驱动板   <------>    直流减速电机2
         OUT3            <------>        一端接口
        OUT4             <------>      另一端接口
L298N电机驱动板   <------>   9V充电锂电池
       +12V               <------>          正极  
       GND                <------>          负极

程序实现代码

  1. void setup(){
  2.   pinMode(4, OUTPUT);
  3.   pinMode(12, OUTPUT);
  4. }
  5. void loop(){
  6.   if (analogRead(A1) < 500 && analogRead(A2) < 500) {
  7.     digitalWrite(4,HIGH);
  8.     digitalWrite(12,HIGH);
  9.     analogWrite(5,100);
  10.     analogWrite(6,0);
  11.     analogWrite(10,0);
  12.     analogWrite(11,100);
  13.   } else if (analogRead(A1) > 500 && analogRead(A2) < 500) {
  14.     digitalWrite(4,HIGH);
  15.     digitalWrite(12,HIGH);
  16.     analogWrite(5,100);
  17.     analogWrite(6,0);
  18.     analogWrite(10,0);
  19.     analogWrite(11,0);
  20.   } else if (analogRead(A1) < 500 && analogRead(A2) > 500) {
  21.     digitalWrite(4,HIGH);
  22.     digitalWrite(12,HIGH);
  23.     analogWrite(5,0);
  24.     analogWrite(6,0);
  25.     analogWrite(10,100);
  26.     analogWrite(11,0);
  27.   }
  28. }
复制代码
分享至 : QQ空间
收藏

0 个回复

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