Blame view

keygrbb.ino 4.19 KB
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>