[英]Arduino Serial.read(), reading wrong decimal number that corresponds to ASCII character
我正在編寫arduino草圖,當通過串行端口提供憑證字符時,它將執行憑證任務!
我的arduino素描的重要部分是:
while(Serial.available()){
Status = Serial.read();
Serial.println(Status);
if (Status == A){
digitalWrite(led, HIGH);
Serial.println("Pin 13 -> ON");
}else if(Status == B){
digitalWrite(led, LOW);
Serial.println("Pin 13 -> OFF");
}
}
順便說一句:變量狀態是整數類型!
問題是,有時它可以工作,有時不起作用,所以當我上傳草圖時,它可以正常工作,我鍵入字母A並將其轉換為數字65,鍵入字母B並將其轉換為數字66。一段時間后,它突然開始輸出數字193和194。如果返回193和194也可以,但不會! 希望somone會知道解決方案,如果您需要更多信息...
if (Status == A)
正在比較兩個變量Status
和A
您應該將其替換為if (Status == 'A')
。 與if (Status == 'B')
。
好吧,193/194與65/66僅相差1位(MSB)。 您可以像這樣屏蔽最左邊的位:
Status = Status & 01111111; // MSB will be zeroed
或雙班:
Status = Status << 1;
Status = Status >> 1; // now you have dropped the leftmost bit
在這里查看文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.