Today I decided to play a bit with my Raspberry Pi and one of my Relay shields that I have for the Arduino.
I was surprised to see how easy it was to control and read the GPIOs on the Raspberry. So I decided to make it even easier by writing a simple bash script which I use to turn on and off relays from the shield.
This is the script:
#!/bin/bash GPIO=11 if [ $# == 1 ]; then if ! [[ "$1" =~ ^[0-9]+$ ]]; then echo "Error: wrong pin format" echo "Usage: $0 [GPIO]" echo "GPIOs: [0-24]" exit fi GPIO=$1 fi # export GPIO 11 to userspace if it isn't exported already if [ ! -d /sys/class/gpio/gpio${GPIO} ]; then echo "Exporting GPIO $GPIO" echo $GPIO > /sys/class/gpio/export sleep 1 fi if [ "$(</sys/class/gpio/gpio${GPIO}/direction)" != 'out' ]; then echo "Setting GPIO $GPIO to OUT" echo out > /sys/class/gpio/gpio${GPIO}/direction fi if [ "$(</sys/class/gpio/gpio${GPIO}/value)" == 1 ]; then echo "Set GPIO $GPIO OFF" echo 0 > /sys/class/gpio/gpio${GPIO}/value else echo "Set GPIO $GPIO ON" echo 1 > /sys/class/gpio/gpio${GPIO}/value fi
I decided to use GPIO 11 as default, because it is the closest to pin 25(ground). So it was easier to have the wires close to each other.