rpigpior
allows the R programming language access to the Raspberry Pi GPIO using libgpiod. Because libgpiod is already included in Raspbian, there is nothing else to install.
rpigpior
provides these tools:
-
is.rpi
- Returns TRUE if this code is running under Raspbian -
rpi_get
- Returns the value of a board level pin (1-40) or an error if the pin isn’t a data line (3.3v, 5v, or GROUND) -
rpi_set
- Sets a pin to on or off -
rpi_monitor
- watches a pin for a number of rising or falling events -
rpi_pwm
- provides diagnostics and support for hardware pulse width modulation -
rpi_i2c_get
- retrieve a value from an i2c connection -
rpi_i2c_set
- set an i2c register to a value
Installation
rpigpior
is hosted on github. Until it arrives at cran, you can install the development version of rpigpior from GitHub with:
Most documentation will tell you to use devtools, but install.packages("devtools")
on a Raspberry Pi is an onerous task.
However…if you installed R on your Raspberry Pi using r4pi, you can use devtools just like normal.
# Start R with "sudo R" to install packages
# install.packages("devtools")
# You might want to switch back to non-admin R
library(devtools)
install_github("mnr/rpigpior")
Once you’ve installed, use library
just like any other R package:
Reading a pin
If you connect a switch to board pin 40, this code will read it:
library(rpigpior)
rpi_get(40) # reads board pin 40
rpi_get(c(7,40)) # reads board pins 7 and 40
> GPIO004 GPIO21
0 1
That assumes the switch to board pin 40 is “pushed” or closed. By the way, there is a diagram of this located in the articles section of the website (as identified in the package description)
Turning pins on and off
If you have a LEDs connected to board pin 19, 21, and 23, this code will turn them on, then one of them off, then all of them off
Citation:
citation("rpigpior")
#>
#> To cite rpigpior in publications use:
#>
#> Niemann-Ross M (2024). "rpigpior: Provides R with Access to the
#> Raspberry Pi." <https://mnr.github.io/rpigpior/>.
#>
#> A BibTeX entry for LaTeX users is
#>
#> @Misc{Article,
#> url = {https://mnr.github.io/rpigpior/},
#> author = {Mark Niemann-Ross},
#> title = {rpigpior: Provides R with Access to the Raspberry Pi},
#> year = {2024},
#> }