float
LMIC lora ライブラリを使用して arduino から複数の値を送信しようとしています。LMIC 関数は、uint8_t
その送信引数の型として のみを取ります。
temp
温度値がフロートとして含まれており、測定された温度を問題なく印刷できます。
Serial.println((String)"Temp C: " + temp);
このコードを使用して変換を行う例を次に示します。
uint16_t payloadTemp = LMIC_f2sflt16(temp);
// int -> bytes
byte tempLow = lowByte(payloadTemp);
byte tempHigh = highByte(payloadTemp);
payload[0] = tempLow;
payload[1] = tempHigh;
これが機能するかどうかはわかりませんが、そうではないようです。送信される結果のデータは次のとおりです。FF 7F
これが私が探しているものだとは思いません。次の変換手順も試しました。
uint8_t *array;
array = (unit8_t*)(&f);
arduinoを使用すると、これはコンパイルさえしません。
機能しますが、非常に長い結果を作成するものは次のとおりです。
String toSend = String(temp);
toSend.toCharArray(payload, toSend.length());
payloadActualLength = toSend.length();
Serial.print("the payload is: ");
Serial.println(payload);
しかし、結果の16進数は、送信したい他の値を取得するには長すぎます.
float
では、 a を値に変換するにはどうすればよいですuint8_t
か? また、元の変換が期待どおりに機能しないのはなぜですか?