2017-08-24 11 views
1

シリアルモニタを介してArduinoに数字「5」を送信すると、Serial.read()は53が「5」のASCII値であるため「53」を出力します。Serial.read()を使用可能な整数に変換する

"53"(またはSerial.read()が与える他の数字)を通常の整数に変換する必要があるので、Arduinoに "5"を送信すると、Arduinoは "5" "53"。

また、Serial.parseInt()を使用することはできません。これは1秒の遅延があるためですが、すぐに番号を受け取る必要があります。

答えて

0

parseInt()の遅延はおそらくシリアルタイムアウトによるものです。

parseInt()Arduinoのサイトにthis discussionに説明するように、あなたが、直後に数字以外の文字を送信できる場合はまだあなたのために働くかもしれません。

、ここで説明したように別の方法として、あなたは根本的にタイムアウトを短くすることができます:

マイケル・マーゴリス 『Arduinoのクックブック』(第2版、113ページ)の救助に!

Streamクラス(Streamクラスを拡張する)がStream.setTimeout()関数を使用することが判明しました。タイムアウトのデフォルト値は1000(1秒)です。私はちょうど50ミリ秒のような小さなものに設定しました。スケッチはすごく奇妙です。ここに完全なスケッチ例があります。シリアルモニタの行末をオフにしてください。

+0

ありがとうございました。私は 'Serial.setTimeout(50)'を使いました、それは完全に働いた。 – unclenorton

関連する問題