#!/bin/bash # Our lamps: red=0 yellow=1 green=2 redMan=3 greenMan=4 # The input button button=8 # setup: # Program the GPIO correctly and initialise the lamps ####################################################################### setup () { echo Setup for i in 0 1 2 3 4 ; do gpio mode $i out ; done for i in 0 1 2 3 4 ; do gpio write $i 0 ; done gpio write $green 1 gpio write $redMan 1 gpio mode $button in } waitButton () { echo -n "Waiting for button ... " while [ `gpio read $button` = 1 ]; do sleep 0.1 done echo "Got it" } stopTraffic () { echo -n "Stopping traffic ... " gpio write $green 0 gpio write $yellow 1 sleep 2 gpio write $yellow 0 gpio write $red 1 sleep 2 echo "Stopped" } walk () { echo "Walk now ... " gpio write $redMan 0 gpio write $greenMan 1 sleep 10 gpio write $red 0 gpio write $yellow 1 echo "Walked" } graceTime () { echo "Grace time ... " for i in `seq 0 7` ; do sleep 0.5 gpio write $greenMan 0 gpio write $yellow 0 sleep 0.5 gpio write $greenMan 1 gpio write $yellow 1 done echo "time up!" } startTraffic () { echo "Starting traffic ... " gpio write $greenMan 0 gpio write $redMan 1 sleep 0.5 gpio write $yellow 0 gpio write $green 1 echo "Going" } # The main program setup while true; do waitButton stopTraffic walk graceTime startTraffic done