簡體   English   中英

C ++如果那么不起作用/停止

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM