首页 > 编程知识 正文

arduino红外避障小车,arduino小车前进代码

时间:2023-05-03 16:43:25 阅读:175793 作者:4269

一、所需元件有一个arduino Nano (因为Uno太大,所以选择了体积小的nano ) ) ) ) ) )。

一个L298N电机驱动模块

2个直流减速电机

只有一个脚轮

丙烯板

两个轮胎

4个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表示与arduino的ENA连接的第12脚位。 在OUT1、OUT2上分别连接电机的上下端。 (在这里,即使连的顺序不同,也会写程序。 这里你可以自己试试。

四、程序代码在上传程序前首先在工具这里选择开发板为Arduino Nano。 下面的处理器选项也需要相应地进行更改。 一般选择atmega328p(oldbootloader )。 如果是新版的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,输出; }void loop () digitalwrite ) ) ENA,HIGH ); 数字写入(enb,HIGH ); la=分析读(A0 ); ra=模拟读(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; 延迟(300; (/if ) la=300ra=320 ) /都是黑线straight ); if(la=ralb=300Rb=300(/左侧检测到黑线,右侧没有,因此左转straightturnleft ); if(la=ralb=300Rb=300(/右侧检测到黑线,左侧没有,所以向右走); if(la=300ra=300 ) /均为黑线straight ); if(Rb=300 ) /大右转turnright ); if(lb=300(//大转弯turnleft ); }void straight () analog write (in1,0 ); //左正analog write (in2,60 ); analog write (in3,60 ); //右正分析写入(in4,0 ); }void straightturnleft () analog write (in1,0 ); //左正analog write (in2,60 ); analog write (in3,100 ); //右正分析写入(in4,0 ); }void straightturnright () analog write (in1,0 ); //左正模拟写入(in2,100 ); analog write (in3,60 ); //右正分析写入(in4,0 ); }void turnright () analog write (in1,0 ); //左正analog write (in2,150 ); analog write (in3,60 ); //右正分析写入(in4,0 ); }void turnleft () analog write (in1,0 ); //左正analog write (in2,60 ); analog write (in3,150 ); //右正分析写入(in4,0 ); )五、这个码块中的数字300和320是我测量的能够区分是否比较准确地检测到黑线的值,并不一定非常准确。 感兴趣的学生还可以使用串行监视器自己进行测量。

重新启用代码中的注释行可以监视串行端口。 导入程序后,单击右上角的放大镜以显示串行端口。 (Serial的前几行) ) ) ) ) )。

if(la=300ra=320 ) /均为黑线straight ); if(la=ralb=300Rb=300(/左侧检测到黑线,右侧没有,因此左转straightturnleft ); if(la=ralb=300Rb=300(/右侧检测到黑线,左侧没有,所以向右走); if(la=300ra=300 ) /均为黑线straight ); if(Rb=300 ) /大右转turnright ); if(lb=300(//大转弯turnleft ); 这是我在arduino做的第一个项目,没想到应该是最后一个。 最近在学习python,希望你不要忘记初心,加油。 忙于学业,更新缘分。 Arduino是参加比赛的好选择。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。