sunxi_gpio gem
Native Ruby Extension to work with Sunxi GPIO. This gem is currently beta. It supports writing, reading, watching.
Installtion
gem install sunxi_gpio
Usage
Simple writing
require 'sunxi_gpio/pin'
SunxiGPIO::Pin.open
pin = SunxiGPIO::Pin.new(pin: :PB2, direction: :out)
pin.on
sleep 1
pin.off
SunxiGPIO::Pin.close
Simple reading
require 'sunxi_gpio/pin'
SunxiGPIO::Pin.open
pin = SunxiGPIO::Pin.new(pin: :PB2, direction: :in)
10.times do
value = pin.read
puts "result: #{value}"
sleep 1
end
SunxiGPIO::Pin.close
Watch
Watches the pin going to status in parameter and executes the block. Block will only be triggered with a status change is seen.
require 'sunxi_gpio/pin'
SunxiGPIO::Pin.open
pin = SunxiGPIO::Pin.new(pin: :PB2, direction: :out)
pin.watch(SunxiGPIO::PinValues::GPIO_LOW) do
puts "I am in the loop with value #{pin.read}"
end
SunxiGPIO::Pin.close
Enable pull for a pin
When using pins as input, you can use internal resistors to pull the pin up or pull down. This is important if you use open-collector sensors which have floating output in some states. Pull can be used as :up or :down -depending of the type of layout.
SunxiGPIO::Pin.open
pin = SunxiGPIO::Pin.new(pin: :PI15, direction: :in, pull: :up)
value=pin.read
SunxiGPIO::Pin.close