求助求助求助
arduino吧
全部回复
仅看楼主
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
level 6
你这样贴这代码没办法看 不如截图
2026年04月28日 21点04分 2
吧务
level 8
传感器一直亮说明阈值不对或环境光干扰,先打开串口看看A0/A1读到的实际数值;如果传感器有D0数字输出口,直接接数字口用digitalRead更靠谱
2026年07月03日 15点07分 3
1