英特尔爱迪生node.js示例代码不适用于grove 3轴数字I2C加速计

英特尔爱迪生node.js示例代码不适用于grove 3轴数字I2C加速计,node.js,accelerometer,intel-edison,Node.js,Accelerometer,Intel Edison,这是Intel运行Grove digital加速度计的示例代码: // Load accelerometer var adxl345 = require('jsupm_adxl345'); // Instantiate on I2C bus var adxl = new adxl345.Adxl345(0); setInterval(function() { adxl.update(); // Update the data var raw = adxl.getRawValu

这是Intel运行Grove digital加速度计的示例代码:

// Load accelerometer
var adxl345 = require('jsupm_adxl345');

// Instantiate on I2C bus
var adxl = new adxl345.Adxl345(0);

setInterval(function()
{
    adxl.update(); // Update the data
    var raw = adxl.getRawValues(); // Read raw sensor data
    var force = adxl.getAcceleration(); // Read acceleration force (g)
    var rawvalues = raw.getitem(0) + " " + raw.getitem(1) + " " + raw.getitem(2);
    console.log("Raw Values: " + rawvalues);
    console.log("ForceX: " + force.getitem(0).toFixed(2) + " g");
    console.log("ForceY: " + force.getitem(1).toFixed(2) + " g");
    console.log("ForceZ: " + force.getitem(2).toFixed(2) + " g");
}, 1000);
ERROR: /home/root/.node_app_slot/main.js:10                                                                                                                                             
ERROR: var adxl = new adxl345.Adxl345(0);                                                                                                                                               
   ERROR:         ^                                                                                                                                                                     
ERROR: Error: UPM Runtime Error: Adxl345: i2c.write() control register failed                                                                                                           
    at Object.<anonymous> (/home/root/.node_app_slot/main.js:10:12)                                                                                                                     
    at Module._compile (module.js:456:26)                                                                                                                                               
    at Object.Module._extensions..js (module.js:474:10)                                                                                                                                 
    at Module.load (module.js:356:32)                                                                                                                                                   
    at Function.Module._load (module.js:312:12)                                                                                                                                         
    at Function.Module.runMain (module.js:497:10)                                                                                                                                       
    at startup (node.js:119:16)                                                                                                                                                         
    at node.js:935:3                                                                                                                                                                    
它构建并上传到爱迪生Arduino板,但运行时会抛出以下错误:

ERROR: /home/root/.node_app_slot/main.js:10                                                                                                                                             
ERROR: var adxl = new adxl345.Adxl345(0);                                                                                                                                               
   ERROR:         ^                                                                                                                                                                     
ERROR: Error: UPM Runtime Error: Adxl345: i2c.write() control register failed                                                                                                           
    at Object.<anonymous> (/home/root/.node_app_slot/main.js:10:12)                                                                                                                     
    at Module._compile (module.js:456:26)                                                                                                                                               
    at Object.Module._extensions..js (module.js:474:10)                                                                                                                                 
    at Module.load (module.js:356:32)                                                                                                                                                   
    at Function.Module._load (module.js:312:12)                                                                                                                                         
    at Function.Module.runMain (module.js:497:10)                                                                                                                                       
    at startup (node.js:119:16)                                                                                                                                                         
    at node.js:935:3                                                                                                                                                                    

你有什么想法吗?加速计连接到I2C端口。另一个传感器温度正常。

grove acceleremoter不是ADXL345,而是MMA7660,如前所述

ERROR: /home/root/.node_app_slot/main.js:10                                                                                                                                             
ERROR: var adxl = new adxl345.Adxl345(0);                                                                                                                                               
   ERROR:         ^                                                                                                                                                                     
ERROR: Error: UPM Runtime Error: Adxl345: i2c.write() control register failed                                                                                                           
    at Object.<anonymous> (/home/root/.node_app_slot/main.js:10:12)                                                                                                                     
    at Module._compile (module.js:456:26)                                                                                                                                               
    at Object.Module._extensions..js (module.js:474:10)                                                                                                                                 
    at Module.load (module.js:356:32)                                                                                                                                                   
    at Function.Module._load (module.js:312:12)                                                                                                                                         
    at Function.Module.runMain (module.js:497:10)                                                                                                                                       
    at startup (node.js:119:16)                                                                                                                                                         
    at node.js:935:3                                                                                                                                                                    
