使用英特尔Edison Arduino开发板从MCP9701芯片获得温度?

时间:2015-01-04 20:09:51

标签: node.js temperature intel-edison

我使用的是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);

0 个答案:

没有答案