level 1
森zlh
楼主
寻迹传感器一直保持常亮,且小车轮子一直保持转动,不由传感器控制,有没有大佬可以帮忙看一看哪里有错误
// 引脚定义const int leftSensor = A0; // 左循迹传感器const int rightSensor = A1; // 右循迹传感器
// 电机驱动引脚const int IN1 = 0;const int IN2 = 1;const int IN3 = 2;const int IN4 = 3;const int ENA = 8;const int ENB = 10;
// 阈值(根据你的传感器实际情况调整)const int threshold = 500;
void setup() { Serial.begin(9600); // 电机引脚设为输出 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); // 初始速度 analogWrite(ENA, 150); analogWrite(ENB, 150);}
// 前进void goForward() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);}
// 左转(左轮停/反转,右轮前进)void turnLeft() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);}
// 右转(右轮停/反转,左轮前进)void turnRight() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);}
// 停止void stopCar() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);}
void loop() { int leftValue = analogRead(leftSensor); int rightValue = analogRead(rightSensor); Serial.print("Left: "); Serial.print(leftValue); Serial.print(" Right: "); Serial.println(rightValue);
if (leftValue < threshold && rightValue < threshold) { // 两个传感器都在黑线上(比如十字路口),直行 goForward(); } else if (leftValue < threshold) { // 左边检测到黑线,说明车偏右,向左转 turnLeft(); } else if (rightValue < threshold) { // 右边检测到黑线,说明车偏左,向右转 turnRight(); } else { // 都没检测到黑线,说明车跑丢了,先停住或原地调整 stopCar(); }}



2026年04月28日 15点04分
1
// 引脚定义const int leftSensor = A0; // 左循迹传感器const int rightSensor = A1; // 右循迹传感器
// 电机驱动引脚const int IN1 = 0;const int IN2 = 1;const int IN3 = 2;const int IN4 = 3;const int ENA = 8;const int ENB = 10;
// 阈值(根据你的传感器实际情况调整)const int threshold = 500;
void setup() { Serial.begin(9600); // 电机引脚设为输出 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); // 初始速度 analogWrite(ENA, 150); analogWrite(ENB, 150);}
// 前进void goForward() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);}
// 左转(左轮停/反转,右轮前进)void turnLeft() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);}
// 右转(右轮停/反转,左轮前进)void turnRight() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);}
// 停止void stopCar() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);}
void loop() { int leftValue = analogRead(leftSensor); int rightValue = analogRead(rightSensor); Serial.print("Left: "); Serial.print(leftValue); Serial.print(" Right: "); Serial.println(rightValue);
if (leftValue < threshold && rightValue < threshold) { // 两个传感器都在黑线上(比如十字路口),直行 goForward(); } else if (leftValue < threshold) { // 左边检测到黑线,说明车偏右,向左转 turnLeft(); } else if (rightValue < threshold) { // 右边检测到黑线,说明车偏左,向右转 turnRight(); } else { // 都没检测到黑线,说明车跑丢了,先停住或原地调整 stopCar(); }}


