Gordons Projects

--> Projects Top-Level GIT

Fixing names
[ladder] / cylon.c
1
2 /*
3  * cylon.c:
4  *      Simple LED sequencer
5  */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <stdint.h>
10
11 #include <wiringPi.h>
12
13 #include "ladderSetup.h"
14
15 // Sequencer data
16 //      Triplets of LED, On/Off and delay
17
18 uint8_t data [] =
19 {
20             0, 1, 1,
21             1, 1, 1,
22   0, 0, 0,  2, 1, 1,
23   1, 0, 0,  3, 1, 1,
24   2, 0, 0,  4, 1, 1,
25   3, 0, 0,  5, 1, 1,
26   4, 0, 0,  6, 1, 1,
27   5, 0, 0,  7, 1, 1,
28   6, 0, 1,
29   7, 0, 1,
30
31   0, 0, 1,      // Extra delay
32
33 // Back again
34
35             7, 1, 1,
36             6, 1, 1,
37   7, 0, 0,  5, 1, 1,
38   6, 0, 0,  4, 1, 1,
39   5, 0, 0,  3, 1, 1,
40   4, 0, 0,  2, 1, 1,
41   3, 0, 0,  1, 1, 1,
42   2, 0, 0,  0, 1, 1,
43   1, 0, 1,
44   0, 0, 1,
45
46   0, 0, 1,      // Extra delay
47
48   9, 9, 9,      // End marker
49
50 } ;
51
52
53 int main (void)
54 {
55   int dataPtr ;
56   int l, s, d ;
57
58   printf ("Raspberry Pi cylon sequencer program\n") ;
59
60   if (wiringPiSetup () == -1)
61     exit (1) ;
62
63   raspberryLadderSetup () ;
64
65   dataPtr = 0 ;
66
67   for (;;)
68   {
69     l = data [dataPtr++] ;      // LED
70     s = data [dataPtr++] ;      // State
71     d = data [dataPtr++] ;      // Duration (10ths)
72
73     if ((l + s + d) == 27)
74     {
75       dataPtr = 0 ;
76       continue ;
77     }
78
79     digitalWrite (l, s) ;
80
81     if (digitalRead (BUTTON_A) == 0)    // Pressed as our switch shorts to ground
82       delay (d * 10) ;  // Faster!
83     else
84       delay (d * 100) ;
85   }
86
87   return 0 ;
88 }