我使用的是MCP9701温度芯片。 MCP9701连接到我的Edison Arduino分线板引脚A0,5v和地。
输出温度为:
c:25.4 f:77.8我的房间温度计说71.8,爱迪生计算我的房间温度为77.8。我房间的温度绝对不是77.8。
我尝试将setBit(10)
更改为setBit(12)
,结果导致温度为200.7。我还将setBit更改为8,结果为-8 temp。如何使用NodeJS获得正确的温度计算?
NodeJS代码:
var m = require('mraa');
var a0 = new m.Aio(0);
a0.setBit(10);
console.log("reading analog input>>>");
function CompareForSort(a,b) {
if (a == b)
return 0;
if (a < b)
return -1;
else
return 1;
}
function MedianRead(n, tempType) {
var myarr = [];
for(i=0; i<n; i++){
var v_out;
var temp;
v_out = a0.read();
v_out*=.0048;
v_out*=1000;
temp=0.0512 * v_out -20.5128;
var tempinf = temp * (9 / 5) + 32;
switch(tempType) {
case 'c':
myarr[i] = temp;
break;
case 'f':
myarr[i] = tempinf;
break;
default:
myarr[i] = temp;
}
}
myarr.sort(CompareForSort);
myarr.splice(n-2,2);
myarr.splice(0,2);
m=myarr.length;
var sum=myarr.reduce(function(a,b) {
return a+b;
});
var temp = sum/m;
var tempFixed = temp.toFixed(1);
console.log("Temp: " + temp + " Fixed Temp: " + tempFixed);
console.log(tempFixed);
}
setInterval(function() {
MedianRead(200, 'f');
}, 3000);