gpt4 book ai didi

c++ - 为什么这段代码不能工作,使用 arduino uno,sr04 超声波传感器和 9 个 LED?

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:42 25 4
gpt4 key购买 nike

我正在尝试使用以下代码将超声波传感器的输出映射到 9 个 LED,出于某种原因,当我上传代码时,LED 全部保留,我什至没有通过串行监视器获得读数。我以前尝试过类似的代码,但没有 LED,而且工作完美。

const int trigPin = 13;
const int echoPin = 12;
const int maxRange = 300;
const int minRange = 0;
const int delayTime = 300;
const int ledPins[] = {10, 9, 8, 7 ,6, 5, 4, 3, 2};
const int ledCount = 9;

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
for(int thisLed = 0; thisLed < ledCount; thisLed = thisLed++){
pinMode(ledPins[thisLed], OUTPUT);
}
}

void loop() {
long duration;

digitalWrite(trigPin, LOW); // this alinea triggers the sensor
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH); // stores lenght of returned pulse

long distance = duration/58.2;

if (distance > maxRange){
Serial.println("Out of range");
delay(delayTime);
}
else if (distance < minRange){
Serial.println("Out of range");
delay(delayTime);
}
else {
Serial.print(distance);
Serial.println(" cm");
delay(delayTime);
}

constrain(distance, minRange, maxRange);
int usedLed = map(distance, minRange, maxRange, 0, ledCount);

for(int thisLed = 0; thisLed < usedLed; thisLed++){
digitalWrite(ledPins[thisLed], HIGH);
}
}

最佳答案

基本上,您在下面的代码中运行一个无限循环,在设置函数内:

for(int thisLed = 0; thisLed < ledCount; thisLed = thisLed++){
pinMode(ledPins[thisLed], OUTPUT);
}

根据 C99 specification 的条款 6.5 §2,这段代码 thisLed = thisLed++ 产生了未定义的行为。 :

Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be read only to determine the value to be stored.

为了修复将 thisLed = thisLed++ 替换为 thisLed++

关于c++ - 为什么这段代码不能工作,使用 arduino uno,sr04 超声波传感器和 9 个 LED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com