Project

pigpio_ffi

0.0
No release in over a year
Use your Raspberry Pi GPIO pins in Ruby. This gem uses FFI to provide Ruby bindings for the pigpio C library on compatible Raspberry Pi Devices.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
 Project Readme

pigpio_ffi 0.1.0

This gem uses FFI to provide Ruby method bindings for the pigpio C library. This makes the Raspberry Pi GPIO pins usable in Ruby.

NOTE: This is for Ruby on Linux, not for the Raspberry Pi Pico (W).

Installation

Install pigpio with:

  sudo apt-get install pigpio

Install this gem as root:

  sudo gem install pigpio_ffi

Ruby scripts need to be run as root:

  sudo ruby my_script.rb

Example

require 'pigpio_ffi'

PiGPIO.gpioInitialise
PiGPIO.gpioSetMode(4, 1)

10.times do
  PiGPIO.gpioWrite(4, 1)
  sleep 0.5
  PiGPIO.gpioWrite(4, 0)
  sleep 0.5
end

# This must be called or the script will block forever.
PiGPIO.gpioTerminate

This will blink an LED attached to GPIO 4, every half second, for 10 seconds total.

Mapped Features

  • Basic GPIO (set mode, read, write, alert on change)
  • PWM (bitbang)
  • Servo (bitbang)
  • Waves (infrared and other protocols)
  • I2C (still untested)
  • SPI (still untested)

Documentation

As much as possible, the class methods of PiGPIO follow the function names and argument formats of the pigpio C functions. These can be found in its documentation, located here.

Exceptions:

  • Functions where one argument is a callback function. These translate to Ruby methods that take a block.
  • Functions that take arrays and their length as separate arguments. These translate to Ruby methods where the length argument is omitted.
  • Not all functions are mapped. I left out anything Ruby (or an existing gem) can already do, or any complex data processing that would be easier in Ruby anyway.

TODO: List methods with different interfaces, and unmapped methods here.