Raspberry Pi üzerine Node.js ile GPIO denemesi

GPIO hizmetine erişebilmek için raspberry'de komutlar sudo olarak çalıştırılmalı, bunun için gpio için bir kullanici oluşturacağız

git clone git://github.com/quick2wire/quick2wire-gpio-admin.git

cd quick2wire-gpio-admin

make

sudo make install

sudo adduser $USER gpio

bu kodlardan sonra logout ve login gerekmekte. RPi-GPIO kurulumunu yapıyoruz

npm install rpi-gpio

Kablolamayı ise şu şekilde yapıyoruz.

6. bacak toprak ve 7. Bacak sinyal.

Node klasörünü node örnekleri için oluşturmuştum oraya giderek yeni bir örnek oluşturuyorum

nano gpio_test1.js

oncelikle kullanacağımız sistemin gpio içerdiğini söylememiz gerekmekte.

var gpio = require('rpi-gpio');

7 numarakı pini çıkış pini olarak ayarlıyoruz ve write fonksiyonunu çağırıyoruz.

gpio.setup(7, gpio.DIR_OUT, write);

aşağıdaki true değeri 7 numaralı bacaktaki ledi yakacaktır. Değiştirip false yaparak söndüğünü de görün

function write() {

gpio.write(7, true, function(err) {

if (err) throw err;

console.log('Written to pin');

});

En basit haliyle node ile gpio kullanarak led yakmak bu şekilde

Aşağıdaki örnek ise 10 saniye boyunca 1 saniye aralıklarla ledi yakıp söndürmekte ve 10 saniye sonunda pini boşaltmaktadır.

var gpio = require("rpi-gpio");

var intervalId;

var durationId;

var gpioPin = 7;

gpio.setup(gpioPin, gpio.DIR_OUT, function(err) {

    var on = 1;

    console.log('GPIO pin '+gpioPin+' is open. toggling LED every 1000 mS for 10s');

    intervalId = setInterval( function(){

        gpio.write(gpioPin, on, function() { // toggle pin between high (1) and low (0)

            on = (on + 1) % 2;

        });

    }, 1000);

});

durationId= setTimeout( function(){

    clearInterval(intervalId);

    clearTimeout(durationId);

    console.log('10 seconds blinking completed');

    gpio.write(gpioPin, 0, function() { // turn off pin 7

        gpio.destroy(); // then Close pin 7

        process.exit(0); // and terminate the program

    });

}, 10000); // duration in mS

 

Rpi-gpio hakkında daha ayrıntılı bilgi için

https://www.npmjs.org/package/rpi-gpio

 

Yorum ekle