DIO - Digital Input/Output
The digital inputs and outputs can be controlled / read or set via GPIOs.
There are multiple ways on how to access the GPIOs of the Raspberry Pi, one way is by using the so called sysfs
through /sys/class/gpio
or another by using a library like pigpio
.
Below both options are shown. The sysfs option can be used out of the box, while the pigpio library has to be installed first.
Overview of available IOs
Four digital inputs/outputs (either or) are available. If used as output the state can be read back from the associated input.
The table below shows number and function of the available GPIOs.
Name | direction | Accessible via | Connector |
---|---|---|---|
dout1 | output | GPIO44 |
X19_DIO1 |
din1 | input | GPIO45 |
X19_DIO1 |
dout2 | output | GPIO35 |
X19_DIO2 |
din2 | input | GPIO43 |
X19_DIO2 |
dout3 | output | GPIO34 |
X19_DIO3 |
din3 | input | GPIO31 |
X19_DIO3 |
dout4 | output | GPIO29 |
X19_DIO4 |
din4 | input | GPIO28 |
X19_DIO4 |
Using sysfs to access the GPIOs
Go to the path
pi@raspberry:~ $ cd /sys/class/gpio
Make a GPIO accessible
As an example we use GPIO44 which is digital output 1 (DO1) on the Pi-Tron. Writing the number of a GPIO to the export
file in /sys/class/gpio
makes the GPIO accessible.
pi@raspberry:~ $ echo "44" > export
Changing the direction of a GPIO to input or output
For our example we switch the direction of GPIO44 to output so we can turn DO1 on and off.
echo "out" > gpio44/direction
Switching a GPIO on
Writing a 1 to the value property of a GPIO turns the GPIO on. For our example, we write a 1 to GPIO44 to turn it and thus DO1 on.
echo "1" > gpio44/value
Switching a GPIO off
Writing a 0 to the value property of a GPIO turns the GPIO off. For our example, we write a 0 to GPIO44 to turn it and thus DO1 off.
echo "0" > gpio44/value
Using the pigpio library
Install pigpio library
sudo apt update
sudo apt install pigpio
Start the pigpio service
The pigpio library cannot work on its own, it uses an accompanying service program called pigpiod. This service has to be started first, before any access to the GPIOs is possible.
sudo systemctl start pigpiod
If the daemon should start every time the Raspberry Pi/Pi-Tron starts, the following command can be used to enable the services automatic start.
sudo systemctl enable pigpiod
Changing the direction of a GPIO to input or output
To make changes to the GPIOs from the console the program pigs has to be used in order to be able to turn GPIOs on and off.
For our example we switch the direction of GPIO44 to output so we can turn DO1 on and off.
pigs modes 44 w
Switching a GPIO on
Writing a 1 to a GPIO number with pigs turns the GPIO on. For our example, we write a 1 to GPIO44 to turn it and thus DO1 on.
pigs w 44 1
Switching a GPIO off
Writing a 0 to a GPIO number with pigs turns the GPIO off. For our example, we write a 0 to GPIO44 to turn it and thus DO1 off.
pigs w 44 0
Commands to control "pigpiod"
pigpio-daemon turn on automatic start
sudo systemctl enable pigpiod
Deactivate automatic start
sudo systemctl disable pigpiod
pigpio-Daemon manual start:
sudo systemctl start pigpiod
pigpio-Daemon stop:
sudo systemctl stop pigpiod
Show status of the pigpio-Daemon:
sudo systemctl status pigpiod