0

シリアル通信を使用して 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 桁の数字に変換されるのはなぜですか?

4

1 に答える 1