2017-03-07 9 views
0

私はユンシールドに接続されているDHT11センサーを持っている、と私はDHTライブラリーを用いたセンサからのデータを読んでいます:arduinoにsstreamを使用せずに浮動小数点値を文字列に変換するにはどうすればよいですか?

indoorHumidity = dhtBedRom.readHumidity(); 
// Read temperature as Celsius 
indorTempinC = dhtBedRom.readTemperature(); 
// Read temperature as Fahrenheit 
indorTempinF = dhtBedRom.readTemperature(true); 
// Compute heat index, Must send in temp in Fahrenheit! 
hi = dhtBedRom.computeHeatIndex(indorTempinF, indoorHumidity); 
hIinCel = (hi + 40)/1.8 - 40; 
dP = (dewPointFast(indorTempinC, indoorHumidity)); 
dPF = ((dP * 9)/5) + 32; 

し、私は、データの露点と温度、湿度、熱指数を置くしようとしていますBridgeClientというキーになるので、Pythonのbottle wsgiフレームワークを使ってHTMLを表示して表示するPythonプログラムで読むことができます。言っ

Bridge.put(DEWPNTkey, dP); 
Bridge.put(HEADINDXkey, hIinCel); 

no matching function for call to 'SerialBridgeClass::put(String&, float&)' 
+0

http://stackoverflow.com/questions/1123201/convert-double-to-string-cを参照してください。最初の質問を混ぜた以前のリンクは役に立たなかった。 – MABVT

答えて

0

Bridge.put()方法は、charまたはその2番目のパラメータとしての文字列を必要と

これらの行は、エラーを生成します。だから我々はString constructorを使ってそれを行うことができます。

void setup() 
{ 
    Serial.begin(115200); // To test this make sure your serial monitor's baud matches this, or change this to match your serial monitor's baud rate. 

    double floatVal = 1234.2; // The value we want to convert 

    // Using String() 
    String arduinoString = String(floatVal, 4); // 4 is the decimal precision 

    Serial.print("String(): "); 
    Serial.println(arduinoString); 

    // You would use arduinoString now in your Bridge.put() method. 
    // E.g. Bridge.put("Some Key", arduinoString) 
    // 
    // In your case arduinoString would have been dP or hIinCel. 

    // In case you need it as a char* at some point 
    char strVal[arduinoString.length() + 1]; // +1 for the null terminator. 
    arduinoString.toCharArray(strVal, arduinoString.length() + 1); 

    Serial.print("String() to char*: "); 
    Serial.println(strVal); 
} 

void loop() 
{ 

} 

そして、我々が得る:

String(): 1234.2000 
String() to char*: 1234.2000 

ゴーhereをヌルターミネータについて読んします。

+0

あなたは '#include stdli.h ''と文字列モジュール –

+0

を使用する必要があると言います。Arduinoブートローダを削除していない場合、 'stdlib.h'をインクルードする必要はありません。 ) 'はすでにYún上で利用可能です。 – Morgoth

+0

@Morgothユーザが' const char * 'をオンザフライで必要とする場合には' char 'を生成する代わりに 'strvar.c_str()'を使うことができます[] 'と何もない –

関連する問題