Gordons Projects

--> Projects Top-Level GIT

Initial creating of GIT repository for the wiringPi + Gertboard
[gertboard] / buttons.c
1 /*
2  * buttons.c:
3  *      Read the Gertboard buttons. Each one will act as an on/off
4  *      tiggle switch for 3 different LEDs
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 // Array to keep track of our LEDs
15
16 int leds [] = { 0, 0, 0 } ;
17
18 // scanButton:
19 //      See if a button is pushed, if so, then flip that LED and
20 //      wait for the button to be let-go
21
22 void scanButton (int button)
23 {
24   if (digitalRead (button) == HIGH)     // Low is pushed
25     return ;
26
27   leds [button] ^= 1 ; // Invert state
28   digitalWrite (4 + button, leds [button]) ;
29
30   while (digitalRead (button) == LOW)   // Wait for release
31     delay (10) ;
32 }
33
34 int main (void)
35 {
36   int i ;
37
38   printf ("Raspberry Pi Gertboard Button Test\n") ;
39
40   wiringPiSetup () ;
41
42 // Setup the outputs:
43 //      Pins 3, 4, 5, 6 and 7 output:
44 //      We're not using 3 or 4, but make sure they're off anyway
45 //      (Using same hardware config as blink12.c)
46
47   for (i = 3 ; i < 8 ; ++i)
48   {
49     pinMode      (i, OUTPUT) ;
50     digitalWrite (i, 0) ;
51   }
52
53 // Setup the inputs
54
55   for (i = 0 ; i < 3 ; ++i)
56   {
57     pinMode         (i, INPUT) ;
58     pullUpDnControl (i, PUD_UP) ;
59     leds [i] = 0 ;
60   }
61
62   for (;;)
63   {
64     for (i = 0 ; i < 3 ; ++i)
65       scanButton (i) ;
66     delay (1) ;
67   }
68 }