Gordons Projects

--> Projects Top-Level GIT

Initial GIT submission
[pibrella] / pibrella.h
1 /*
2  * pibrella.h:
3  *      wiringPi pin definitions for the Pibrella board
4  *
5  * Copyright (c) 2014 Gordon Henderson. <projects@drogon.net>
6  ***********************************************************************
7  * This file is part of wiringPi:
8  *      https://projects.drogon.net/raspberry-pi/wiringpi/
9  *
10  *    wiringPi is free software: you can redistribute it and/or modify
11  *    it under the terms of the GNU Lesser General Public License as published by
12  *    the Free Software Foundation, either version 3 of the License, or
13  *    (at your option) any later version.
14  *
15  *    wiringPi is distributed in the hope that it will be useful,
16  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
17  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  *    GNU Lesser General Public License for more details.
19  *
20  *    You should have received a copy of the GNU Lesser General Public License
21  *    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
22  ***********************************************************************
23  */
24
25 // The 3 big LEDs
26
27 #define PIBRELLA_RED             2
28 #define PIBRELLA_YELLOW          0
29 #define PIBRELLA_GREEN           7
30
31 // The big red button
32
33 #define PIBRELLA_BUTTON         14
34
35 // PWM/Tone output
36
37 #define PIBRELLA_SQUAWK          1
38
39 // The 4 inputs:
40
41 #define PIBRELLA_IN_0           13
42 #define PIBRELLA_IN_1           11
43 #define PIBRELLA_IN_2           10
44 #define PIBRELLA_IN_3           12
45
46 // The 4 outputs:
47
48 #define PIBRELLA_OUT_0           3
49 #define PIBRELLA_OUT_1           4
50 #define PIBRELLA_OUT_2           5
51 #define PIBRELLA_OUT_3           6
52
53 // Same, using the Pibrella board labels:
54
55 #define PIBRELLA_IN_A           13
56 #define PIBRELLA_IN_B           11
57 #define PIBRELLA_IN_C           10
58 #define PIBRELLA_IN_D           12
59
60 #define PIBRELLA_OUT_E           3
61 #define PIBRELLA_OUT_F           4
62 #define PIBRELLA_OUT_G           5
63 #define PIBRELLA_OUT_H           6
64
65
66 /*
67  * playTone:
68  *      Output the given frequency on the Pi's PWM pin
69  *********************************************************************************
70  */
71
72 static void playTone (int freq)
73 {
74   int range ;
75
76   if (freq == 0)
77     pwmWrite (PIBRELLA_SQUAWK, 0) ;             // Off
78   else
79   {
80     range = 600000 / freq ;
81     pwmSetRange (range) ;
82     pwmWrite    (PIBRELLA_SQUAWK, freq / 2) ;
83   }
84 }
85
86
87 /*
88  * pibrellaSetup:
89  *      Initialise the Pi's GPIO for the Pibrella board
90  *********************************************************************************
91  */
92
93 void pibrellaSetup (void)
94 {
95   pinMode (PIBRELLA_RED,        OUTPUT) ;
96   pinMode (PIBRELLA_YELLOW,     OUTPUT) ;
97   pinMode (PIBRELLA_GREEN,      OUTPUT) ;
98
99   pinMode (PIBRELLA_BUTTON,     INPUT) ;
100
101   pinMode (PIBRELLA_IN_0,       INPUT) ;
102   pinMode (PIBRELLA_IN_1,       INPUT) ;
103   pinMode (PIBRELLA_IN_2,       INPUT) ;
104   pinMode (PIBRELLA_IN_3,       INPUT) ;
105
106   pinMode (PIBRELLA_OUT_0,      OUTPUT) ;
107   pinMode (PIBRELLA_OUT_1,      OUTPUT) ;
108   pinMode (PIBRELLA_OUT_2,      OUTPUT) ;
109   pinMode (PIBRELLA_OUT_3,      OUTPUT) ;
110
111   digitalWrite (PIBRELLA_RED,    0) ;
112   digitalWrite (PIBRELLA_YELLOW, 0) ;
113   digitalWrite (PIBRELLA_GREEN,  0) ;
114
115   digitalWrite (PIBRELLA_OUT_0,  0) ;
116   digitalWrite (PIBRELLA_OUT_1,  0) ;
117   digitalWrite (PIBRELLA_OUT_2,  0) ;
118   digitalWrite (PIBRELLA_OUT_3,  0) ;
119
120   pullUpDnControl (PIBRELLA_BUTTON, PUD_DOWN) ;
121   pullUpDnControl (PIBRELLA_IN_0,   PUD_DOWN) ;
122   pullUpDnControl (PIBRELLA_IN_1,   PUD_DOWN) ;
123   pullUpDnControl (PIBRELLA_IN_2,   PUD_DOWN) ;
124   pullUpDnControl (PIBRELLA_IN_3,   PUD_DOWN) ;
125
126 // Setup the PWM output to make the buzzer play tones
127
128   pinMode    (PIBRELLA_SQUAWK, PWM_OUTPUT) ;
129   pwmSetMode (PWM_MODE_MS) ;
130   playTone   (0) ;
131 }
132
133