Skip to content

Instantly share code, notes, and snippets.

@misza222
Created March 3, 2014 17:23
Show Gist options
  • Save misza222/9329965 to your computer and use it in GitHub Desktop.
Save misza222/9329965 to your computer and use it in GitHub Desktop.
Driving LED on Intel Galileo with push button
var fs = require('fs');
var button_gpio = 17; // maps to digital PIN5 on the board
var led_gpio = 27; // maps to digital PIN7
var fileOptions = {encoding: 'ascii'};
var exportGpio = function(gpio_nr) {
fs.writeFile('/sys/class/gpio/export', gpio_nr, fileOptions, function (err) {
if (err) { console.log("Couldn't export %d, probably already exported.", gpio_nr); }
});
};
var setGpioDirection = function(gpio_nr, direction) {
fs.writeFile("/sys/class/gpio/gpio" + gpio_nr + "/direction", direction, fileOptions, function (err) {
if (err) { console.log("Could'd set gpio" + gpio_nr + " direction to " + direction + " - probably gpio not available via sysfs"); }
});
}
var setGpioIn = function(gpio_nr) {
setGpioDirection(gpio_nr, 'in');
}
var setGpioOut = function(gpio_nr) {
setGpioDirection(gpio_nr, 'out');
}
// pass callback to process data asynchroniously
var readGpio = function(gpio_nr, callback) {
var value;
fs.readFile("/sys/class/gpio/gpio" + gpio_nr + "/value", fileOptions, function(err, data) {
if (err) { console.log("Error reading gpio" + gpio_nr); }
value = data;
callback(data);
});
return value;
};
var writeGpio = function(gpio_nr, value) {
fs.writeFile("/sys/class/gpio/gpio" + gpio_nr + "/value", value, fileOptions, function(err, data) {
if (err) { console.log("Writing " + gpio_nr + " " + value); }
});
};
exportGpio(led_gpio);
exportGpio(button_gpio);
setGpioOut(led_gpio);
setGpioIn(button_gpio);
// repeat reading/writing in a loop
setInterval(function() {
readGpio(button_gpio, function(data) {
writeGpio(led_gpio, data);
});
}, 1000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment