我有以下代码来读取光传感器,转换为lux,与“lux”连接。并将其发送到我的SmartThings云。
最终我想要一个发送到SmartThings的值,格式为lux.110
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);
}
上面的代码向串行监视器吐出了一些奇怪的字符组合,并且没有打印勒克斯。或勒克斯。
如果我添加这一行String luxString = "lux.";
并修改下面的行,那么一切都很好。有关为什么我需要单独声明此字符串的任何想法。根据文档要么应该正常工作。
此外,如果对此代码块中的变量节省有任何建议。我还没那么好。
答案 0 :(得分:3)
由于Arduino只使用C ++,因此大多数C ++函数也可以工作,所以不要仅限于Arduino's reference pages。 显然,String构造函数不支持数字,您必须首先使用String()函数将其转换为here。 或者我认为你可以添加这样的字符串:
String statusUpdate = "lux.";
statusUpdate += luxValue;
见here,
这与使用String的concat函数相同。
statusUpdate.concat(luxValue);