Gordons Projects

--> Projects Top-Level GIT

Initial creating of GIT repository for the wiringPi + Gertboard
[gertboard] / blink12.c
1 /*
2  * blink12.c:
3  *      This is a sequencer to make a pattern appear on 12 LEDs
4  *      connected to the GPIO pins wired to the Gertboard
5  *
6  * Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net>
7  ***********************************************************************
8  */
9
10
11 #include <stdio.h>
12 #include <wiringPi.h>
13
14 // Simple sequencer data
15 //      Triplets of LED, On/Off and delay
16
17 int data [] =
18 {
19             0, 1, 1,
20             1, 1, 1,
21   0, 0, 0,  2, 1, 1,
22   1, 0, 0,  3, 1, 1,
23   2, 0, 0,  4, 1, 1,
24   3, 0, 0,  5, 1, 1,
25   4, 0, 0,  6, 1, 1,
26   5, 0, 0,  7, 1, 1,
27   6, 0, 0, 11, 1, 1,
28   7, 0, 0, 10, 1, 1,
29  11, 0, 0, 13, 1, 1,
30  10, 0, 0, 12, 1, 1,
31  13, 0, 1,
32  12, 0, 1,
33
34   0, 0, 1,      // Extra delay
35
36 // Back again
37
38            12, 1, 1,
39            13, 1, 1,
40  12, 0, 0, 10, 1, 1,
41  13, 0, 0, 11, 1, 1,
42  10, 0, 0,  7, 1, 1,
43  11, 0, 0,  6, 1, 1,
44   7, 0, 0,  5, 1, 1,
45   6, 0, 0,  4, 1, 1,
46   5, 0, 0,  3, 1, 1,
47   4, 0, 0,  2, 1, 1,
48   3, 0, 0,  1, 1, 1,
49   2, 0, 0,  0, 1, 1,
50   1, 0, 1,
51   0, 0, 1,
52
53   0, 0, 1,      // Extra delay
54
55   0, 9, 0,      // End marker
56
57 } ;
58
59
60 int main (void)
61 {
62   int pin ;
63   int dataPtr ;
64   int l, s, d ;
65
66   printf ("Raspberry Pi - Gertboard 12-LED Sequence\n") ;
67
68   wiringPiSetup () ;
69
70   for (pin = 0 ; pin < 14 ; ++pin)
71     pinMode (pin, OUTPUT) ;
72
73   dataPtr = 0 ;
74
75   for (;;)
76   {
77     l = data [dataPtr++] ;      // LED
78     s = data [dataPtr++] ;      // State
79     d = data [dataPtr++] ;      // Duration (10ths)
80
81     if (s == 9)                 // 9 -> End Marker
82     {
83       dataPtr = 0 ;
84       continue ;
85     }
86
87     digitalWrite (l, s) ;
88     delay        (d * 100) ;
89   }
90
91   return 0 ;
92 }