两双传感器电磁循迹小车代码
时间: 2023-07-02 15:13:47 浏览: 142
2路传感器循迹小车C语言程序
以下是一个基于Arduino的两双传感器电磁循迹小车的代码示例:
```
#include <AFMotor.h> // 引入电机控制库
AF_DCMotor leftMotor(1, MOTOR12_64KHZ); // 设置左电机
AF_DCMotor rightMotor(2, MOTOR12_64KHZ); // 设置右电机
int leftSensor1 = A0; // 设置左传感器1引脚
int leftSensor2 = A1; // 设置左传感器2引脚
int rightSensor1 = A2; // 设置右传感器1引脚
int rightSensor2 = A3; // 设置右传感器2引脚
void setup() {
Serial.begin(9600); // 设置串口
pinMode(leftSensor1, INPUT); // 设置传感器引脚为输入模式
pinMode(leftSensor2, INPUT);
pinMode(rightSensor1, INPUT);
pinMode(rightSensor2, INPUT);
}
void loop() {
int leftValue = analogRead(leftSensor1) + analogRead(leftSensor2); // 读取左传感器数值
int rightValue = analogRead(rightSensor1) + analogRead(rightSensor2); // 读取右传感器数值
Serial.print(leftValue);
Serial.print(" ");
Serial.println(rightValue);
// 判断传感器数值,控制小车行驶方向
if (leftValue > 1000 && rightValue < 1000) {
// 左边有路,直行
leftMotor.setSpeed(150);
rightMotor.setSpeed(150);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
} else if (leftValue < 1000 && rightValue > 1000) {
// 右边有路,直行
leftMotor.setSpeed(150);
rightMotor.setSpeed(150);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
} else if (leftValue > 1000 && rightValue > 1000) {
// 左右都有路,随机左右转
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); // 设置延迟
}
```
这个代码示例使用了两双电磁传感器来检测小车前方的路况,根据传感器数值的不同,控制小车行驶方向。注意:不同的电磁传感器可能有不同的数值范围和响应速度,需要根据实际情况进行调整。同时,需要注意到两双传感器的输出值需要相加,才能得到整个传感器组的数值。
阅读全文