gpio
Version, currently 1.1.35 versions
github.com/spider-gazelle/gpio.cr
crystal lang bindings for linux gpiod
3 stars
3 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
gpio:
github: spider-gazelle/gpio.cr
version: ~> 1.1.3Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- Stephen von Takach
Dependencies
This version declares no dependencies.
README
gpio
bindings for linux gpiod, a user space interface for general purpose IO control
Installation
ensure the development dependencies are installed: sudo apt install libgpiod-dev
-
Add the dependency to your
shard.yml:dependencies: gpio: github: spider-gazelle/gpio.cr -
Run
shards install
Usage
You can list the various chips available on a system by running gpioinfo this will list chips and IO line details.
require "gpio"
GPIO.default_consumer = "my app"
all_chips = GPIO::Chip.all
# or if you know the name
chip = GPIO::Chip.new "gpiochip0"
chip.lines
# take control of a line and set it's state
line = chip.line(5)
line.name
line.request_output
line.set_high
line.high? # => true
sleep 0.5
line.set_low
line.high? # => false
# release the line once finished using
# this will also happen on garbage collection
line.release
You can also configure the line for input and wait for input events to occur
require "gpio"
GPIO.default_consumer = "my app"
chip = GPIO::Chip.new "gpiochip0"
line = chip.line 0
# blocks here until this line is released
# so you might want to do this in a spawn etc
line.on_input_change do |input_is|
case input_is
in .rising?
puts "input is high"
in .falling?
puts "input is low"
end
end
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
1.1.3- Tagged
- Jan 6, 2025
- Commit
c0ac396b8788- Indexed
- yes
Dependents
Repository
github.com/spider-gazelle/gpio.cr
Metadata
- Created
- Aug 18, 2026
- Updated
- Sep 26, 2026
- Synced
- Sep 26, 2026
- Versions
- 5