[英]C++ If Then Won't Work/Stop
我正在嘗試編寫一個簡單的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 aka 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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.