Arduino循迹小车原理图:

Arduino 循迹小车,红外传感器、Arduino Uno 和 L298N 电机驱动器
制作汽车的步骤:
步骤1:
首先,我们需要一块木头作为汽车底盘。在这里,我使用13CM x 10CM的胶合板作为汽车底盘。这些尺寸非常适合制造 TT Motor Car。您也可以使用亚克力板或预制底盘。

步骤2:
现在用胶枪或任何其他胶水将电机连接到胶合板的 4 个角上。确保在连接电机时,电机对准应该是正确的。否则,汽车将无法直行。
步骤3:
现在连接 TT 齿轮电机,如下所示。我们将以十字交叉模式连接电机。这是因为我们必须使汽车以两个侧面电机沿同一方向旋转的方式进行,以便向前、向后和其他已知方向前进。
步骤4:
在连接好电机之后,连接应如下所示。在这里,我提供了两张侧面图片,以便您清楚地了解
步骤5:
这里我们使用的是 L298N 电机驱动器。我使用双面胶带将 L298N 电机驱动器连接到胶合板上。
步骤6:
现在将电机线与 L298N 电机驱动器连接。然后拧紧电机驱动器线。并避免任何类型的松散连接。
连接后,所有电线将如下所示。
注意:上传代码后,如果汽车没有朝着正确的方向行驶或向错误的方向旋转,那么只需更换电机线即可。而且它会正常工作。
步骤7:
对于电池,我使用了 2 节 18650 电池。这对于制造这种类型的汽车非常有用。为了连接电池,我使用的是 2s 18650 电池座。我还添加了一个用于打开/关闭汽车的开关。
电池线将与电机驱动器的输入线连接。您还可以清楚地看到电池线的连接位置。
步骤8:
在这个项目中,我使用 Arduino Uno 作为微控制器。您也可以根据需要使用任何其他微控制器。但在这种情况下,布线原理图会有所不同。
接下来,您必须从电机驱动器上移除跳线短路连接器,以进行下一步连接。
步骤9:
在图片中,我提到了电机驱动器的必要连接。
|
Arduino Uno |
L298N 电机驱动器 |
|
引脚 10 |
ENA |
|
引脚 9 |
IN1 系列 |
|
引脚 8 |
IN2 |
|
引脚 7 |
IN3 |
|
引脚 6 |
IN4 系列 |
|
引脚 5 |
环境局 |
步骤10:
连接 IR 传感器,如我在照片中所示。然后将必要的电线与 Arduino UNO 连接。只需按照原理图中的接线图进行操作即可。
现在将代码上传到 Arduino。现在我们必须为运行汽车进行校准。
步骤11:
将电池连接到汽车并打开开关。
第 12 步:(传感器校准)关键一步
在校准之前,您必须将车轮连接到汽车上。您无需打开串行监视器进行校准。这只是手动校准。在这里,我使用了 digitalRead 函数来区分 Light 和 Dark。因此,IR 传感器只会给出 High/Low 作为 Output。
将汽车放在一些高表面上。在这里,我使用了喷漆的顶盖将汽车放在上面进行校准。在这里,我使用带有 T 形线的白色表面对进行校准。(那些正在考虑我用于 T 形的人。答案是这样的,这是简单的黑色电工胶带 :)
按照我在图片中展示的方式放置汽车。现在,您已准备好进行校准。首先将2个电位计(左侧和右侧传感器均为)逆时针旋转。
- 现在顺时针缓慢地逐个旋转电位计,直到红外传感器的 LED 亮起。
- 接下来,慢慢地将汽车向左和向右移动,使汽车的 Left 和 Right 传感器位于黑线上。然后车轮向不同的方向旋转。
- 更具体地说,如果您将 Left Sensor 放在黑线上,汽车将尝试向正确的方向移动。同样,如果右侧传感器处于黑暗中,则汽车向右移动。
- 这是因为将汽车始终放在 Blackline 上。这种配置的一个主要问题是,在这种配置中你不能走得太快。

因此,在这种情况下,校准过程要容易一些。现在您可以打开汽车并放置在您想要跟随的地方,汽车将沿着这条线行驶。
【arduino制作寻迹小车】 https://www.bilibili.com/video/BV191gseyEsu/?share_source=copy_web&vd_source=382763173905b6f79f424ea5c1a597d7
//Arduino循迹小车代码:
#define in1 9
#define in2 8
#define in3 7
#define in4 6
#define enA 10
#define enB 5
int M1_Speed = 80; // 电机1速度
int M2_Speed = 80; // 电机2速度
int LeftRotationSpeed = 250; // 左转速度
int RightRotationSpeed = 250; // 右转速度
void setup() {
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(enA,OUTPUT);
pinMode(enB,OUTPUT);
pinMode(A0, INPUT); // 设置左边传感器引脚
pinMode(A1, INPUT); // 设置右边传感器引脚
}
void loop() {
int LEFT_SENSOR = digitalRead(A0);
int RIGHT_SENSOR = digitalRead(A1);
if(RIGHT_SENSOR==0 && LEFT_SENSOR==0) {
forward(); //前进
}
else if(RIGHT_SENSOR==0 && LEFT_SENSOR==1) {
right(); //右转
}
else if(RIGHT_SENSOR==1 && LEFT_SENSOR==0) {
left(); //左转
}
else if(RIGHT_SENSOR==1 && LEFT_SENSOR==1) {
Stop(); //停止
}
}
void forward()//小车前进函数
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, M1_Speed);
analogWrite(enB, M2_Speed);
}
void backward()//小车后退函数
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, M1_Speed);
analogWrite(enB, M2_Speed);
}
void right()//小车右转函数
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, LeftRotationSpeed);
analogWrite(enB, RightRotationSpeed);
}
void left()//小车左转函数
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, LeftRotationSpeed);
analogWrite(enB, RightRotationSpeed);
}
void Stop()//小车停止函数
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
9万+

被折叠的 条评论
为什么被折叠?



