用arduino 写一个磁力循迹小车
时间: 2024-06-08 17:12:22 浏览: 111
好的,让我们来看一下如何使用Arduino来写一个磁力循迹小车吧!
材料清单:
- Arduino UNO 或者其他兼容板子
- L298N 电机驱动模块
- 磁力感应传感器模块
- 蜂鸣器模块
- 9V 电池或者其他电源
- 4个直流电机
步骤:
1. 连接电机驱动模块到Arduino。将L298N的ENA和ENB引脚接到Arduino的PWM引脚,IN1、IN2、IN3和IN4引脚接到Arduino的数字引脚。
2. 连接磁力感应传感器模块到Arduino。将VCC引脚连接到Arduino的5V引脚,GND引脚连接到Arduino的GND引脚,S1、S2、S3和S4引脚连接到Arduino的数字引脚。
3. 连接蜂鸣器模块到Arduino。将正极连接到Arduino的数字引脚,负极连接到Arduino的GND引脚。
4. 将4个直流电机连接到L298N电机驱动模块上。
5. 编写Arduino代码。代码如下:
```
int s1 = 2; // 磁感应传感器模块引脚定义
int s2 = 3;
int s3 = 4;
int s4 = 5;
int buzz = 6; // 蜂鸣器模块引脚定义
void setup() {
pinMode(s1, INPUT); // 设置传感器模块引脚为输入模式
pinMode(s2, INPUT);
pinMode(s3, INPUT);
pinMode(s4, INPUT);
pinMode(buzz, OUTPUT); // 设置蜂鸣器模块引脚为输出模式
}
void loop() {
int leftSensor = digitalRead(s1); // 读取左侧磁感应传感器模块的值
int middleLeftSensor = digitalRead(s2); // 读取左侧中间磁感应传感器模块的值
int middleRightSensor = digitalRead(s3); // 读取右侧中间磁感应传感器模块的值
int rightSensor = digitalRead(s4); // 读取右侧磁感应传感器模块的值
if (leftSensor == HIGH && middleLeftSensor == LOW && middleRightSensor == LOW && rightSensor == HIGH) { // 直行
digitalWrite(9, HIGH); // 左侧电机正转
digitalWrite(10, LOW); // 右侧电机反转
digitalWrite(11, HIGH); // 左侧电机正转
digitalWrite(12, LOW); // 右侧电机反转
} else if (leftSensor == LOW && middleLeftSensor == LOW && middleRightSensor == LOW && rightSensor == HIGH) { // 左转
digitalWrite(9, LOW); // 左侧电机停止
digitalWrite(10, LOW); // 右侧电机反转
digitalWrite(11, HIGH); // 左侧电机正转
digitalWrite(12, LOW); // 右侧电机反转
} else if (leftSensor == HIGH && middleLeftSensor == LOW && middleRightSensor == LOW && rightSensor == LOW) { // 左转
digitalWrite(9, LOW); // 左侧电机停止
digitalWrite(10, LOW); // 右侧电机反转
digitalWrite(11, HIGH); // 左侧电机正转
digitalWrite(12, LOW); // 右侧电机反转
} else if (leftSensor == HIGH && middleLeftSensor == HIGH && middleRightSensor == LOW && rightSensor == LOW) { // 直行
digitalWrite(9, HIGH); // 左侧电机正转
digitalWrite(10, LOW); // 右侧电机反转
digitalWrite(11, HIGH); // 左侧电机正转
digitalWrite(12, LOW); // 右侧电机反转
} else if (leftSensor == LOW && middleLeftSensor == LOW && middleRightSensor == HIGH && rightSensor == HIGH) { // 右转
digitalWrite(9, HIGH); // 左侧电机正转
digitalWrite(10, LOW); // 右侧电机停止
digitalWrite(11, LOW); // 左侧电机反转
digitalWrite(12, LOW); // 右侧电机停止
} else if (leftSensor == LOW && middleLeftSensor == HIGH && middleRightSensor == HIGH && rightSensor == HIGH) { // 直行
digitalWrite(9, HIGH); // 左侧电机正转
digitalWrite(10, LOW); // 右侧电机反转
digitalWrite(11, HIGH); // 左侧电机正转
digitalWrite(12, LOW); // 右侧电机反转
} else if (leftSensor == LOW && middleLeftSensor == LOW && middleRightSensor == LOW && rightSensor == LOW) { // 停止
digitalWrite(9, LOW); // 左侧电机停止
digitalWrite(10, LOW); // 右侧电机停止
digitalWrite(11, LOW); // 左侧电机停止
digitalWrite(12, LOW); // 右侧电机停止
digitalWrite(buzz, HIGH); // 蜂鸣器发出警报声
delay(1000); // 等待1秒
digitalWrite(buzz, LOW); // 关闭蜂鸣器
}
}
```
6. 上传代码到Arduino板子,然后将小车放在磁性轨迹上测试。
注意:
- 在测试小车之前,先校准磁感应传感器模块。
- 如果小车不能正常运行,请检查电路连接是否正确。
阅读全文