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 Raspbianrpi_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 offrpi_monitor
- watches a pin for a number of rising or falling eventsrpi_pwm
- provides diagnostics and support for hardware pulse width modulationrpi_i2c_get
- retrieve a value from an i2c connectionrpi_i2c_set
- set an i2c register to a value
rpigpior
is hosted on github. Until it arrives at cran, you can
install the development version of rpigpior from
GitHub with:
library(remotes)
remotes::install_github("mnr/rpigpior")
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:
library(rpigpior)
It’s helpful to check if your code is running on a Raspberry Pi.
if ( is.rpi() ) {
print("Yes, this is a RPi")
} else {
print ("No, this is not a RPi")
}
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)
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
library(rpigpior)
toggleThese <- c(19,21,23)
rpi_set(toggleThese,1)
Sys.sleep(1)
rpi_set(toggleThese, c(1,0,1))
Sys.sleep(1)
rpi_set(toggleThese, 0)
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},
#> }