Statistics
| Branch: | Revision:

ddr4s / fw / wiringPi / examples / Gertboard / buttons.c @ 32:cadb9025f1e0

History | View | Annotate | Download (2.14 KB)

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
 * This file is part of wiringPi:
9
 *        https://projects.drogon.net/raspberry-pi/wiringpi/
10
 *
11
 *    wiringPi is free software: you can redistribute it and/or modify
12
 *    it under the terms of the GNU Lesser General Public License as published by
13
 *    the Free Software Foundation, either version 3 of the License, or
14
 *    (at your option) any later version.
15
 *
16
 *    wiringPi is distributed in the hope that it will be useful,
17
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 *    GNU Lesser General Public License for more details.
20
 *
21
 *    You should have received a copy of the GNU Lesser General Public License
22
 *    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
23
 ***********************************************************************
24
 */
25

    
26
#include <stdio.h>
27
#include <wiringPi.h>
28

    
29
// Array to keep track of our LEDs
30

    
31
int leds [] = { 0, 0, 0 } ;
32

    
33
// scanButton:
34
//        See if a button is pushed, if so, then flip that LED and
35
//        wait for the button to be let-go
36

    
37
void scanButton (int button)
38
{
39
  if (digitalRead (button) == HIGH)        // Low is pushed
40
    return ;
41

    
42
  leds [button] ^= 1 ; // Invert state
43
  digitalWrite (4 + button, leds [button]) ;
44

    
45
  while (digitalRead (button) == LOW)        // Wait for release
46
    delay (10) ;
47
}
48

    
49
int main (void)
50
{
51
  int i ;
52

    
53
  printf ("Raspberry Pi Gertboard Button Test\n") ;
54

    
55
  wiringPiSetup () ;
56

    
57
// Setup the outputs:
58
//        Pins 3, 4, 5, 6 and 7 output:
59
//        We're not using 3 or 4, but make sure they're off anyway
60
//        (Using same hardware config as blink12.c)
61

    
62
  for (i = 3 ; i < 8 ; ++i)
63
  {
64
    pinMode      (i, OUTPUT) ;
65
    digitalWrite (i, 0) ;
66
  }
67

    
68
// Setup the inputs
69

    
70
  for (i = 0 ; i < 3 ; ++i)
71
  {
72
    pinMode         (i, INPUT) ;
73
    pullUpDnControl (i, PUD_UP) ;
74
    leds [i] = 0 ;
75
  }
76

    
77
  for (;;)
78
  {
79
    for (i = 0 ; i < 3 ; ++i)
80
      scanButton (i) ;
81
    delay (1) ;
82
  }
83
}