Thursday, August 21, 2014

raspberry pi スイッチでLED点灯

練習がてらブレッドボード上で回路を組んで、前回同様にrubynodeで実装してみた。

ruby

require "open3"

def readswitch
    out, err, status = Open3.capture3("gpio read 6")
    return out
end

def blink(value)
    puts "LED would be set on " + value
    Open3.capture3("gpio write 1 " + value)
end

Open3.capture3("gpio mode 1 OUT")
Open3.capture3("gpio mode 6 IN")

loop {
    led = readswitch()
    blink(led)
    sleep 0.1
}

node

var Q    = require('q');
var exec = require('child_process').exec;

exec('gpio mode 1 OUT');
exec('gpio mode 6 IN');

function blink(value) {
    console.log('LED would be set on ' + value);
    exec('gpio write 1 ' + value);
}

function readswitch() {
    var deffered = Q.defer();
    exec('gpio read 6',
        function(error, stdout, stderr) {
            deffered.resolve(stdout);
        });
    return deffered.promise;
}

setInterval(function() {
    readswitch().then(blink);
}, 100);

nodeでは相変わらずQ(deffered)を使いループに代わりにsetIntervalを使っている。慣れるとこちらのほうが違和感が無くなってくる不思議。

回路図あげたいなどうしようかな…。

Written with StackEdit.

No comments:

Post a Comment