Gordons Projects

--> Projects Top-Level GIT

Initial GIT creation for the Raspberry Ladder project
authorGordon Henderson <gordon@pi2.drogon.net>
Tue, 23 Oct 2012 20:20:33 +0000 (21:20 +0100)
committerGordon Henderson <gordon@pi2.drogon.net>
Tue, 23 Oct 2012 20:20:33 +0000 (21:20 +0100)
ladderTest.sh [new file with mode: 0755]
tuxx.sh [new file with mode: 0755]

diff --git a/ladderTest.sh b/ladderTest.sh
new file mode 100755 (executable)
index 0000000..fb15405
--- /dev/null
@@ -0,0 +1,143 @@
+#!/bin/bash
+
+# ladderTest:
+#      Simple test program for the Raspberry Ladder board.
+#
+#      Gordon Henderson, October 2012
+
+# Our lamps:
+#      (These are wiringPi pin numbers)
+
+     red1=0
+     red2=1
+  yellow1=2
+  yellow2=3
+   green1=4
+   green2=5
+    blue1=6
+    blue2=7
+
+   green0=8
+     red0=9
+
+# The buttons
+
+button1=11
+button2=10
+button3=12
+button4=13
+
+
+# ladderSetup:
+#      Generic initialisation code for the Raspberrt Ladder board.
+#      Program the LEDs and buttons.
+#######################################################################
+
+ladderSetup ()
+{
+  for i in 0 1 2 3 4 5 6 7 8 9 ; do
+    gpio write $i 0
+    gpio mode $i out
+  done
+
+  for i in $button1 $button2 $button3 $button4 ; do
+    gpio mode $i in
+    gpio mode $i up
+  done
+}
+
+
+
+# buttonTest:
+#      Simple test routine - wait for a button, then light
+#      some LEDs
+########################################################################
+
+buttonCheck1 ()
+{
+  if [ `gpio read $1` = 0 ]; then
+    gpio write $2 1
+    gpio write $3 1
+  else
+    gpio write $2 0
+    gpio write $3 0
+  fi
+}
+
+buttonTest ()
+{
+  while true; do
+    buttonCheck1 $button1 $blue1   $blue2
+    buttonCheck1 $button2 $green1  $green2
+    buttonCheck1 $button3 $yellow1 $yellow2
+    buttonCheck1 $button4 $red1    $red2
+
+    if [ `gpio read $button1`.`gpio read $button2`.`gpio read $button3`.`gpio read $button4` = '0.0.0.0' ]; then
+      break ;
+    fi
+
+  done
+}
+
+
+# pause:
+#      Wait for enter to be pressed.
+########################################################################
+
+pause ()
+{
+  echo ""
+  echo -n "Press the ENTER key to continue... "
+  read a
+}
+
+########################################################################
+# The main program
+########################################################################
+
+ladderSetup
+
+echo ""
+echo "The Raspberry Ladder test program"
+echo "================================="
+echo ""
+echo "All LEDs should be OFF. Please check."
+echo "If any are on then you need to check for the correct cable location,"
+echo "and any shorts, but do not proceede until all LEDs are OFF at this"
+echo "point."
+pause
+
+for i in `seq 0 9`; do
+  gpio write $i 1
+done
+
+echo "All LEDs should now be ON. Please check."
+echo "If any are off then you need to check for the correct cable location,"
+echo "and any shorts, but do not proceede until all LEDs are ON at this"
+echo "point."
+pause
+
+for i in `seq 0 9`; do
+  gpio write $i 0
+done
+
+echo ""
+echo "The LEDs will now light in pairs when you press the button next to each"
+echo "pair of LEDs. They still stay lit for as long as you keep the button"
+echo "pressed."
+echo ""
+echo -n "Press all FOUR buttons together to exit the test... "
+
+buttonTest
+
+for i in `seq 0 9`; do
+  gpio write $i 0
+done
+
+echo ""
+echo ""
+echo "Congratulations! If the LEDs worked OK, and the buttons were fine, then"
+echo "your Raspberry Ladder board is fully functional."
+echo ""
+
+exit
diff --git a/tuxx.sh b/tuxx.sh
new file mode 100755 (executable)
index 0000000..118e692
--- /dev/null
+++ b/tuxx.sh
@@ -0,0 +1,184 @@
+#!/bin/bash
+
+# tuxx:
+#      Tux Crossing. A variant on the UK "Pelican" crossing for
+#      pedestrians going over roads.
+#
+#      There is a set of Red, Yellow (sometimes called amber) and
+#      Green traffic lights to control the traffic, and a "Red Man"
+#      and "Green Man" indicators for pedestrians, and a button for
+#      them to push.
+#      Push the button and the lights cycle to Red, then the Green Man
+#      comes on (often with a beeping sound), then afte a short while
+#      the Green man starts to flash, meaning to not start crossing,
+#      and the Yellow traffic light flashes too - meaning that if the
+#      crossing is clear, traffic can pass... Then after a few more seconds
+#      the flashing stops and it revers to Go for traffic and Stop for
+#      pedestrians.
+#
+#      Gordon Henderson, June 2012
+
+# Our lamps:
+#      (These are wiringPi pin numbers)
+
+     red1=0
+     red2=1
+  yellow1=2
+  yellow2=3
+   green1=4
+   green2=5
+
+ greenMan=8
+   redMan=9
+
+# The input buttons
+
+button1=11
+button2=12
+button3=13
+button4=14
+
+
+# ladderSetup:
+#      Generic initialisation code for the Raspberrt Ladder board.
+#      Program the LEDs and buttons.
+#######################################################################
+
+ladderSetup ()
+{
+  echo Setup
+  for i in 0 1 2 3 4 5 6 7 8 9 ; do
+    gpio write $i 0
+    gpio mode $i out
+  done
+
+  for i in 11 12 13 14; do
+    gpio mode $i in
+    gpio mode $i up
+  done
+}
+
+# tuxxSetup:
+#      Initialise the LEDs for the crossing
+#######################################################################
+
+tuxxSetup ()
+{
+  gpio write $green1 1
+  gpio write $green2 1
+  gpio write $redMan 1
+}
+
+
+# waitButton:
+#      Wait for the button to be pressed. Because we have the GPIO
+#      pin pulled high, we wait for it to go low to indicate a push.
+#######################################################################
+
+waitButton ()
+{
+  echo -n "Waiting for button ... "
+  while [ `gpio read $button1` = 1 ]; do
+    sleep 0.1
+  done
+  echo "Got it"
+}
+
+# stopTraffic:
+#      Cycle the traffic lights from Green to Red
+#######################################################################
+
+stopTraffic ()
+{
+  echo -n "Stopping traffic ... "
+  gpio write $green1  0
+  gpio write $green2  0
+  gpio write $yellow1 1
+  gpio write $yellow2 1
+  sleep 2
+  gpio write $yellow1 0
+  gpio write $yellow2 0
+  gpio write $red1    1
+  gpio write $red2    1
+  sleep 2
+  echo "Stopped"
+}
+
+# walk:
+#      Signal the red/green man to walk and when time is up,
+#      start the traffic light sequence to let the traffic move again
+#######################################################################
+
+walk ()
+{
+  echo "Walk now ... "
+  gpio write $redMan   0
+  gpio write $greenMan 1
+  for i in `seq 10 -1 0`; do
+    echo -n $i " "
+    sleep 1
+  done
+  gpio write $red1    0
+  gpio write $red2    0
+  gpio write $yellow1 1
+  gpio write $yellow2 1
+  echo "Walked"
+}
+
+# graceTime:
+#      This is the time when the green man is flashing, and the yellow
+#      traffic light is also flashing - to signal to pedestrians to not
+#      start to cross and to drivers that they can move on if the 
+#      crossing is clear.
+#######################################################################
+
+graceTime ()
+{
+  echo "Grace time ... "
+  for i in `seq 0 7` ; do
+    sleep 0.5
+    gpio write $greenMan 0
+    gpio write $yellow1  0
+    gpio write $yellow2  0
+    sleep 0.5
+    gpio write $greenMan 1
+    gpio write $yellow1  1
+    gpio write $yellow2  1
+  done
+  echo "time up!"
+}
+
+# startTraffic:
+#      Back to the Red Man and Green traffic light
+#######################################################################
+
+startTraffic ()
+{
+  echo "Starting traffic ... "
+  gpio write $greenMan 0
+  gpio write $redMan   1
+  sleep 0.5
+  gpio write $yellow1 0
+  gpio write $yellow2 0
+  gpio write $green1  1
+  gpio write $green2  1
+  echo "Going"
+}
+
+
+#######################################################################
+# The main program
+#      Call our setup routines once, then sit in a loop, waiting for
+#      the button to be pressed then executing the sequence.
+#######################################################################
+
+ladderSetup
+  tuxxSetup
+
+while true; do
+  waitButton
+  stopTraffic
+  walk
+  graceTime
+  startTraffic
+done