Gordons Projects

--> Projects Top-Level GIT

Fixed oopsie in ladderSetup.sh
[ladder] / tuxx.sh
1 #!/bin/bash
2
3 # tuxx:
4 #       Tux Crossing. A variant on the UK "Pelican" crossing for
5 #       pedestrians going over roads.
6 #
7 #       There is a set of Red, Yellow (sometimes called amber) and
8 #       Green traffic lights to control the traffic, and a "Red Man"
9 #       and "Green Man" indicators for pedestrians, and a button for
10 #       them to push.
11 #       Push the button and the lights cycle to Red, then the Green Man
12 #       comes on (often with a beeping sound), then afte a short while
13 #       the Green man starts to flash, meaning to not start crossing,
14 #       and the Yellow traffic light flashes too - meaning that if the
15 #       crossing is clear, traffic can pass... Then after a few more seconds
16 #       the flashing stops and it revers to Go for traffic and Stop for
17 #       pedestrians.
18 #
19 #       Gordon Henderson, June 2012
20
21 . ladderSetup.sh
22
23 # tuxxSetup:
24 #       Initialise the LEDs for the crossing
25 #######################################################################
26
27 tuxxSetup ()
28 {
29   gpio write $green1 1
30   gpio write $green2 1
31   gpio write $redMan 1
32   gpio write $greenMan 0
33 }
34
35
36 # waitButton:
37 #       Wait for the button to be pressed. Because we have the GPIO
38 #       pin pulled high, we wait for it to go low to indicate a push.
39 #######################################################################
40
41 waitButton ()
42 {
43   echo -n "Waiting for button ... "
44   while [ `gpio read $button1` = 1 ]; do
45     sleep 0.1
46   done
47   echo "Got it"
48 }
49
50 # stopTraffic:
51 #       Cycle the traffic lights from Green to Red
52 #######################################################################
53
54 stopTraffic ()
55 {
56   echo -n "Stopping traffic ... "
57   gpio write $green1  0
58   gpio write $green2  0
59   gpio write $yellow1 1
60   gpio write $yellow2 1
61   sleep 2
62   gpio write $yellow1 0
63   gpio write $yellow2 0
64   gpio write $red1    1
65   gpio write $red2    1
66   sleep 2
67   echo "Stopped"
68 }
69
70 # walk:
71 #       Signal the red/green man to walk and when time is up,
72 #       start the traffic light sequence to let the traffic move again
73 #######################################################################
74
75 walk ()
76 {
77   echo "Walk now ... "
78   gpio write $redMan   0
79   gpio write $greenMan 1
80   for i in `seq 10 -1 0`; do
81     echo -n $i " "
82     sleep 1
83   done
84   gpio write $red1    0
85   gpio write $red2    0
86   gpio write $yellow1 1
87   gpio write $yellow2 1
88   echo "Walked"
89 }
90
91 # graceTime:
92 #       This is the time when the green man is flashing, and the yellow
93 #       traffic light is also flashing - to signal to pedestrians to not
94 #       start to cross and to drivers that they can move on if the 
95 #       crossing is clear.
96 #######################################################################
97
98 graceTime ()
99 {
100   echo "Grace time ... "
101   for i in `seq 0 7` ; do
102     sleep 0.5
103     gpio write $greenMan 0
104     gpio write $yellow1  0
105     gpio write $yellow2  0
106     sleep 0.5
107     gpio write $greenMan 1
108     gpio write $yellow1  1
109     gpio write $yellow2  1
110   done
111   echo "time up!"
112 }
113
114 # startTraffic:
115 #       Back to the Red Man and Green traffic light
116 #######################################################################
117
118 startTraffic ()
119 {
120   echo "Starting traffic ... "
121   gpio write $greenMan 0
122   gpio write $redMan   1
123   sleep 0.5
124   gpio write $yellow1 0
125   gpio write $yellow2 0
126   gpio write $green1  1
127   gpio write $green2  1
128   echo "Going"
129 }
130
131
132 #######################################################################
133 # The main program
134 #       Call our setup routines once, then sit in a loop, waiting for
135 #       the button to be pressed then executing the sequence.
136 #######################################################################
137
138 ladderSetup
139   tuxxSetup
140
141 while true; do
142   waitButton
143   stopTraffic
144   walk
145   graceTime
146   startTraffic
147 done