【Arduino】基于Arduino的循迹小车电路连接与程序编写

这篇具有很好参考价值的文章主要介绍了【Arduino】基于Arduino的循迹小车电路连接与程序编写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Author:1071094493@qq.com

L298P工作原理:

【Arduino】基于Arduino的循迹小车电路连接与程序编写

​ 上图是本文中使用的L298P驱动,他的作用是将输入的3.3V或5V低压信号转换为高压信号。

【Arduino】基于Arduino的循迹小车电路连接与程序编写

​ 上图是L298P的原理图,从上图可以看出对于L298P芯片而言当In1(单片机输入)为高电平时输出Out1将会和Vs(电源)连通也为高电平,当为低电平时Out1将会和地相连。对于(In2-Out2)(In3-Out3)(In4-Out4)这三种组合也是同样的道理,通过电路结构我们发现,只有图中的EnA与EnB同时为高电平时,四个输出接口(Out1、Out2、Out3、Out4)才会出现有效值。利用这个特点我们可以通过拉低EnA和EnB的值来关闭输出实现刹车的目的。

L298P与其他元件的连接方法😆

与Arduino的连接

首先将L298P电机驱动板插到Arduno板上如下图所示:
【Arduino】基于Arduino的循迹小车电路连接与程序编写

安装效果如下图
【Arduino】基于Arduino的循迹小车电路连接与程序编写

与红外传感器的连接😸

​ 本次实验采用的红外传感器如下图所示,有三个引脚VCC、GND和Out引脚。其中VCC为电源正极引脚,GND为电源负极引脚,Out为输出脚。白色小灯泡发射红外线,黑色小灯泡负责接收红外信号。调节模块上面蓝色可调变阻器的阻值可以调节红外传感器的探测范围

​ 当模块可以收到红外信号时模块信号灯亮起,此时可以看到模块上有两个红灯会亮(一个为电源灯,另一个为信号灯)。同时Out端电压由高电平变为低电平。同样的道理由于黑色吸收红外光线能力强、白色反射能力强,当红外对准白色区域时红外线会被反射回来,Out由高到低,当对准黑线时白灯发射的红外信号会被黑线吸收,模块收不到红外信号Out端就会被拉高,输出高电平。

【Arduino】基于Arduino的循迹小车电路连接与程序编写

电机的连接

【Arduino】基于Arduino的循迹小车电路连接与程序编写

将电机驱动板与Arduino开发板按照第一步插在一起后按照上图连好电机与红外传感器即可。

程序编写😃

Aruino函数说明

函数名 函数写法 参数说明
PWM输出函数 analogWrite(number,value); number是十进制数字,对应Arduino引脚号。value为0-255之间的值。
开关数字量函数 digitalWrite(number,HIGH/LOW) number同上,第二个参数为HIGH时引脚输出高电平,为LOW时输出低。

初始宏定义

下方代码是对接口的宏定义,采用宏定义而非变量原因在于,宏定义在程序运行时不可改变。

//对接口进行重命名(此处需要根据自己的驱动引脚分布进行改变-本文以L298P为例)
#define ENA 10
#define ENB 11

//IN1与IN2在电路中通过反相芯片进行反相因此不必再定义In2和In4
//IN3与IN4反相
#define IN1 12
#define IN3 13

//将电机接口朝上
//L298P 从左至右分别为OUT 1 2 3 4

//定义红外传感器输入接口
//左侧红外使用8脚输入,右侧使用9脚
//压到白线为低电平,压到黑线输出高电平
#define L_SENSE 8
#define R_SENSE 9

红外传感器信号采集变量定义

//定义全局变量用于读取红外传感器的值
int L=0;
int R=0;

功能函数定义

void start_run()     
{
   //开始运行
  analogWrite(ENA,100);
  analogWrite(ENB,100);

  digitalWrite(IN1,HIGH);
  digitalWrite(IN3,HIGH);
}

void stop_run()
{
  //刹车
  analogWrite(ENA,0);
  analogWrite(ENB,0);

  digitalWrite(IN1,HIGH);
  digitalWrite(IN3,HIGH);
}

void direct_run()
{
  //直行
  analogWrite(ENA,100);
  analogWrite(ENB,100);

  digitalWrite(IN1,HIGH);
  digitalWrite(IN3,HIGH);
}

void left_run()
{
  //向左转
  analogWrite(ENA,100);
  analogWrite(ENB,50);

  digitalWrite(IN1,HIGH);
  digitalWrite(IN3,HIGH);
}

void right_run()
{
  //向右转
  analogWrite(ENA,50);
  analogWrite(ENB,100);

  digitalWrite(IN1,HIGH);
  digitalWrite(IN3,HIGH);
}

初始化函数

void setup() {
  //初始化接口模式输出
  pinMode(ENA,OUTPUT);
  pinMode(ENB,OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN3,OUTPUT);

  //定义接口模式红外输入
  pinMode(L_SENSE, INPUT);
  pinMode(L_SENSE, INPUT);

  //设置串口波特率为9600
  Serial.begin(9600);

  //上电即开始运行
  start_run();
}

主任务循环

void loop()
{
  //分别读取左右两个红外传感器的状态
  L=digitalRead(L_SENSE);
  R=digitalRead(R_SENSE);

  //当两侧同时为低电平时左右都不压线
  if(L==LOW&&R==LOW)
  {
    direct_run();
  }else if(L==LOW&&R==HIGH)//当右侧压线时向左转
  {
    right_run();
  }else if(L==HIGH&&R==LOW)//当左侧压线时向右转
  {
    left_run();
  }else
  {
    direct_run();//默认情况下直行  
  }   
}

完整代码如下💇

//对接口进行重命名
#define ENA 10
#define ENB 11

