wiringpi-ruby 2.0.0 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/wiringpi/WiringPi/devLib/ds1302.c +240 -0
- data/ext/wiringpi/WiringPi/devLib/ds1302.h +44 -0
- data/ext/wiringpi/WiringPi/devLib/font.h +2577 -0
- data/ext/wiringpi/WiringPi/devLib/gertboard.c +164 -0
- data/ext/wiringpi/WiringPi/devLib/gertboard.h +45 -0
- data/ext/wiringpi/WiringPi/devLib/lcd.c +495 -0
- data/ext/wiringpi/WiringPi/devLib/lcd.h +52 -0
- data/ext/wiringpi/WiringPi/devLib/lcd128x64.c +673 -0
- data/ext/wiringpi/WiringPi/devLib/lcd128x64.h +39 -0
- data/ext/wiringpi/WiringPi/devLib/maxdetect.c +238 -0
- data/ext/wiringpi/WiringPi/devLib/maxdetect.h +40 -0
- data/ext/wiringpi/WiringPi/devLib/piFace.c +112 -0
- data/ext/wiringpi/WiringPi/devLib/piFace.h +32 -0
- data/ext/wiringpi/WiringPi/devLib/piFaceOld.c +177 -0
- data/ext/wiringpi/WiringPi/devLib/piGlow.c +118 -0
- data/ext/wiringpi/WiringPi/devLib/piGlow.h +45 -0
- data/ext/wiringpi/WiringPi/devLib/piNes.c +113 -0
- data/ext/wiringpi/WiringPi/devLib/piNes.h +45 -0
- data/ext/wiringpi/WiringPi/devLib/scrollPhat.c +430 -0
- data/ext/wiringpi/WiringPi/devLib/scrollPhat.h +39 -0
- data/ext/wiringpi/WiringPi/devLib/scrollPhatFont.h +544 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/7segments.c +221 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/buttons.c +83 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/gertboard.c +96 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/record.c +60 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/temperature.c +78 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/voltmeter.c +73 -0
- data/ext/wiringpi/WiringPi/examples/Gertboard/vumeter.c +152 -0
- data/ext/wiringpi/WiringPi/examples/PiFace/blink.c +59 -0
- data/ext/wiringpi/WiringPi/examples/PiFace/buttons.c +103 -0
- data/ext/wiringpi/WiringPi/examples/PiFace/ladder.c +337 -0
- data/ext/wiringpi/WiringPi/examples/PiFace/metro.c +111 -0
- data/ext/wiringpi/WiringPi/examples/PiFace/motor.c +120 -0
- data/ext/wiringpi/WiringPi/examples/PiFace/reaction.c +194 -0
- data/ext/wiringpi/WiringPi/examples/PiGlow/piGlow0.c +51 -0
- data/ext/wiringpi/WiringPi/examples/PiGlow/piGlow1.c +258 -0
- data/ext/wiringpi/WiringPi/examples/PiGlow/piglow.c +176 -0
- data/ext/wiringpi/WiringPi/examples/blink-thread.c +61 -0
- data/ext/wiringpi/WiringPi/examples/blink.c +48 -0
- data/ext/wiringpi/WiringPi/examples/blink12.c +111 -0
- data/ext/wiringpi/WiringPi/examples/blink12drcs.c +125 -0
- data/ext/wiringpi/WiringPi/examples/blink6drcs.c +115 -0
- data/ext/wiringpi/WiringPi/examples/blink8-drcn.c +61 -0
- data/ext/wiringpi/WiringPi/examples/blink8.c +57 -0
- data/ext/wiringpi/WiringPi/examples/clock.c +201 -0
- data/ext/wiringpi/WiringPi/examples/delayTest.c +102 -0
- data/ext/wiringpi/WiringPi/examples/ds1302.c +238 -0
- data/ext/wiringpi/WiringPi/examples/header.h +23 -0
- data/ext/wiringpi/WiringPi/examples/isr-osc.c +118 -0
- data/ext/wiringpi/WiringPi/examples/isr.c +110 -0
- data/ext/wiringpi/WiringPi/examples/lcd-adafruit.c +347 -0
- data/ext/wiringpi/WiringPi/examples/lcd.c +286 -0
- data/ext/wiringpi/WiringPi/examples/lowPower.c +68 -0
- data/ext/wiringpi/WiringPi/examples/max31855.c +60 -0
- data/ext/wiringpi/WiringPi/examples/nes.c +67 -0
- data/ext/wiringpi/WiringPi/examples/okLed.c +82 -0
- data/ext/wiringpi/WiringPi/examples/pwm.c +58 -0
- data/ext/wiringpi/WiringPi/examples/q2w/binary.c +79 -0
- data/ext/wiringpi/WiringPi/examples/q2w/blink-io.c +61 -0
- data/ext/wiringpi/WiringPi/examples/q2w/blink.c +50 -0
- data/ext/wiringpi/WiringPi/examples/q2w/bright.c +59 -0
- data/ext/wiringpi/WiringPi/examples/q2w/button.c +63 -0
- data/ext/wiringpi/WiringPi/examples/q2w/volts.c +62 -0
- data/ext/wiringpi/WiringPi/examples/rht03.c +86 -0
- data/ext/wiringpi/WiringPi/examples/scrollPhat/scphat.c +230 -0
- data/ext/wiringpi/WiringPi/examples/scrollPhat/test.c +115 -0
- data/ext/wiringpi/WiringPi/examples/serialRead.c +48 -0
- data/ext/wiringpi/WiringPi/examples/serialTest.c +75 -0
- data/ext/wiringpi/WiringPi/examples/servo.c +57 -0
- data/ext/wiringpi/WiringPi/examples/softPwm.c +89 -0
- data/ext/wiringpi/WiringPi/examples/softTone.c +54 -0
- data/ext/wiringpi/WiringPi/examples/speed.c +95 -0
- data/ext/wiringpi/WiringPi/examples/spiSpeed.c +118 -0
- data/ext/wiringpi/WiringPi/examples/wfi.c +161 -0
- data/ext/wiringpi/WiringPi/gpio/gpio.c +1538 -0
- data/ext/wiringpi/WiringPi/gpio/readall.c +403 -0
- data/ext/wiringpi/WiringPi/version.h +3 -0
- data/ext/wiringpi/WiringPi/wiringPi/ads1115.c +293 -0
- data/ext/wiringpi/WiringPi/wiringPi/ads1115.h +55 -0
- data/ext/wiringpi/WiringPi/wiringPi/bmp180.c +237 -0
- data/ext/wiringpi/WiringPi/wiringPi/bmp180.h +34 -0
- data/ext/wiringpi/WiringPi/wiringPi/drcNet.c +405 -0
- data/ext/wiringpi/WiringPi/wiringPi/drcNet.h +42 -0
- data/ext/wiringpi/WiringPi/wiringPi/drcSerial.c +196 -0
- data/ext/wiringpi/WiringPi/wiringPi/drcSerial.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/ds18b20.c +146 -0
- data/ext/wiringpi/WiringPi/wiringPi/ds18b20.h +34 -0
- data/ext/wiringpi/WiringPi/wiringPi/htu21d.c +150 -0
- data/ext/wiringpi/WiringPi/wiringPi/htu21d.h +34 -0
- data/ext/wiringpi/WiringPi/wiringPi/max31855.c +99 -0
- data/ext/wiringpi/WiringPi/wiringPi/max31855.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/max5322.c +84 -0
- data/ext/wiringpi/WiringPi/wiringPi/max5322.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23008.c +149 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23008.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23016.c +164 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23016.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23016reg.h +48 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23017.c +195 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23017.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23s08.c +188 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23s08.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23s17.c +235 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23s17.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23x08.h +73 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp23x0817.h +87 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp3002.c +76 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp3002.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp3004.c +76 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp3004.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp3422.c +125 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp3422.h +43 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp4802.c +76 -0
- data/ext/wiringpi/WiringPi/wiringPi/mcp4802.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/pcf8574.c +126 -0
- data/ext/wiringpi/WiringPi/wiringPi/pcf8574.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/pcf8591.c +90 -0
- data/ext/wiringpi/WiringPi/wiringPi/pcf8591.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/piHiPri.c +51 -0
- data/ext/wiringpi/WiringPi/wiringPi/piThread.c +63 -0
- data/ext/wiringpi/WiringPi/wiringPi/pseudoPins.c +95 -0
- data/ext/wiringpi/WiringPi/wiringPi/pseudoPins.h +26 -0
- data/ext/wiringpi/WiringPi/wiringPi/rht03.c +252 -0
- data/ext/wiringpi/WiringPi/wiringPi/rht03.h +25 -0
- data/ext/wiringpi/WiringPi/wiringPi/sn3218.c +75 -0
- data/ext/wiringpi/WiringPi/wiringPi/sn3218.h +33 -0
- data/ext/wiringpi/WiringPi/wiringPi/softPwm.c +186 -0
- data/ext/wiringpi/WiringPi/wiringPi/softPwm.h +35 -0
- data/ext/wiringpi/WiringPi/wiringPi/softServo.c +211 -0
- data/ext/wiringpi/WiringPi/wiringPi/softServo.h +35 -0
- data/ext/wiringpi/WiringPi/wiringPi/softTone.c +150 -0
- data/ext/wiringpi/WiringPi/wiringPi/softTone.h +39 -0
- data/ext/wiringpi/WiringPi/wiringPi/sr595.c +109 -0
- data/ext/wiringpi/WiringPi/wiringPi/sr595.h +34 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringPi.c +2507 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringPi.h +269 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.c +233 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.h +42 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.c +144 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.h +36 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringSerial.c +225 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringSerial.h +38 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringShift.c +83 -0
- data/ext/wiringpi/WiringPi/wiringPi/wiringShift.h +41 -0
- data/ext/wiringpi/WiringPi/wiringPi/wpiExtensions.c +928 -0
- data/ext/wiringpi/WiringPi/wiringPi/wpiExtensions.h +26 -0
- data/ext/wiringpi/WiringPi/wiringPiD/daemonise.c +82 -0
- data/ext/wiringpi/WiringPi/wiringPiD/daemonise.h +9 -0
- data/ext/wiringpi/WiringPi/wiringPiD/drcNetCmd.h +43 -0
- data/ext/wiringpi/WiringPi/wiringPiD/network.c +330 -0
- data/ext/wiringpi/WiringPi/wiringPiD/network.h +31 -0
- data/ext/wiringpi/WiringPi/wiringPiD/runRemote.c +126 -0
- data/ext/wiringpi/WiringPi/wiringPiD/runRemote.h +29 -0
- data/ext/wiringpi/WiringPi/wiringPiD/wiringpid.c +382 -0
- data/ext/wiringpi/wiringpi_wrap.c +636 -219
- data/lib/wiringpi.rb +25 -12
- data/lib/wiringpi/gpio.rb +90 -83
- data/lib/wiringpi/i2c.rb +29 -22
- data/lib/wiringpi/modules/mcp23017.rb +15 -0
- data/lib/wiringpi/modules/mcp23s17.rb +16 -0
- data/lib/wiringpi/scrollphat.rb +14 -14
- data/lib/wiringpi/serial.rb +8 -18
- data/lib/wiringpi/spi.rb +14 -11
- data/lib/wiringpi/watch.rb +24 -0
- metadata +160 -4
- data/lib/wiringpi/event.rb +0 -21
- data/lib/wiringpi/mcp23x17.rb +0 -31
@@ -0,0 +1,221 @@
|
|
1
|
+
/*
|
2
|
+
* 7segments.c:
|
3
|
+
* Simple test program to see if we can drive a 7-segment LED
|
4
|
+
* display using the GPIO and little else on the Raspberry Pi
|
5
|
+
*
|
6
|
+
* Copyright (c) 2013 Gordon Henderson
|
7
|
+
***********************************************************************
|
8
|
+
*/
|
9
|
+
|
10
|
+
#undef PHOTO_HACK
|
11
|
+
|
12
|
+
#include <wiringPi.h>
|
13
|
+
|
14
|
+
#include <stdio.h>
|
15
|
+
#include <time.h>
|
16
|
+
#include <ctype.h>
|
17
|
+
#include <string.h>
|
18
|
+
|
19
|
+
/*
|
20
|
+
* Segment mapping
|
21
|
+
*
|
22
|
+
* --a--
|
23
|
+
* | |
|
24
|
+
* f b
|
25
|
+
* | |
|
26
|
+
* --g--
|
27
|
+
* | |
|
28
|
+
* e c
|
29
|
+
* | |
|
30
|
+
* --d-- p
|
31
|
+
*/
|
32
|
+
|
33
|
+
// GPIO Pin Mapping
|
34
|
+
|
35
|
+
static int digits [6] = { 7, 11, 10, 13, 12, 14 } ;
|
36
|
+
static int segments [7] = { 6, 5, 4, 3, 2, 1, 0 } ;
|
37
|
+
|
38
|
+
|
39
|
+
static const int segmentDigits [] =
|
40
|
+
{
|
41
|
+
// a b c d e f g Segments
|
42
|
+
// 6 5 4 3 2 1 0, // wiringPi pin No.
|
43
|
+
|
44
|
+
1, 1, 1, 1, 1, 1, 0, // 0
|
45
|
+
0, 1, 1, 0, 0, 0, 0, // 1
|
46
|
+
1, 1, 0, 1, 1, 0, 1, // 2
|
47
|
+
1, 1, 1, 1, 0, 0, 1, // 3
|
48
|
+
0, 1, 1, 0, 0, 1, 1, // 4
|
49
|
+
1, 0, 1, 1, 0, 1, 1, // 5
|
50
|
+
1, 0, 1, 1, 1, 1, 1, // 6
|
51
|
+
1, 1, 1, 0, 0, 0, 0, // 7
|
52
|
+
1, 1, 1, 1, 1, 1, 1, // 8
|
53
|
+
1, 1, 1, 1, 0, 1, 1, // 9
|
54
|
+
1, 1, 1, 0, 1, 1, 1, // A
|
55
|
+
0, 0, 1, 1, 1, 1, 1, // b
|
56
|
+
1, 0, 0, 1, 1, 1, 0, // C
|
57
|
+
0, 1, 1, 1, 1, 0, 1, // d
|
58
|
+
1, 0, 0, 1, 1, 1, 1, // E
|
59
|
+
1, 0, 0, 0, 1, 1, 1, // F
|
60
|
+
0, 0, 0, 0, 0, 0, 0, // blank
|
61
|
+
} ;
|
62
|
+
|
63
|
+
|
64
|
+
// display:
|
65
|
+
// A global variable which is written to by the main program and
|
66
|
+
// read from by the thread that updates the display. Only the first
|
67
|
+
// 6 characters are used.
|
68
|
+
|
69
|
+
char display [8] ;
|
70
|
+
|
71
|
+
|
72
|
+
/*
|
73
|
+
* displayDigits:
|
74
|
+
* This is our thread that's run concurrently with the main program.
|
75
|
+
* Essentially sit in a loop, parsing and displaying the data held in
|
76
|
+
* the "display" global.
|
77
|
+
*********************************************************************************
|
78
|
+
*/
|
79
|
+
|
80
|
+
PI_THREAD (displayDigits)
|
81
|
+
{
|
82
|
+
int digit, segment ;
|
83
|
+
int index, d, segVal ;
|
84
|
+
|
85
|
+
piHiPri (50) ;
|
86
|
+
|
87
|
+
for (;;)
|
88
|
+
{
|
89
|
+
for (digit = 0 ; digit < 6 ; ++digit)
|
90
|
+
{
|
91
|
+
for (segment = 0 ; segment < 7 ; ++segment)
|
92
|
+
{
|
93
|
+
d = toupper (display [digit]) ;
|
94
|
+
/**/ if ((d >= '0') && (d <= '9')) // Digit
|
95
|
+
index = d - '0' ;
|
96
|
+
else if ((d >= 'A') && (d <= 'F')) // Hex
|
97
|
+
index = d - 'A' + 10 ;
|
98
|
+
else
|
99
|
+
index = 16 ; // Blank
|
100
|
+
|
101
|
+
segVal = segmentDigits [index * 7 + segment] ;
|
102
|
+
|
103
|
+
digitalWrite (segments [segment], segVal) ;
|
104
|
+
}
|
105
|
+
digitalWrite (digits [digit], 1) ;
|
106
|
+
delay (2) ;
|
107
|
+
digitalWrite (digits [digit], 0) ;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
/*
|
114
|
+
* setup:
|
115
|
+
* Initialise the hardware and start the thread
|
116
|
+
*********************************************************************************
|
117
|
+
*/
|
118
|
+
|
119
|
+
void setup (void)
|
120
|
+
{
|
121
|
+
int i, c ;
|
122
|
+
|
123
|
+
wiringPiSetup () ;
|
124
|
+
|
125
|
+
// 7 segments
|
126
|
+
|
127
|
+
for (i = 0 ; i < 7 ; ++i)
|
128
|
+
{ digitalWrite (segments [i], 0) ; pinMode (segments [i], OUTPUT) ; }
|
129
|
+
|
130
|
+
// 6 digits
|
131
|
+
|
132
|
+
for (i = 0 ; i < 6 ; ++i)
|
133
|
+
{ digitalWrite (digits [i], 0) ; pinMode (digits [i], OUTPUT) ; }
|
134
|
+
|
135
|
+
strcpy (display, " ") ;
|
136
|
+
piThreadCreate (displayDigits) ;
|
137
|
+
delay (10) ; // Just to make sure it's started
|
138
|
+
|
139
|
+
// Quick countdown LED test sort of thing
|
140
|
+
|
141
|
+
c = 999999 ;
|
142
|
+
for (i = 0 ; i < 10 ; ++i)
|
143
|
+
{
|
144
|
+
sprintf (display, "%06d", c) ;
|
145
|
+
delay (400) ;
|
146
|
+
c -= 111111 ;
|
147
|
+
}
|
148
|
+
|
149
|
+
strcpy (display, " ") ;
|
150
|
+
delay (400) ;
|
151
|
+
|
152
|
+
#ifdef PHOTO_HACK
|
153
|
+
sprintf (display, "%s", "123456") ;
|
154
|
+
for (;;)
|
155
|
+
delay (1000) ;
|
156
|
+
#endif
|
157
|
+
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
/*
|
162
|
+
* teenager:
|
163
|
+
* No explanation needed. (Nor one given!)
|
164
|
+
*********************************************************************************
|
165
|
+
*/
|
166
|
+
|
167
|
+
void teenager (void)
|
168
|
+
{
|
169
|
+
char *message = " feedbeef babe cafe b00b " ;
|
170
|
+
int i ;
|
171
|
+
|
172
|
+
for (i = 0 ; i < strlen (message) - 4 ; ++i)
|
173
|
+
{
|
174
|
+
strncpy (display, &message [i], 6) ;
|
175
|
+
delay (200) ;
|
176
|
+
}
|
177
|
+
delay (1000) ;
|
178
|
+
for (i = 0 ; i < 3 ; ++i)
|
179
|
+
{
|
180
|
+
strcpy (display, " ") ;
|
181
|
+
delay (150) ;
|
182
|
+
strcpy (display, " b00b ") ;
|
183
|
+
delay (250) ;
|
184
|
+
}
|
185
|
+
delay (1000) ;
|
186
|
+
strcpy (display, " ") ;
|
187
|
+
delay (1000) ;
|
188
|
+
}
|
189
|
+
|
190
|
+
|
191
|
+
/*
|
192
|
+
*********************************************************************************
|
193
|
+
* main:
|
194
|
+
* Let the fun begin
|
195
|
+
*********************************************************************************
|
196
|
+
*/
|
197
|
+
|
198
|
+
int main (void)
|
199
|
+
{
|
200
|
+
struct tm *t ;
|
201
|
+
time_t tim ;
|
202
|
+
|
203
|
+
setup () ;
|
204
|
+
teenager () ;
|
205
|
+
|
206
|
+
tim = time (NULL) ;
|
207
|
+
for (;;)
|
208
|
+
{
|
209
|
+
while (time (NULL) == tim)
|
210
|
+
delay (5) ;
|
211
|
+
|
212
|
+
tim = time (NULL) ;
|
213
|
+
t = localtime (&tim) ;
|
214
|
+
|
215
|
+
sprintf (display, "%02d%02d%02d", t->tm_hour, t->tm_min, t->tm_sec) ;
|
216
|
+
|
217
|
+
delay (500) ;
|
218
|
+
}
|
219
|
+
|
220
|
+
return 0 ;
|
221
|
+
}
|
@@ -0,0 +1,83 @@
|
|
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
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
/*
|
2
|
+
* gertboard.c:
|
3
|
+
* Simple test for the SPI bus on the Gertboard
|
4
|
+
*
|
5
|
+
* Hardware setup:
|
6
|
+
* D/A port 0 jumpered to A/D port 0.
|
7
|
+
*
|
8
|
+
* We output a sine wave on D/A port 0 and sample A/D port 0. We then
|
9
|
+
* plot the input value on the terminal as a sort of vertical scrolling
|
10
|
+
* oscilloscipe.
|
11
|
+
*
|
12
|
+
* Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net>
|
13
|
+
***********************************************************************
|
14
|
+
* This file is part of wiringPi:
|
15
|
+
* https://projects.drogon.net/raspberry-pi/wiringpi/
|
16
|
+
*
|
17
|
+
* wiringPi is free software: you can redistribute it and/or modify
|
18
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
19
|
+
* the Free Software Foundation, either version 3 of the License, or
|
20
|
+
* (at your option) any later version.
|
21
|
+
*
|
22
|
+
* wiringPi is distributed in the hope that it will be useful,
|
23
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
24
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
25
|
+
* GNU Lesser General Public License for more details.
|
26
|
+
*
|
27
|
+
* You should have received a copy of the GNU Lesser General Public License
|
28
|
+
* along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
|
29
|
+
***********************************************************************
|
30
|
+
*/
|
31
|
+
|
32
|
+
#include <stdio.h>
|
33
|
+
#include <sys/ioctl.h>
|
34
|
+
#include <stdlib.h>
|
35
|
+
#include <math.h>
|
36
|
+
|
37
|
+
// Gertboard D to A is an 8-bit unit.
|
38
|
+
|
39
|
+
#define B_SIZE 256
|
40
|
+
|
41
|
+
#include <wiringPi.h>
|
42
|
+
#include <gertboard.h>
|
43
|
+
|
44
|
+
int main (void)
|
45
|
+
{
|
46
|
+
double angle ;
|
47
|
+
int i, inputValue ;
|
48
|
+
int buffer [B_SIZE] ;
|
49
|
+
int cols ;
|
50
|
+
struct winsize w ;
|
51
|
+
|
52
|
+
|
53
|
+
printf ("Raspberry Pi Gertboard SPI test program\n") ;
|
54
|
+
printf ("=======================================\n") ;
|
55
|
+
|
56
|
+
ioctl (fileno (stdin), TIOCGWINSZ, &w);
|
57
|
+
cols = w.ws_col - 2 ;
|
58
|
+
|
59
|
+
// Always initialise wiringPi. Use wiringPiSys() if you don't need
|
60
|
+
// (or want) to run as root
|
61
|
+
|
62
|
+
wiringPiSetupSys () ;
|
63
|
+
|
64
|
+
// Initialise the Gertboard analog hardware at pin 100
|
65
|
+
|
66
|
+
gertboardAnalogSetup (100) ;
|
67
|
+
|
68
|
+
// Generate a Sine Wave and store in our buffer
|
69
|
+
|
70
|
+
for (i = 0 ; i < B_SIZE ; ++i)
|
71
|
+
{
|
72
|
+
angle = ((double)i / (double)B_SIZE) * M_PI * 2.0 ;
|
73
|
+
buffer [i] = (int)rint ((sin (angle)) * 127.0 + 128.0) ;
|
74
|
+
}
|
75
|
+
|
76
|
+
// Loop, output the sine wave on analog out port 0, read it into A-D port 0
|
77
|
+
// and display it on the screen
|
78
|
+
|
79
|
+
for (;;)
|
80
|
+
{
|
81
|
+
for (i = 0 ; i < B_SIZE ; ++i)
|
82
|
+
{
|
83
|
+
analogWrite (100, buffer [i]) ;
|
84
|
+
|
85
|
+
inputValue = analogRead (100) ;
|
86
|
+
|
87
|
+
// We don't need to wory about the scale or sign - the analog hardware is
|
88
|
+
// a 10-bit value, so 0-1023. Just scale this to our terminal
|
89
|
+
|
90
|
+
printf ("%*s\n", (inputValue * cols) / 1023, "*") ;
|
91
|
+
delay (2) ;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
return 0 ;
|
96
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/*
|
2
|
+
* record.c:
|
3
|
+
* Record some audio via the Gertboard
|
4
|
+
*
|
5
|
+
* Copyright (c) 2013 Gordon Henderson
|
6
|
+
***********************************************************************
|
7
|
+
*/
|
8
|
+
|
9
|
+
#include <stdio.h>
|
10
|
+
#include <sys/time.h>
|
11
|
+
|
12
|
+
#include <wiringPi.h>
|
13
|
+
#include <gertboard.h>
|
14
|
+
|
15
|
+
#define B_SIZE 40000
|
16
|
+
|
17
|
+
int main ()
|
18
|
+
{
|
19
|
+
int i ;
|
20
|
+
struct timeval tStart, tEnd, tTaken ;
|
21
|
+
unsigned char buffer [B_SIZE] ;
|
22
|
+
|
23
|
+
printf ("\n") ;
|
24
|
+
printf ("Gertboard demo: Recorder\n") ;
|
25
|
+
printf ("========================\n") ;
|
26
|
+
|
27
|
+
// Always initialise wiringPi. Use wiringPiSys() if you don't need
|
28
|
+
// (or want) to run as root
|
29
|
+
|
30
|
+
wiringPiSetupSys () ;
|
31
|
+
|
32
|
+
// Initialise the Gertboard analog hardware at pin 100
|
33
|
+
|
34
|
+
gertboardAnalogSetup (100) ;
|
35
|
+
|
36
|
+
gettimeofday (&tStart, NULL) ;
|
37
|
+
|
38
|
+
for (i = 0 ; i < B_SIZE ; ++i)
|
39
|
+
buffer [i] = analogRead (100) >> 2 ;
|
40
|
+
|
41
|
+
gettimeofday (&tEnd, NULL) ;
|
42
|
+
|
43
|
+
timersub (&tEnd, &tStart, &tTaken) ;
|
44
|
+
|
45
|
+
printf ("Time taken for %d reads: %ld.%ld\n", B_SIZE, tTaken.tv_sec, tTaken.tv_usec) ;
|
46
|
+
|
47
|
+
gettimeofday (&tStart, NULL) ;
|
48
|
+
|
49
|
+
for (i = 0 ; i < B_SIZE ; ++i)
|
50
|
+
analogWrite (100, buffer [i]) ;
|
51
|
+
|
52
|
+
gettimeofday (&tEnd, NULL) ;
|
53
|
+
|
54
|
+
timersub (&tEnd, &tStart, &tTaken) ;
|
55
|
+
|
56
|
+
printf ("Time taken for %d writes: %ld.%ld\n", B_SIZE, tTaken.tv_sec, tTaken.tv_usec) ;
|
57
|
+
|
58
|
+
return 0 ;
|
59
|
+
}
|
60
|
+
|