odroid-gpio
odroid-gpio is a simple node.js based library to help access the GPIO of the Odroid C1 and Odroid C2.
var gpio = require("odroid-gpio");
gpio.open(16, "output", function(err) { // Open pin 16 for output
gpio.write(16, 1, function() { // Set pin 16 high (1)
gpio.close(16); // Close pin 16
});
});
Pin configuration
You can use the physical numbering:
Requirement: gpio-admin
The GPIO pins require you to be root to access them. That's totally unsafe for several reasons. To get around this problem, you should use the excellent gpio-admin.
Do the following on your raspberry pi:
git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
cd quick2wire-gpio-admin
make
sudo make install
sudo adduser $USER gpio
replaceing $USER your username.
After this, you will need to logout and log back in.
Usage
.open(pinNumber, [options], [callback])
Aliased to .export
Makes pinNumber
available for use.
pinNumber
: The pin number to make available. Remember,pinNumber
is the physical pin number on the Pi.options
: (Optional) Should be a string, such asinput
orinput pullup
. You can specify whether the pin direction should beinput
oroutput
(orin
orout
). You can additionally set the internal pullup / pulldown resistor by sepcifyingpullup
orpulldown
(orup
ordown
). If options isn't provided, it defaults tooutput
. If a direction (input
oroutput
) is not specified (eg. onlyup
), then the direction defaults tooutput
.callback
: (Optional) Will be called when the pin is available for use. May receive an error as the first argument if something went wrong.
.close(pinNumber, [callback])
Aliased to .unexport
Closes pinNumber
.
pinNumber
: The pin number to close. Again,pinNumber
is the physical pin number on the Pi.callback
: (Optional) Will be called when the pin is closed. Again, may receive an error as the first argument.
.setDirection(pinNumber, direction, [callback])
Changes the direction from input
to output
or vice-versa.
pinNumber
: As usual.direction
: Eitherinput
orin
oroutput
orout
.callback
: Will be called when direction change is complete. May receive an error as usual.
.getDirection(pinNumber, [callback])
Gets the direction of the pin. Acts like a getter for the method above.
pinNumber
: As usualcallback
: Will be called when the direction is received. The first argument could be an error. The second argument will either bein
orout
.
.read(pinNumber, [callback])
Reads the current value of the pin. Most useful if the pin is in the input
direction.
pinNumber
: As usual.callback
: Will receive a possible error object as the first argument, and the value of the pin as the second argument. The value will be either0
or1
(numeric).
Example:
gpio.read(16, function(err, value) {
if(err) throw err;
console.log(value); // The current state of the pin
});
.write(pinNumber, value, [callback])
Writes value
to pinNumber
. Will obviously fail if the pin is not in the output
direction.
pinNumber
: As usual.value
: Should be either a numeric0
or1
. Any value that isn't0
or1
will be coerced to be boolean, and then converted to 0 (false) or 1 (true). Just stick to sending a numeric 0 or 1, will you? ;)callback
: Will be called when the value is set. Again, might receive an error.
Misc
- To run tests:
npm install && npm test
where you've got the checkout. - This module was created,
git push
'ed andnpm publish
'ed all from the Raspberry Pi! The Pi rocks!
Inspiration
This lib is inspired by pi-gpio.
MIT License