//IN1与IN2在电路中通过反相芯片进行反相
//IN3与IN4反相
#define IN1 12
#define IN3 13

//将电机接口朝上
//L298P 从左至右分别为OUT 1 2 3 4

//定义红外传感器输入接口
//左侧红外使用8脚输入,右侧使用9脚
//压到白线为低电平,压到黑线输出高电平
#define L_SENSE 8
#define R_SENSE 9

//定义全局变量用于读取红外传感器的值
int L=0;
int R=0;

void setup() {
  //初始化接口模式输出
  pinMode(ENA,OUTPUT);
  pinMode(ENB,OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN3,OUTPUT);

  //定义接口模式红外输入
  pinMode(L_SENSE, INPUT);
  pinMode(L_SENSE, INPUT);

  //设置串口波特率为9600
  Serial.begin(9600);

  start_run();
}

无法循迹、出现错误怎么调🍎

1:检查电池电量是否充足

2:代码没有问题,经过检验可以进行循迹,不必随便修改。

3:采用两个红外传感器就行,传感器之间距离不要太远,也不要太靠近。两传感器分置黑线两侧、距离黑线2-3CM为佳。

4:红外传感器不要和驱动轮在同一条直线上,否则小车来不及反应,容易跑偏。

5:上电之后默认为直行,检查两个电机是否均为向前转动,如果不是调换下电机两个接口使其正向转动。

6:此处定义红外信号采集脚为8、9脚,如果无法循迹调换左右两个红外传感器输入脚试试,比如左侧传感器插入到9脚中。文章来源地址https://www.toymoban.com/news/detail-406339.html

到了这里,关于【Arduino】基于Arduino的循迹小车电路连接与程序编写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARDUINO NANO 的 PID 循迹小车

    ---------------------------------------------------------------------------------------------------------------------------------  作品展示:     前言:         大多数机电一体化或机器人爱好者可能会通过制作一个 巡线机器人 来开始他们的机器人建造之旅。因为巡线机器人非常容易制作,而且很吸

    2024年02月03日
    浏览(37)
  • 保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)

    开发要求如下: 引言:为什么会用到 米思齐 这个青少年编程软件是有两个原因: 接到了某所小学的研发项目需求,研发成果给小学生参加无人车循迹比赛。 实验室的师弟师妹并不是所有都有编程基础,因此米思齐可以作为简单的编程引入课程。 首先我认为 TCRT5000红外循迹

    2023年04月08日
    浏览(44)
  • Arduino毕业设计——基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码)——自动驾驶小车控制系统

    大家好,今天给大家介绍基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 近年来,各

    2024年02月06日
    浏览(45)
  • 基于STM32的智能循迹避障小车实验(循迹部分)

    接上一部分基于STM32的智能循迹避障小车实验(小车运动部分) 上一篇我们成功让小车动起来了,现在我们试着让小车听话地运动。 这一部分主要利用了循迹模块两个 图 1循迹模块 就是这个东西: 一共三个引脚 VCC :电源线,连接单片机的 3.3V-5V GND :地线,连接单片机的接

    2024年02月11日
    浏览(47)
  • 基于FPGA的蓝牙循迹小车项目

    超声波测距简介       超声波是由机械振动产生的 , 可在不同介质中以不同的速度传播 , 具有定向性好、能量集中、传输过程中衰减较小、反射能力较强等优点。超声波传感器可广泛应用于非接触式检测方法 , 它不受光线、被测物颜色等影响 , 对恶劣的工作环境具有一定的

    2024年02月02日
    浏览(34)
  • 基于STM32的智能循迹避障小车实验(小车运动部分)

    写在前面 这个实验是关于智能小车的实验,现在的想法就是先做出一个循迹和避障功能,后续可能会再添加一些其他的模块。 我在做这个实验之前基本了解了F1系列开发板的大部分模块,如果没有学习之前的模块,建议先学习下开发板的基本模块。 实验所需的硬件 本来是想

    2024年02月06日
    浏览(56)
  • 基于单片机智能循迹小车仿真设计

    ** 单片机设计介绍,基于单片机智能循迹小车仿真设计   基于单片机的智能循迹小车是一种通过传感器检测地面情况,并根据设定的规则进行动作控制的机器人。它使用单片机作为主控制器,通过连接放置在车身底部的红外传感器和电机等组件来实现循迹和运动控制。 下

    2024年02月04日
    浏览(45)
  • 基于stm32的智能小车(远程控制、避障、循迹)

    学完stm32,总是想做点东西“大显身手”一下,智能小车就成了首选项目,其核心只是就是PWM输出,I/O口引脚电平判断。 制作智能小车的硬件名单: 由于我们做的控制功能可以使用2.4G控制,也可以使用蓝牙进行控制, 两种传输方式所需购买的模块不同,已在硬件名单中加以

    2024年02月03日
    浏览(48)
  • 基于STM32芯片的四驱循迹小车

    循迹小车包括三个基本模块: 1.宏定义模块 2.电机驱动模块 3.红外循迹模块 4.PWM调速模块 我将代码部分分为4个模块进行模块化编程:interface(各个引脚口的宏定义,方便记忆)、motor(电机驱动模块)、timer(定时器模块)、track(红外循迹模块) .h 各个引脚的宏定义以及实现小车前进

    2023年04月27日
    浏览(79)
  • 基于51单片机的智能小车(循迹、避障、蓝牙控制)

    文章目录 前言 一、功能 二、主要模块 1.L298N模块 2.循迹模块 3.红外避障模块 4.超声波避障模块 5..蓝牙模块 代码 三、其余模块 四、总结   本项目可实现小车红外循迹,L298N电机驱动,红外避障,超声波避障,蓝牙控制等功能的切换。   红外循迹,L298N电机驱动,PWM电机调速

    2024年02月04日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包