シリアル通信を使用して arduino uno に送信された文字列をフロートに解析しようとしています。これらのフロートを使用して、RGB LED の色を設定したいと考えています。私の問題は、最初の 2 桁しか読み取れないことです。ちょっと。100 を入力したとします。10.00 までしか出てきません。231 なら 23.00 になります。奇妙なことに、32.43 を入れると 32.4300 になります。なぜこれを行うのかわかりません。これが私のコードです:
float led1Color[3];
...
for (int i = 0; i < 3; i++) {
int index = content.indexOf(",");
content = content.substring(index + 1); //removes additional text in front of numbers
led1Color[i] = atof(content.substring(0, index).c_str());
Serial.println(led1Color[i], 4);
}
ここで、「RGBLED,43.61,52,231」を送信したとします。まず、RGBLED を取り外します。次に、コンソールに表示される 3 つの値は次のとおりです。
43.6100 52.0000 23.0000
明らかに、ここでの問題は、23.0000 ではなく、値 231 が必要なことです。これまで C/C++ で実際にプログラミングしたことがないので、不足しているものはありますか? 3 桁の数字が 2 桁の数字に変換されるのはなぜですか?