2014-10-26 43 views
0

我有下面的代碼來讀取光傳感器,轉換爲勒克斯,concat與「勒克斯」。並將其發送給我的SmartThings雲。 最後我想發送到SmartThings值格式化像lux.110我有麻煩連接字符串與int

void checkLux() { 
    float logLux = analogRead(lightPIN) * logRange/rawRange; 
    int luxValue = pow(10, logLux); 
    String statusUpdate = "lux." + luxValue; 
    Serial.println(statusUpdate); 
    smartthing.send(statusUpdate); 
    delay(1000); 
} 

這上面的代碼中吐出的字符到串口監視器和犯規打印勒克斯一些奇怪的組合。或luxvalue。 如果我添加這一行String luxString = "lux.";並修改下面的行,這一切都很好。任何想法爲什麼我需要單獨聲明這個字符串。根據文件或者應該工作正常。

此外,如果在此代碼塊內對變量節省有任何建議。我還沒有那麼棒。

+0

您可以使用concat函數。 'statusUpdate.concat(luxValue)'不能解決你的問題嗎? – ahaltindis 2014-10-26 19:57:37

+0

@ahaltindis這是一個答案,把它放在答案部分。 – 2014-10-26 23:18:50

回答

3

由於Arduino只是使用C++,所以大多數C++函數也可以工作,所以不要僅限於Arduino's reference pages
顯然String構造函數不支持數字,你必須首先使用String()函數轉換它們,如所見here
或者我認爲你可以追加一個字符串是這樣的:

String statusUpdate = "lux."; 
statusUpdate += luxValue; 

所看到here
這是相同的使用字符串的concat函數。

statusUpdate.concat(luxValue);