#!/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