気ままにIoTメモ

Iotに関わること関わらないこと備忘録

ラズパイでスイッチ入力

定番のLチカに続いてスイッチ入力をしてみました。

var wpi = require('wiring-pi');
wpi.setup('wpi');

var led_pin = 7;
var sw_pin = 0;

wpi.pinMode(led_pin, wpi.OUTPUT);
wpi.pinMode(sw_pin, wpi.INPUT);
wpi.pullUpDnControl(sw_pin,wpi.PUD_UP);

var led = 1;
var sw, sw_;

while(true) {
    var sw = readSW();

    if(sw == wpi.LOW && sw_ == wpi.HIGH) {
        led = (led)? 0 : 1;
        wpi.digitalWrite(led_pin, led);
    }
    sw_ = sw;
}

function readSW() {
    var sw = wpi.digitalRead(sw_pin);

    if(sw == wpi.LOW) {
        wpi.delay(10);
        if(sw == wpi.LOW)
            return true;
    }
    return false;
}

www.youtube.com

10msウェイトを入れてチャタリング対策をしてます。
ただ、普通にループ回しててNode.jsらしくないので 割り込み を使った方法もやろうと思います。

LearningWiring/02_button at master · hsgwa/LearningWiring · GitHub

参考

GitHub - eugeneware/wiring-pi: Node.js bindings to wiringPi