Arduino-循迹小车-保姆级教程

一,所需元件

arduino nano一个(Uno太大,所以选择了体积较小的Nano)
L298N电机驱动模块一个
直流减速电机两个
万向轮一个
亚克力板
轮胎两个
TCRT5000寻迹传感器四个
速成可直接跳到三,连线部分

二,元器件的详细介绍

(1)arduino nano
下面看一张Nano的图,比较生涩难懂,没关系,我也没搞懂。在本项目中只需要大家知道GDN(Ground)是接地的,3v3和5v是输出电压的(给Nano板通电及能用)。图中曲线的引脚(D3,D5,D6,D9,D10,D11)可进行PWM输出。(通俗的讲:这几个引脚可以输出低电压到高电压中间的任何一个值,而其他的引脚要么输出高电压,要么输出低电压)
这里插入描述
(2)L298N电机驱动模块
具体长这样(图来自tb)在这里插入图片描述注意红色圈出的地方:写有ENA,IN1,IN2,IN3,IN4,ENB。ENA相当于EN1,EN2的总开关,ENB对应IN3,IN4的总开关。例:让ENA为高电平,IN1,IN2脚位给什么信号就是什么信号,若ENA为低电平,IN1,IN2无论给什么信号这两个脚位都是低电平。(注:仅是可以这样理解,ENA和ENB有它专门的名字叫使能
(3)直流减速电机,万向轮,亚克力板
在这里插入图片描述
我用的是这样的(图来自tb),当然也还有很多直流电机供大家选择,图示应该是最便宜的了。
(4)TCRT5000寻迹传感器在这里插入图片描述
注意到图中有四个引脚,该项目中要用到A0,VCC,GND,三个引脚,VCC和GND为正负极,用来供电,A0来输出检测到的信息。(D0没有用到,也不用接任何线)。

三,连线

TCRT5000寻迹传感器放在小车的前端,从左到右依次编号为Lb,La,Ra,Rb。Lb,La,Ra,Rb的vcc连arduino板的5V,GND连arduino板的GND,其A0脚位分别连arduino的A0,A1,A2,A3脚位。这点在程序中可以清晰的看到。

L298N电机驱动模块的连线也在程序中有所表达,例,ENA=12代表ENA连到arduino的12脚位。OUT1,与OUT2分别连电机的上下端。(这里连的顺序不一样程序也会写的不同)。这里可以自行尝试。

四,程序代码

上传程序之前首先在工具这里把将开发板选择为 Arduino Nano,下面的处理器选项也需要相应改动,一般情况是选择ATmega328P(Old Bootloader),如果是新版的Nano开发板就选择另外两个试试。在这里插入图片描述

int ENA=12,IN1=9,IN2=6,IN3=5,IN4=3,ENB=2;
int La,Ra,Lb,Rb; 
void setup() {
    //Serial.begin(9600);
    pinMode(2,OUTPUT);
    pinMode(3,OUTPUT);
    pinMode(5,OUTPUT);
    pinMode(6,OUTPUT);
    pinMode(9,OUTPUT);
    pinMode(12,OUTPUT);
}

void loop() {
  digitalWrite(ENA,HIGH);
  digitalWrite(ENB,HIGH);
  La=analogRead(A0);
  Ra=analogRead(A1);
  Rb=analogRead(A2);
  Lb=analogRead(A3);
  /*Serial.print(Lb);
  Serial.print(";");
  Serial.print(La);
  Serial.print(";");
  Serial.print(Ra);
  Serial.print(";");
  Serial.println(Rb);
  delay(300);*/
  if(La<=300 && Ra<=320)//均未检测到黑线
         straight();
  if(La>=Ra && Lb<=300 && Rb<=300)//左侧检测到黑线,右侧没有,所以要左转
         straightturnleft();
  if(La<=Ra && Lb<=300 && Rb<=300)//右侧检测到黑线,左侧没有,所以右转
         straightturnright();
  if(La>=300 && Ra>=300)//均检测到黑线
         straight();
  if(Rb>=300)//大右转
         turnright();
  if(Lb>=300)//大左转
         turnleft();        
}
void straight()
{
        analogWrite(IN1,0);//左正
        analogWrite(IN2,60);
        analogWrite(IN3,60);//右正
        analogWrite(IN4,0);
}

void straightturnleft()
{
        analogWrite(IN1,0);//左正
        analogWrite(IN2,60);
        analogWrite(IN3,100);//右正
        analogWrite(IN4,0);
}
void straightturnright()
{
        analogWrite(IN1,0);//左正
        analogWrite(IN2,100);
        analogWrite(IN3,60);//右正
        analogWrite(IN4,0);
}
void turnright()
{
        analogWrite(IN1,0);//左正
        analogWrite(IN2,150);
        analogWrite(IN3,60);//右正
        analogWrite(IN4,0);
}
void turnleft()
{
        analogWrite(IN1,0);//左正
        analogWrite(IN2,60);
        analogWrite(IN3,150);//右正
        analogWrite(IN4,0);
}

五,一些说明

该代码块中数字300和320是我测得的一个相对可以准确区分是否检测到黑线的值,不一定非常准确,感兴趣的同学也可以使用串口监视器自己测。
将代码中注释掉的那几行重新启用就可进行串口监视了,导入程序后点击右上角的小放大镜查看串口。(Serial打头的那几行)

  if(La<=300 && Ra<=320)//均未检测到黑线
         straight();
  if(La>=Ra && Lb<=300 && Rb<=300)//左侧检测到黑线,右侧没有,所以要左转
         straightturnleft();
  if(La<=Ra && Lb<=300 && Rb<=300)//右侧检测到黑线,左侧没有,所以右转
         straightturnright();
  if(La>=300 && Ra>=300)//均检测到黑线
         straight();
  if(Rb>=300)//大右转
         turnright();
  if(Lb>=300)//大左转
         turnleft();       

这是用arduino做的第一个项目,不出意外的话,也应该是最后一个。最近在学python,也希望各位不忘初心,继续加油。忙于学业,更新随缘。Arduino用来参加比赛是个不错的选择。

  • 95
    点赞
  • 804
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
根据引用\[1\],这个Arduino四轮循迹小车的组成部分包括:Arduino Nano、L298N电机驱动模块、直流减速电机、万向轮、亚克力和TCRT5000寻迹传感器。其中,Arduino Nano是控制主,L298N电机驱动模块用于控制电机的转动,直流减速电机用于驱动车轮,万向轮用于增加车辆的灵活性,亚克力用于搭建车身结构,TCRT5000寻迹传感器用于检测车辆的行驶路径。 根据引用\[2\],L298N电机驱动模块的连线方式可以根据程序中的指示进行连接。例如,ENA=12表示ENA引脚连接Arduino的12号引脚,OUT1和OUT2分别连接到电机的上下端。具体的连线顺序可能会因为程序的不同而有所差异。 根据引用\[3\],TCRT5000寻迹传感器应该放置在小车的前端,从左到右依次编号为Lb, La, Ra, Rb。这些传感器的VCC引脚连接Arduino的5V引脚,GND引脚连接Arduino的GND引脚,而A0、A1、A2、A3引脚分别连接Arduino的A0、A1、A2、A3引脚。 综上所述,这个Arduino四轮循迹小车的组成部分和连线方式可以根据引用中提供的信息进行搭建和连接。 #### 引用[.reference_title] - *1* *2* *3* [Arduino-循迹小车-保姆教程](https://blog.csdn.net/qq_45882032/article/details/109125648)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JiYH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值