This library uses /sys/class/gpio interface to communicate with GPIO pins. It doesn't require super-user rights, therefore everyone on the OS can use it.
This library requires an updated version of Ruby, and a Raspberry Pi with Raspbian installed on.
The raspi-gpio library has been tested on models : 3B
If you want to quickly test the library, you can install it using the install
command of Ruby Gem.
gem install raspi-gpio
If you setup the library for medium or big projects, it's recommended to write it in your Gemfile.
gem 'raspi-gpio', '~> 1.0'
After, use again the install
command, but without the package name.
gem install
You can also compile it by yourself. First, clone the repository.
git clone https://github.com/exybore/raspi-gpio-rb.git # HTTP
git@github.com:exybore/raspi-gpio-rb.git # SSH
Then, build the gemspec file to create the gem.
gem build ./raspi-gpio.gemspec
Finally, install it on your system.
gem install ./raspi-gpio-1.x.x.gem
First of all, we must include the library in our project. That can be achieved really easily with the require
keyword.
require 'raspi-gpio'
# ...
A GPIO pin is defined with three things :
- a pin number (the number of total pins depend on your Raspberry model)
- a direction (in or out)
- a value (low or high)
The GPIO
class is the way the library provides to register our pins. The initialization method takes 2 arguments :
- the pin number to use
- the direction (default : out)
We can use the OUT
and IN
constants for the direction.
pin = GPIO.new(9, OUT)
The direction of a pin can be changed at any point of the code using the set_mode
method.
pin.set_mode(IN)
To read the pin value, we're going to use the get_value
method.
pin.get_value
# Example output : 0
- If the pin direction is
IN
, it'll read the power that goes into it - If it's in
OUT
, it'll output the value that we defined earlier
To set the value of a pin, the GPIO class has a set_value
method that can take two values :
- 0, no power (low)
- 1, maximum power (high)
The LOW
and HIGH
constants are here to let us set them while keeping code clarity.
# Imagine that a LED is connected to our pin.
pin.set_value(HIGH)
# Output : the LED is on
pin.set_value(LOW)
# Output : the LED is off
See the license file.