制作最简 Arduino 巡线机器人:SparkFun L298 驱动板
元器件与物料
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控制器 |
| SparkFun 双 H 桥电机驱动板 L298 | 1 | 驱动两路直流电机 |
| 红外循迹传感器模块 | 2 | 左/右传感器 |
| 跳线 (通用) | 1 | 连接用 |
所需工具与设备
- 热熔胶枪 (通用)
- 螺丝刀
- 巡线机器人底盘套件
软件与在线服务
- Arduino IDE
项目简介
巡线机器人是机器人入门的「Hello World」。本项目结构极简,易于搭建,适合初学者快速上手。
代码
Arduino 巡线机器人代码 (C/C++)
/*------- 定义输入引脚 -------*/
#define LS 2 // 左侧传感器
#define RS 5 // 右侧传感器
/*------- 定义输出引脚 -------*/
#define LM1 11 // 左电机正
#define LM2 10 // 左电机反
#define RM1 9 // 右电机正
#define RM2 6 // 右电机反
void setup() {
pinMode(LS, INPUT);
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
}
void loop() {
// 双传感器均检测到黑线 (LOW) -> 前进
if ((digitalRead(LS) == LOW) && (digitalRead(RS) == LOW)) {
MoveForward();
}
// 双传感器均未检测到黑线 (HIGH) -> 停止
if ((digitalRead(LS) == HIGH) && (digitalRead(RS) == HIGH)) {
Stop();
}
// 左传感器偏离 (LOW),右传感器在线 (HIGH) -> 左转修正
if ((digitalRead(LS) == LOW) && (digitalRead(RS) == HIGH)) {
TurnLeft();
}
// 左传感器在线 (HIGH),右传感器偏离 (LOW) -> 右转修正
if ((digitalRead(LS) == HIGH) && (digitalRead(RS) == LOW)) {
TurnRight();
}
}
void MoveForward() {
analogWrite(LM1, 50); analogWrite(LM2, 0);
analogWrite(RM1, 50); analogWrite(RM2, 0);
delay(20);
}
void TurnRight() {
analogWrite(LM1, 0); analogWrite(LM2, 60);
analogWrite(RM1, 60); analogWrite(RM2, 0);
delay(30);
}
void TurnLeft() {
analogWrite(LM1, 60); analogWrite(LM2, 0);
analogWrite(RM1, 0); analogWrite(RM2, 60);
delay(30);
}
void Stop() {
analogWrite(LM1, 0); analogWrite(LM2, 0);
analogWrite(RM1, 0); analogWrite(RM2, 0);
delay(20);
}
原理图
制造工艺
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- V4 版高速循迹机器人:Arduino Nano + 定制 PCB + PID 算法
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino UNO 自制循迹小车:从零构建自主巡线机器人
- 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
- MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体
- PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南