d57f2358
mduquesn
usb
|
1
2
3
4
5
6
7
8
|
#include <Keyboard.h>
#include <Wire.h>
#include "Adafruit_MPR121.h"
#include <string.h>
#define ti 20
|
45bbb2b8
mduquesn
setup sd file ok
|
9
10
|
#include<SD.h>
|
d57f2358
mduquesn
usb
|
11
12
13
14
15
16
17
18
19
20
21
22
|
#ifndef _BV
#define _BV(bit) (1 << (bit))
#endif
// You can have up to 4 on one i2c bus but one is enough for testing!
Adafruit_MPR121 cap = Adafruit_MPR121();
// Keeps track of the last pins touched
// so we know when buttons are 'released'
uint16_t lasttouched = 0;
uint16_t currtouched = 0;
int tab[]={3,7,15,2,6,14,1,5,9,0,4,8};
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
23
|
File fichier,fichier2;
|
45bbb2b8
mduquesn
setup sd file ok
|
24
|
String filename="texte.txt";
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
25
26
27
28
29
30
31
32
33
34
|
String filename2="texto.txt";
char c; boolean written;
|
d57f2358
mduquesn
usb
|
35
36
|
|
d57f2358
mduquesn
usb
|
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
void keyboardprint ( String texte ){
int i = 0;
while (texte[i]!='\0'){
if(texte[i]=='@'){
Keyboard.write('"');
}
else if(texte[i]=='"'){
Keyboard.write('@');
}
else if(texte[i]=='\\'){
Keyboard.press(KEY_RIGHT_ALT);
Keyboard.press(92);
}
else {
Keyboard.write(texte[i]);
}
delay(ti);
Keyboard.releaseAll();
i++;
}
}
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
60
61
62
63
64
65
66
67
68
69
|
|
d57f2358
mduquesn
usb
|
70
71
72
73
74
75
76
|
void setup() {
//keyboard out
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
//Serial
Serial.begin(9600);
|
d57f2358
mduquesn
usb
|
77
78
79
|
while (!Serial) { // needed to keep leonardo/micro from starting too fast!
delay(10);
}
|
45bbb2b8
mduquesn
setup sd file ok
|
80
81
82
83
84
85
86
|
//SD
while(! SD.begin(4)){
delay(1000);
}
Serial.println("SD OK");
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
87
|
//File1
|
45bbb2b8
mduquesn
setup sd file ok
|
88
89
90
91
|
while( !(fichier=SD.open(filename,FILE_WRITE)) ){
delay(1000);
}
Serial.println("file OK");
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
92
93
94
95
96
97
|
//File2
while( !(fichier2=SD.open(filename,FILE_WRITE)) ){
delay(1000);
}
Serial.println("file2 OK");
|
d57f2358
mduquesn
usb
|
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
//keyboard in
Serial.println("Adafruit MPR121 Capacitive Touch sensor test");
// Default address is 0x5A, if tied to 3.3V its 0x5B
// If tied to SDA its 0x5C and if SCL then 0x5D
if (!cap.begin(0x5A)) {
Serial.println("MPR121 not found, check wiring?");
while (1);
}
Serial.println("MPR121 found!");
}
|
45bbb2b8
mduquesn
setup sd file ok
|
115
116
117
118
119
120
121
122
123
124
|
|
d57f2358
mduquesn
usb
|
125
126
127
|
void loop() {
// Get the currently touched pads
currtouched = cap.touched();
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
128
129
130
131
132
133
|
written=false;
|
2173a6d3
bjeanlou
init gestion des ...
|
134
|
//effacement de la mémoire
|
45bbb2b8
mduquesn
setup sd file ok
|
135
136
|
if ((currtouched & _BV(2)) && !(lasttouched & _BV(2)) ) {
Serial.println("D");
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
137
138
139
140
141
142
143
144
|
fichier.close();
SD.remove(filename);
fichier=SD.open(filename,FILE_WRITE);
fichier2.close();
SD.remove(filename2);
fichier=SD.open(filename2,FILE_WRITE);
|
2173a6d3
bjeanlou
init gestion des ...
|
145
|
//effacer ce qui est présent dans la carte SD
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
146
|
}
|
2173a6d3
bjeanlou
init gestion des ...
|
147
|
//récupération des entrées
|
45bbb2b8
mduquesn
setup sd file ok
|
148
149
150
151
152
|
if ((currtouched & _BV(5)) && !(lasttouched & _BV(5))) {
Serial.println("R");
fichier.seek(0);
while((c=fichier.read())!=-1){
Keyboard.write(c);
|
2173a6d3
bjeanlou
init gestion des ...
|
153
|
}
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
154
155
156
157
158
159
160
|
Keyboard.write(KEY_RETURN);
Keyboard.write(KEY_RETURN);
fichier2.seek(0);
while((c=fichier2.read())!=-1){
Keyboard.write(c);
}
|
45bbb2b8
mduquesn
setup sd file ok
|
161
|
}
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
162
163
164
165
166
167
168
169
170
171
172
173
|
|
d57f2358
mduquesn
usb
|
174
175
|
for (uint8_t i=0; i<12; i++) {
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
176
177
178
|
if(i==2 || i==5)i++;//ne pas traiter R et D
|
d57f2358
mduquesn
usb
|
179
180
|
// it if *is* touched and *wasnt* touched before, alert!
if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
181
|
written=true;
|
d57f2358
mduquesn
usb
|
182
|
Serial.print(tab[i]); Serial.println(" touched");
|
45bbb2b8
mduquesn
setup sd file ok
|
183
|
c=('0'+tab[i]);
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
184
185
186
|
fichier2.write('<');
fichier2.write(c);
fichier2.write('>');
|
45bbb2b8
mduquesn
setup sd file ok
|
187
|
Keyboard.press(c);
|
d57f2358
mduquesn
usb
|
188
|
}
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
189
|
|
d57f2358
mduquesn
usb
|
190
191
|
// if it *was* touched and now *isnt*, alert!
if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
192
|
written=true;
|
d57f2358
mduquesn
usb
|
193
|
Serial.print(tab[i]); Serial.println(" released");
|
45bbb2b8
mduquesn
setup sd file ok
|
194
|
c=('0'+tab[i]);
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
195
196
197
198
199
|
fichier2.write('>');
fichier2.write(c);
fichier2.write('<');
fichier.write(c);
|
45bbb2b8
mduquesn
setup sd file ok
|
200
|
Keyboard.release(c);
|
d57f2358
mduquesn
usb
|
201
|
}
|
d57f2358
mduquesn
usb
|
202
|
}
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
if(written){
fichier.write('\n');
fichier.flush();//force l'enregistrement physique des données
fichier2.write('\n');
fichier2.flush();
}
|
d57f2358
mduquesn
usb
|
218
219
220
221
222
223
|
// reset our state
lasttouched = currtouched;
// comment out this line for detailed data from the sensor!
return;
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
224
225
226
227
228
229
230
231
232
233
234
235
236
|
|
d57f2358
mduquesn
usb
|
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
|
// debugging info, what
Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX);
Serial.print("Filt: ");
for (uint8_t i=0; i<12; i++) {
Serial.print(cap.filteredData(i)); Serial.print("\t");
}
Serial.println();
Serial.print("Base: ");
for (uint8_t i=0; i<12; i++) {
Serial.print(cap.baselineData(i)); Serial.print("\t");
}
Serial.println();
// put a delay so it isn't overwhelming
delay(100);
|
45bbb2b8
mduquesn
setup sd file ok
|
253
254
255
|
}
|
f0d8dc8f
mduquesn
FULL ok keygrab
|
256
257
|
// v released >v<
// v pressed <v>
|