rpi_gpio is a Dart package for accessing the Raspberry Pi GPIO pins.
The gpio_pins library provides Pin objects
for accessing the various General Purpose I/O pins on the Raspberry Pi.
WiringPiGPIO provides a low level API
for accessing the GPIO pins on the Raspberry Pi
using the WiringPi library.
WiringPiGPIO accesses the GPIO pins using a native library written
in C and built on top of the wiringPi library.
For security reasons, authors cannot publish binary content
to pub.dartlang.org, so there are some extra
steps necessary to compile the native library on the RPi before this package
can be used. These two steps must be performed when you install and each time
you upgrade the rpi_gpio package.
- Activate the rpi_gpio package using the
pub global command.
pub global activate rpi_gpio
- From your application directory (the application that references
the rpi_gpio package) run the following command to build the native library
pub global run rpi_gpio:build_lib
pub global activate
makes the Dart scripts in the rpi_gpio/bin directory runnable
from the command line.
pub global run
rpi_gpio:build_lib runs the rpi_gpio/bin/build_lib.dart
program which in turn calls the build_lib script
to compile the native librpi_gpio_ext.so library for the rpi_gpio package.
A read pins example demonstrates reading
the current value for multiple pins
using the high level gpio_pins library.
A second read pins example
demonstrates mocking the hardware so that the logic can be run and tested
on platforms other than the Raspberry Pi.
A blinking LED example
and a motor driver example
demonstrate using the high level gpio_pins library.
A second blinking LED
demonstrates using the low level WiringPiGPIO API.
The value of GPIO pins can be tracked over time
- BREAKING CHANGES so that the rpi_gpio package much more closely matches
fletch gpio package
- Removed GpioHardware.pinMode in favor of GPIO.setMode
- Removed GpioHardware.digitalRead in favor of GPIO.getPin
- Removed GpioHardware.digitalWrite in favor of GPIO.setPin
- Removed Mode.pulsed in favor of Mode.output and pulseWidth
- Removed GpioHardware.enableInterrupt in favor of RpiGPIO.setTrigger
- Removed PWM (Pulse Width Modulation) support for pins other than pin 1
- Removed top level input, output, pulsed const
- Removed top level pullup, pulldown, pullOff const
- Removed Gpio.pin method in favor of top level pin function
- Removed RpiGPIO.gpioNum and Pin.gpioNum in favor of RpiGPIO.description
- Moved classes similar to fletch gpio package into gpio.dart library
- Moved Pin and related code into new gpio_pins.dart library
- Renamed PinMode to Mode
- Renamed PinPull to Pull
- Renamed GpioException to GPIOException
- Renamed GpioHardware to RpiGPIO
- Renamed RpiHardware to WiringPiGPIO
- Renamed MockHardware to MockGPIO
- Renamed RecordingHardware to RecordingGPIO
- Renamed RpiGPIO.pullUpDnControl to setPull
- Renamed RpiGPIO.pwmWrite to setPulseWidth
- Changed Pin.events from getter to a method that takes an optional parameter
- Changed Pin.value and PinEvent.value from int to bool
- Changed Gpio.hardware= to Pin.gpio=
- Added optional RpiGPIO.description method
- Added Mode.other to match fletch gpio package
- Added abstract GPIO class to match fletch gpio package
- Update wiringPi native code for Pi v2
- Add top level pin function and deprecated Gpio.pin method
- Add gpioNum method to return GPIO number for pin
- Rework isRaspberryPi to check /etc/os-release
- Rework and simplify examples
- Fix bug to track both rising and falling interrupt edge
- Fix bug that prevented application from completing normally when interrupts were used
- Switch tests to use package:test rather than package:unittest
- Fix read, polling, and interrupts examples
to wait for rpi.loadLibrary() before proceeding.
- Support for interrupts via Pin.events
- Rename pin to pinNum
- Improve build native library script
- Rename repo to danrubel/rpi_gpio.dart
- Read and write digital values
- Hardware pulse width modulation on pin 1
- Software simulated pwm for other pins (work in progress)
1. Depend on it
Add this to your package's pubspec.yaml file:
2. Install it
You can install packages from the command line:
$ pub get
Alternatively, your editor might support
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
This package version is not analyzed, because it is more than two years old.
Check the latest stable version for its analysis.