當我通過串行監視器向Arduino發送數字「5」時,Serial.read()
將輸出「53」,因爲53是「5」的ASCII值。將Serial.read()轉換爲可用整數
我需要做的是將「53」(或Serial.read()
給出的任何其他數字)轉換爲一個正常的整數,所以當我向Arduino發送「5」時,Arduino將會看到它不是「5」 「53」。
此外,我不能使用Serial.parseInt()
,因爲它有1秒的延遲,但我需要立即收到號碼。
當我通過串行監視器向Arduino發送數字「5」時,Serial.read()
將輸出「53」,因爲53是「5」的ASCII值。將Serial.read()轉換爲可用整數
我需要做的是將「53」(或Serial.read()
給出的任何其他數字)轉換爲一個正常的整數,所以當我向Arduino發送「5」時,Arduino將會看到它不是「5」 「53」。
此外,我不能使用Serial.parseInt()
,因爲它有1秒的延遲,但我需要立即收到號碼。
parseInt()
中的延遲可能是由於您的串行超時造成的。
parseInt()
實力仍然爲你工作,如果你能後立即發送一個非數字字符,如在this discussion在Arduino的現場討論。
或者,可以從根本上縮短超時這裏討論:
邁克爾·馬戈利斯‘Arduino的食譜’(第2版,第113頁)來救援!
事實證明,Serial類(它擴展了Stream類)使用Stream.setTimeout()函數。超時的默認值是1000(1秒)。我只是將它設置爲更小的一點,比如50毫秒,而且草圖非常好而且快捷。這是完整的示例草圖。關閉串行監視器中的行尾......
謝謝。我使用'Serial.setTimeout(50)',它工作完美。 – unclenorton