节点红色运行,arduino模拟输出通过串口到pi,我在收集热敏电阻数据作为msg有效载荷。
尝试将Arduino信号转换为温度 - 这是adafruit出售的最常见的10K搪瓷热敏电阻。非常有用的代码。
问题在于我是JS的总菜鸟。
到目前为止,这是我的代码 - 使用函数节点 - 并尝试复制steinhart方程({{3}})
var input = { payload: msg.payload };
var R0 = 10000;
var R = R0 / ((1023 / input)-1);
var T0 = 273 + 25;
var B = 3950;
var T = 1 / ( (1/T0) + (1/B) * Math.log(R/R0) );
return T;
答案 0 :(得分:1)
我不确定msg.payload
是否会返回实际数据类型中的数字" Number"意思或字符串将是一个数字,但这样的事情应该在尝试划分字符串时处理任何异常
var numInput = Number(msg.payload);
var R0 = 10000;
var R = R0 / ((1023 / input)-1);
var T0 = 273 + 25;
var B = 3950;
var T = 1 / ( (1/T0) + (1/B) * Math.log(R/R0) );
return T;
编辑:这应该可以解决错误:
var numInput = Number(msg.payload);
var R0 = 10000;
var R = R0 / ((1023 / numInput)-1);
var T0 = 273 + 25;
var B = 3950;
var T = 1 / ( (1/T0) + (1/B) * Math.log(R/R0) );
msg.payload = T;
return msg;