Project

raspi-gpio

0.01
No release in over 3 years
Low commit activity in last 3 years
A simple and light interface to interact with GPIO pins of the Raspberry Pi.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme
banner

raspi-gpio-rb

🔌 A simple and light interface to interact with GPIO pins of the Raspberry Pi.

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.

  • 📌 Requirements
  • 🔧 Setup
    • Quick installation
    • Gemfile
    • Build
  • ⌨ Basic interactions
    • Defining a pin
    • Reading pin's value
    • Outputing a value
  • 🔐 License

📌 Requirements

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

🔧 Setup

Quick installation

If you want to quickly test the library, you can install it using the install command of Ruby Gem.

gem install raspi-gpio

Gemfile

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

Build

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

⌨ Basic interactions

First of all, we must include the library in our project. That can be achieved really easily with the require keyword.

require 'raspi-gpio'

# ...

Defining a pin

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)

Reading pin's value

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

Outputing a value

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

🔐 License

See the license file.