You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
Markdown
52 lines
1.2 KiB
Markdown
# GPIO Via Golang
|
|
|
|
Ok, we are going to try the golang periph library with this.
|
|
|
|
## Permissions
|
|
|
|
The user running this binary must have `gpio` permissions on the Raspberry Pi.
|
|
|
|
|
|
Check if you can read the device without being root
|
|
|
|
```bash
|
|
head -c 1 /dev/gpiomem > /dev/null && echo "Success" || echo "Access Denied"
|
|
```
|
|
|
|
If you get access denied then we can create a gpio user group with udev runs that grant permissions to the /dev/gpiomem device.
|
|
|
|
```bash
|
|
sudo groupadd gpio
|
|
sudo usermod -aG gpio $USER
|
|
```
|
|
|
|
Create a udev rules file
|
|
```bash
|
|
sudo vim /etc/udev/rules.d/99-gpio.rules
|
|
```
|
|
|
|
Include the following:
|
|
```txt
|
|
# Access to the memory-mapped GPIO
|
|
SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
|
|
|
|
# Access to the gpiochip character devices (periph.io uses these)
|
|
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GROUP="gpio", MODE="0660"
|
|
```
|
|
|
|
|
|
```bash
|
|
sudo udevadm control --reload-rules && sudo udevadm trigger
|
|
```
|
|
|
|
|
|
## Periph Library
|
|
|
|
The Periph library is broken up into a number of sub libraries that are imported as needed. This allows the developers to decouple board implementations from drivers and devices.
|
|
|
|
|
|
```bash
|
|
go get periph.io/x/host/v3
|
|
go get periph.io/x/conn/v3
|
|
```
|