我有下面的代码来读取光传感器,转换为lux,与“lux”连接。并将其发送到我的SmartThings云中。最终,我希望将格式化为lux.110的值发送到SmartThings
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);
}上面的代码向串行监视器吐出一些奇怪的字符组合,并且不打印lux。或者是奢华的价值。如果我添加这行String luxString = "lux.";并修改下面的行,一切都会正常工作。有没有想过为什么我需要单独声明这个字符串。根据文档,这两个都应该工作得很好。
此外,如果在这段代码中有任何关于变量节省的建议。我对此还不是很在行。
发布于 2014-10-27 07:26:09
由于Arduino只使用C++,大多数C++函数也可以使用,所以不要将自己限制在Arduino's reference pages上。
显然,字符串构造函数不支持数字,必须首先使用String()函数转换它们,如here所示。
或者,我认为您可以像这样附加一个字符串:
String statusUpdate = "lux.";
statusUpdate += luxValue;正如here所见,
这与使用字符串的concat函数相同。
statusUpdate.concat(luxValue);https://stackoverflow.com/questions/26576046
复制相似问题