下面是MMA7660的upm代码

ERROR: /home/root/.node_app_slot/main.js:10                                                                                                                                             
ERROR: var adxl = new adxl345.Adxl345(0);                                                                                                                                               
   ERROR:         ^                                                                                                                                                                     
ERROR: Error: UPM Runtime Error: Adxl345: i2c.write() control register failed                                                                                                           
    at Object.<anonymous> (/home/root/.node_app_slot/main.js:10:12)                                                                                                                     
    at Module._compile (module.js:456:26)                                                                                                                                               
    at Object.Module._extensions..js (module.js:474:10)                                                                                                                                 
    at Module.load (module.js:356:32)                                                                                                                                                   
    at Function.Module._load (module.js:312:12)                                                                                                                                         
    at Function.Module.runMain (module.js:497:10)                                                                                                                                       
    at startup (node.js:119:16)                                                                                                                                                         
    at node.js:935:3                                                                                                                                                                    
 var digitalAccelerometer = require('jsupm_mma7660');
    // Instantiate an MMA7660 on I2C bus 0
    var myDigitalAccelerometer = new digitalAccelerometer.MMA7660(
                    digitalAccelerometer.MMA7660_I2C_BUS, 
                    digitalAccelerometer.MMA7660_DEFAULT_I2C_ADDR);

    // place device in standby mode so we can write registers
    myDigitalAccelerometer.setModeStandby();

    // enable 64 samples per second
    myDigitalAccelerometer.setSampleRate(digitalAccelerometer.MMA7660.AUTOSLEEP_64);

// place device into active mode
myDigitalAccelerometer.setModeActive();

var x, y, z;
x = digitalAccelerometer.new_intp();
y = digitalAccelerometer.new_intp();
z = digitalAccelerometer.new_intp();

var ax, ay, az;
ax = digitalAccelerometer.new_floatp();
ay = digitalAccelerometer.new_floatp();
az = digitalAccelerometer.new_floatp();

var outputStr;

var myInterval = setInterval(function()
{
    myDigitalAccelerometer.getRawValues(x, y, z);
    outputStr = "Raw values: x = " + digitalAccelerometer.intp_value(x) +
    " y = " + digitalAccelerometer.intp_value(y) +
    " z = " + digitalAccelerometer.intp_value(z);
    console.log(outputStr);

    myDigitalAccelerometer.getAcceleration(ax, ay, az);
    outputStr = "Acceleration: x = " 
        + roundNum(digitalAccelerometer.floatp_value(ax), 6)
        + "g y = " + roundNum(digitalAccelerometer.floatp_value(ay), 6) 
        + "g z = " + roundNum(digitalAccelerometer.floatp_value(az), 6) + "g";
    console.log(outputStr);
}, 500);

// round off output to match C example, which has 6 decimal places
function roundNum(num, decimalPlaces)
{
    var extraNum = (1 / (Math.pow(10, decimalPlaces) * 1000));
    return (Math.round((num + extraNum) 
        * (Math.pow(10, decimalPlaces))) / Math.pow(10, decimalPlaces));
}

// When exiting: clear interval and print message
process.on('SIGINT', function()
{
    clearInterval(myInterval);

    // clean up memory
    digitalAccelerometer.delete_intp(x);
    digitalAccelerometer.delete_intp(y);
    digitalAccelerometer.delete_intp(z);

    digitalAccelerometer.delete_floatp(ax);
    digitalAccelerometer.delete_floatp(ay);
    digitalAccelerometer.delete_floatp(az);

    myDigitalAccelerometer.setModeStandby();

    console.log("Exiting...");
    process.exit(0);
});

您确定这是您的传感器类型吗?我相信正常的grove发送的是mma7660部分:我没有看到你的错误,但是当我运行adxl345代码时,我得到了虚假的值。另外,当你在串行连接中键入“configure_edison-version”时,你得到了什么?我现在在159号。