= raspberry GPIO == gpio pins image:./pic/pi3_gpio.png[] == gpio programming from bash This code sets up pin *21* to be an *output*, sets the pin *high* and *low*. ---- # exports pin to userspace echo "21" > /sys/class/gpio/export # set pin 21 as an output echo "out" > /sys/class/gpio/gpio21/direction # set pin 21 to high echo "1" > /sys/class/gpio/gpio21/value # set pin 21 to low echo "0" > /sys/class/gpio/gpio21/value ---- This code sets up pin *11* to be an *input*, then reads the value of the input. ---- # exports pin to userspace echo "11" > /sys/class/gpio/export # set pin 11 as an output echo "in" > /sys/class/gpio/gpio11/direction # get the value of pin 11 cat /sys/class/gpio/gpio11/value ---- == sample code ---- #!/bin/sh pin1="11" pin2="21" init() { pinnr="$1" state="$2" if test -d /sys/class/gpio/gpio${pinnr}/ then : else { echo ". init ${pinnr}" echo "${pinnr}" > /sys/class/gpio/export echo "${state}" > /sys/class/gpio/gpio${pinnr}/direction } fi } init ${pin1} in init ${pin2} out while : do { if cat /sys/class/gpio/gpio${pin1}/value | grep -q "1" then echo "1" | tee /sys/class/gpio/gpio${pin2}/value else echo "0" | tee /sys/class/gpio/gpio${pin2}/value fi sleep 0.5 } done exit 0 ---- == rswitch echo "13" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio21/direction cat /sys/class/gpio/gpio13/value vi /usr/lib/systemd/system/rswitch.service ---- # [Unit] Description="rswitch exec" [Service] ExecStart=/opt/rswitch/bin/rswitch ---- vi /usr/lib/systemd/system/rswitch.path ---- # [Unit] Description="rswitch monitor" [Path] PathModified=/sys/class/gpio/gpio13/ Unit=rswitch.service [Install] WantedBy=multi-user.target ---- systemctl daemon-reload systemctl enable --now rswitch.path rswitch.service systemctl status rswitch.path rswitch.service ---- ● rswitch.path - "rswitch monitor" Loaded: loaded (/lib/systemd/system/rswitch.path; enabled; vendor preset: enabled) Active: active (waiting) since Wed 2023-08-30 00:17:06 CEST; 1s ago Triggers: ● rswitch.service Aug 30 00:17:06 srv006.d14.net systemd[1]: Started "rswitch monitor". ● rswitch.service - "rswitch exec" Loaded: loaded (/etc/systemd/system/rswitch.service; static) Active: inactive (dead) since Wed 2023-08-30 00:17:06 CEST; 1s ago TriggeredBy: ● rswitch.path Process: 2963 ExecStart=/opt/rswitch/bin/rswitch (code=exited, status=0/SUCCESS) Main PID: 2963 (code=exited, status=0/SUCCESS) CPU: 26ms Aug 30 00:17:06 srv006.d14.net systemd[1]: Started "rswitch exec". Aug 30 00:17:06 srv006.d14.net systemd[1]: rswitch.service: Succeeded. ----