zoukankan      html  css  js  c++  java
  • 树莓派与node.js —— onoff、dht

    1. 发光二极管

    tm-onoff

    var Gpio = require('tm-onoff').Gpio,
        led = new Gpio(17, 'out'),
        button = new Gpio(18, 'in', 'both');
             // 'both':按钮的上升下降沿都应该被处理,即调用如下的函数
    button.watch(function(err, value) {
        led.writeSync(value);
    });

    上述代码在ctrl+c退出时,并未释放资源,也未处理错误,一份更完整的处理如下:

    var Gpio = require('tm-onoff').Gpio,
        led = new Gpio(17, 'out'),
        button = new Gpio(18, 'in', 'both');
    
    button.watch(function(err, value) {
        if (err) exit();
        led.writeSync(value);
    });
    
    function exit() {
        led.unexport();
        button.unexport();
        process.exit();
    }
    
    process.on('SIGINT', exit);
    • 通过调用 led、btn 的 unexport 方法以释放其资源;

      var onoff = require('onoff');
      var Gpio = onoff.Gpio,
          led = new Gpio(4, 'out'),
          interval;
      
      interval = setInterval(function () { //#C
          var value = (led.readSync() + 1) % 2; //#D
          led.write(value, function () { //#E
              console.log("Changed LED state to: " + value);
          });
      }, 2000);
      
      process.on('SIGINT', function () { //#F
          clearInterval(interval);
          led.writeSync(0); //#G
          led.unexport();
          console.log('Bye, bye!');
          process.exit();
      });

    2. dht:温湿度传感器

    GitHub - momenso/node-dht-sensor: Node.js Humidity and Temperature sensor addon

    • node-dht-sensor 的安装使用如下命令:

      $ npm install --save node-dht-sensor
      
      # 如果存在权限问题,使用
      
      $ sudo npm install --unsafe-perm --save node-dht-sensor
    var dhtLib = require('node-dht-sensor');
    dhtLib.initialize(11, 12);      
        // 第一个参数表示传感器类型,dht11使用11,dht22使用22
        // 第二个参数表示GPIO引脚号
    var interval = setInterval(function (){
        read();
    }, 2000);
    function read() {
        var readout = dhtLib.read();
        console.log('Temperature: ' + readout.temperature.toFixed(2) + 'C, ' + 
            'humidity: ' + readout.humidity.toFixed(2) + '%');
    };
    process.on('SIGINT', function () {
        clearInterval(interval);
        console.log('Bye, bye!');
        process.exit();
    });
  • 相关阅读:
    无题
    无题
    Windows NT 和 VMS: 其余的故事 (The Rest of the Story)
    Lachesis Shield Released!
    最近几年来看到的最强的照片
    有关 Nintendo GameCube
    那些带给我欢乐的游戏
    习惯了 .#
    Rootkits
    我写的IDA插件发布了
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9420977.html
Copyright © 2011-2022 走看看