电磁循迹小车代码
时间: 2023-07-02 22:13:47 浏览: 314
以下是一个基于Arduino的电磁循迹小车的代码示例:
```
#include <AFMotor.h> // 引入电机控制库
AF_DCMotor leftMotor(1, MOTOR12_64KHZ); // 设置左电机
AF_DCMotor rightMotor(2, MOTOR12_64KHZ); // 设置右电机
int leftSensor = A0; // 设置左传感器引脚
int centerSensor = A1; // 设置中央传感器引脚
int rightSensor = A2; // 设置右传感器引脚
void setup() {
Serial.begin(9600); // 设置串口
pinMode(leftSensor, INPUT); // 设置传感器引脚为输入模式
pinMode(centerSensor, INPUT);
pinMode(rightSensor, INPUT);
}
void loop() {
int leftValue = analogRead(leftSensor); // 读取左传感器数值
int centerValue = analogRead(centerSensor); // 读取中央传感器数值
int rightValue = analogRead(rightSensor); // 读取右传感器数值
Serial.print(leftValue);
Serial.print(" ");
Serial.print(centerValue);
Serial.print(" ");
Serial.println(rightValue);
// 判断传感器数值,控制小车行驶方向
if (leftValue > 500 && centerValue < 500 && rightValue < 500) {
// 左边有路,直行
leftMotor.setSpeed(150);
rightMotor.setSpeed(150);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
} else if (leftValue < 500 && centerValue < 500 && rightValue > 500) {
// 右边有路,直行
leftMotor.setSpeed(150);
rightMotor.setSpeed(150);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
} else if (leftValue < 500 && centerValue > 500 && rightValue < 500) {
// 中间有路,直行
leftMotor.setSpeed(150);
rightMotor.setSpeed(150);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
} else if (leftValue > 500 && centerValue > 500 && rightValue < 500) {
// 左中有路,左转
leftMotor.setSpeed(100);
rightMotor.setSpeed(150);
leftMotor.run(BACKWARD);
rightMotor.run(FORWARD);
} else if (leftValue < 500 && centerValue > 500 && rightValue > 500) {
// 中右有路,右转
leftMotor.setSpeed(150);
rightMotor.setSpeed(100);
leftMotor.run(FORWARD);
rightMotor.run(BACKWARD);
} else if (leftValue > 500 && centerValue < 500 && rightValue > 500) {
// 左右有路,随机左右转
int randomValue = random(2);
if (randomValue == 0) {
leftMotor.setSpeed(150);
rightMotor.setSpeed(100);
leftMotor.run(FORWARD);
rightMotor.run(BACKWARD);
} else {
leftMotor.setSpeed(100);
rightMotor.setSpeed(150);
leftMotor.run(BACKWARD);
rightMotor.run(FORWARD);
}
} else {
// 没有路,停止
leftMotor.run(RELEASE);
rightMotor.run(RELEASE);
}
delay(50); // 设置延迟
}
```
这个代码示例使用了三个电磁传感器来检测小车前方的路况,根据传感器数值的不同,控制小车行驶方向。注意:不同的电磁传感器可能有不同的数值范围和响应速度,需要根据实际情况进行调整。
阅读全文