Gordons Projects

--> Projects Top-Level GIT

Fixed oopsie in ladderSetup.sh
[ladder] / reaction.rtb
1 //
2 // reaction:
3 //    Reaction timer using the Raspberry Ladder board
4 //
5 CLS 
6 PROC ladderSetup
7 NUMFORMAT (5, 3)
8 PRINT 
9 PRINT "Reaction timer - with the Raspberry Ladder board"
10 PRINT "================================================"
11 PRINT 
12 PRINT "All LEDs will be ON to start."
13 PRINT 
14 PRINT "Press Button A (The bottom one) to start the count down timer."
15 PRINT "At that point the main LEDs will go OFF, leaving the 2 small"
16 PRINT "Red & Green LEDs on."
17 PRINT 
18 PRINT "These will go OFF after a short time, then you need to press"
19 PRINT "Button A again."
20 PRINT 
21 PRINT "For each 50 milliseconds you don't press the button, one of the"
22 PRINT "big LEDs will light..."
23 PRINT 
24 PRINT "Ready when you are..."
25 PRINT 
26 //
27 FOR led = 0 TO 9 CYCLE 
28   DigitalWrite (led, 1)
29 REPEAT 
30 //
31 // Wait for button A, then turn off the main LEDs
32 //
33 WHILE DigitalRead (buttonA) = 1 CYCLE 
34 REPEAT 
35 //
36 FOR led = 0 TO 7 CYCLE 
37   DigitalWrite (led, 0)
38 REPEAT 
39 //
40 // Wait for it to be released
41 //
42 WHILE DigitalRead (buttonA) = 0 CYCLE 
43 REPEAT 
44 //
45 // Now wait a random time and turn off the small LEDs
46 //
47 WAIT (RND (1) * 2 + 1)
48 //
49 // However if we're pushing the button, we've tried to jump the gun, so ...
50 //
51 IF DigitalRead (buttonA) = 0 THEN 
52   PRINT "Cheat? Pushed too soon..."
53   END 
54 ENDIF 
55 //
56 DigitalWrite (rMan, 0)
57 DigitalWrite (gMan, 0)
58 //
59 // Go gadget go!
60 //
61 start = TIME
62 CYCLE 
63   IF DigitalRead (buttonA) = 0 THEN BREAK 
64   IF TIME > (start + 50) THEN DigitalWrite (ledBlue2, 1)
65   IF TIME > (start + 100) THEN DigitalWrite (ledBlue1, 1)
66   IF TIME > (start + 150) THEN DigitalWrite (ledGreen2, 1)
67   IF TIME > (start + 200) THEN DigitalWrite (ledGreen1, 1)
68   IF TIME > (start + 250) THEN DigitalWrite (ledYellow2, 1)
69   IF TIME > (start + 300) THEN DigitalWrite (ledYellow1, 1)
70   IF TIME > (start + 350) THEN DigitalWrite (ledRed2, 1)
71   IF TIME > (start + 400) THEN DigitalWrite (ledRed1, 1)
72 REPEAT 
73 etime = TIME
74 PRINT "OK. Count the LEDs... 50ms for each LED lit..."
75 PRINT 
76 PRINT "But I made it: ";  (etime - start) / 1000;  " seconds."
77 END 
78 //
79 // ladderSetup:
80 //    This is the setup procedure. We initialise the various
81 //    pins into the correct modes and extinbuish all the LEDs
82 //
83 DEF PROC ladderSetup
84 LOCAL i
85 FOR i = 0 TO 9 CYCLE 
86   PinMode (i, 1) // Output
87   DigitalWrite (i, 0) // Off
88 REPEAT 
89 FOR i = 10 TO 13 CYCLE 
90   PinMode (i, 0) // Input
91   PullUpDn (i, 2) // Activate internal pull-up
92 REPEAT 
93 //
94 // Make some globals
95 //
96 ledRed1 = 0
97 ledRed2 = 1
98 ledYellow1 = 2
99 ledYellow2 = 3
100 ledGreen1 = 4
101 ledGreen2 = 5
102 ledBlue1 = 6
103 ledBlue2 = 7
104 gMan = 8
105 rMan = 9
106 //
107 buttonA = 11
108 buttonB = 10
109 buttonC = 12
110 buttonD = 13
111 //
112 ENDPROC