gpt4 book ai didi

C++ If Then 不工作/停止

转载 作者:行者123 更新时间:2023-11-30 00:53:04 26 4
gpt4 key购买 nike

我正在尝试制作一个简单的 Arduino 代码,当光电管读数小于 900 时,它会将 CurrentNumber 加 1 并将其显示在 4 位 7 段显示器上。问题是即使读数超过 1000,它也不会停止加一。

void loop() {
photocellReading = analogRead(photocellPin);
Serial.print("Analog reading = ");
Serial.println(photocellReading); // the raw analog reading
photocellReading = 1023 - photocellReading;

if(photocellReading << 10){
CurrentNumber = CurrentNumber + 1;
}

displayNumber(CurrentNumber);
}

最佳答案

您的问题出在您的 if 条件中:

 if(photocellReading << 10){
CurrentNumber = CurrentNumber + 1;
}

他实际上在做的是:将 photocellReading 的位向左移动 10(相当于乘以 2^10,即 1024)。 最有可能这意味着只有当 photocellReading 的值一开始为 0 时,这才会为假。 (我说最有可能是因为它取决于位是否环回,但这并不完全相关)。

tl;dr 你的代码概念上等同于:

if((photocellReading * 1024) != 0){
CurrentNumber = CurrentNumber + 1;
}

我猜你想做的(考虑到你减去 1023,巧合的是 1024 - 1)是:

if(photocellReading < 1024){ // again 1024 == 2^10
CurrentNumber = CurrentNumber + 1;
}

关于C++ If Then 不工作/停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17516857/

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