Skip to content

Instantly share code, notes, and snippets.

@jadonk
Created August 19, 2011 03:59
Show Gist options
  • Select an option

  • Save jadonk/1156001 to your computer and use it in GitHub Desktop.

Select an option

Save jadonk/1156001 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
var fs = require('fs');
var gpioDirectory = "/sys/class/gpio";
var pins = {};
pins["seg7Data"] = { gpio: "145" }; // header pin 10
pins["seg7Clock"] = { gpio: "162" }; // header pin 14
pins["seg7Latch"] = { gpio: "161" }; // header pin 16
pins["ledData"] = { gpio: "158" }; // header pin 12
pins["ledClock"] = { gpio: "159" }; // header pin 18
var pinsInit = function() {
for(var i in pins) {
console.log("# Enabling " + i);
write(gpioDirectory + "/export", pins[i].gpio);
write(gpioDirectory + "/gpio" + pins[i].gpio + "/direction", "out");
pins[i].value = "" + gpioDirectory + "/gpio" + pins[i].gpio + "/value";
}
};
var write = function(file, data) {
console.log("echo " + data + " > " + file);
fs.writeFile(file, data);
};
var writeList = function(list, delay, callback) {
var element = list.shift();
write(element.file, element.data);
if(list[0]) {
setTimeout(function () {
writeList(list, delay, callback);
}, delay);
} else {
callback();
}
}
pinsInit();
var seg7WriteChar = function(char) {
//
// --A--
// | |
// D E
// | |
// --B--
// | |
// F G
// | |
// --C-- H
//
var chars = {
// ABCDEFGH
'0': "10111110",
'1': "00001010",
'2': "11101100",
}
var segments = "00000000";
var list = [];
if(chars[char]) {
segments = chars[char];
}
list.push({ file: pins.seg7Latch.value, data: '0' });
for(var i = 0; i < 8; i++) {
list.push({ file: pins.seg7Clock.value, data: '0' });
list.push({ file: pins.seg7Data.value, data: segments.substr(i, 1) });
list.push({ file: pins.seg7Clock.value, data: '1' });
}
list.push({ file: pins.seg7Clock.value, data: '0' });
list.push({ file: pins.seg7Latch.value, data: '1' });
list.push({ file: pins.seg7Latch.value, data: '0' });
writeList(list, 100, function() {
console.log("# Done with character '" + char + "'");
});
}
var seg7Write = function(string, delay) {
var nextString = string;
seg7WriteChar(string, function() {
setTimeout(function() { seg7Write(nextString, delay) }, delay);
});
}
//seg7Write("0123456789 ");
seg7WriteChar('0', function() {});
var ledColorWrite = function(color) {
var done = 0;
var ledList = [];
for(var j = 0; j < 3; j++) {
for(var i = 0; i < 9; i++) {
var k = color[j] & (1 << i);
ledList.push( { file: pins.ledData.value, data: (j ? "1" : "0") } );
ledList.push( { file: pins.ledClock.value, data: "0" } );
ledList.push( { file: pins.ledClock.value, data: "1" } );
}
}
writeList(ledList, 10, function() {
console.log("# Done setting LED");
});
};
//ledColorWrite([0, 0, 0]);
//ledColorWrite([1, 0, 0]);
//ledColorWrite([0, 1, 0]);
//ledColorWrite([0, 0, 1]);
//ledColorWrite([0, 0, 0]);
# Enabling seg7Data
echo 145 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio145/direction
# Enabling seg7Clock
echo 162 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio162/direction
# Enabling seg7Latch
echo 161 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio161/direction
# Enabling ledData
echo 158 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio158/direction
# Enabling ledClock
echo 159 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio159/direction
echo 0 > /sys/class/gpio/gpio161/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio145/value
echo 1 > /sys/class/gpio/gpio162/value
echo 0 > /sys/class/gpio/gpio162/value
echo 1 > /sys/class/gpio/gpio161/value
echo 0 > /sys/class/gpio/gpio161/value
# Done with character '0'
root@beagleboard:~# mkdir /debug
root@beagleboard:~# mount -t debugfs none /debug
root@beagleboard:~# cat /debug/gpio
.
.
.
GPIOs 128-159, gpio:
gpio-145 (sysfs ) out lo
gpio-147 (HSUSB1 reset ) out hi
gpio-149 (beagleboard::usr1 ) out hi
gpio-150 (beagleboard::usr0 ) out hi
gpio-158 (sysfs ) out lo
gpio-159 (sysfs ) out lo
.
.
.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment