Files
little-backup-box-Bram/scripts/gpio
2018-10-11 18:57:23 +01:00

56 lines
1.2 KiB
Bash

#!/bin/bash
# Utility to control the GPIO pins of the Raspberry Pi
# Can be called as a script or sourced so that the gpio
# function can be called directly
function gpio()
{
local verb=$1
local pin=$2
local value=$3
local pins=($GPIO_PINS)
if [[ "$pin" -lt ${#pins[@]} ]]; then
local pin=${pins[$pin]}
fi
local gpio_path=/sys/class/gpio
local pin_path=$gpio_path/gpio$pin
case $verb in
read)
cat $pin_path/value
;;
write)
sudo sh -c "echo $value > $pin_path/value"
;;
mode)
if [ ! -e $pin_path ]; then
sudo sh -c "echo $pin > $gpio_path/export"
fi
sudo sh -c "echo $value > $pin_path/direction"
;;
state)
if [ -e $pin_path ]; then
local dir=$(cat $pin_path/direction)
local val=$(cat $pin_path/value)
echo "$dir $val"
fi
;;
clean)
sudo sh -c "echo 0 > $pin_path/value"
sudo sh -c "echo $pin > $gpio_path/unexport"
;;
esac
}
# Just invoke our function if the script is called directly
if [ "$BASH_SOURCE" == "$0" ]; then
gpio $@
fi