Commit f0d8dc8f6025a054c5f9c966a4d54a34d943f499
1 parent
baa616ee
FULL ok keygrab
avec le clavier 12 touches capacitives Adafruit MPR121 version debug
Showing
1 changed file
with
106 additions
and
11 deletions
Show diff stats
keygrbb.ino
... | ... | @@ -20,14 +20,20 @@ Adafruit_MPR121 cap = Adafruit_MPR121(); |
20 | 20 | uint16_t lasttouched = 0; |
21 | 21 | uint16_t currtouched = 0; |
22 | 22 | int tab[]={3,7,15,2,6,14,1,5,9,0,4,8}; |
23 | -File fichier; | |
23 | +File fichier,fichier2; | |
24 | 24 | String filename="texte.txt"; |
25 | -char c; | |
25 | +String filename2="texto.txt"; | |
26 | +char c; boolean written; | |
27 | + | |
28 | + | |
29 | + | |
30 | + | |
31 | + | |
32 | + | |
33 | + | |
34 | + | |
26 | 35 | |
27 | 36 | |
28 | -void Printstr(String msg){ | |
29 | - Serial.println(msg); | |
30 | -} | |
31 | 37 | |
32 | 38 | void keyboardprint ( String texte ){ |
33 | 39 | int i = 0; |
... | ... | @@ -51,6 +57,16 @@ void keyboardprint ( String texte ){ |
51 | 57 | } |
52 | 58 | } |
53 | 59 | |
60 | + | |
61 | + | |
62 | + | |
63 | + | |
64 | + | |
65 | + | |
66 | + | |
67 | + | |
68 | + | |
69 | + | |
54 | 70 | void setup() { |
55 | 71 | //keyboard out |
56 | 72 | pinMode(2, INPUT_PULLUP); |
... | ... | @@ -68,11 +84,17 @@ void setup() { |
68 | 84 | } |
69 | 85 | Serial.println("SD OK"); |
70 | 86 | |
71 | - //File | |
87 | + //File1 | |
72 | 88 | while( !(fichier=SD.open(filename,FILE_WRITE)) ){ |
73 | 89 | delay(1000); |
74 | 90 | } |
75 | 91 | Serial.println("file OK"); |
92 | + | |
93 | + //File2 | |
94 | + while( !(fichier2=SD.open(filename,FILE_WRITE)) ){ | |
95 | + delay(1000); | |
96 | + } | |
97 | + Serial.println("file2 OK"); | |
76 | 98 | |
77 | 99 | //keyboard in |
78 | 100 | Serial.println("Adafruit MPR121 Capacitive Touch sensor test"); |
... | ... | @@ -103,12 +125,25 @@ void setup() { |
103 | 125 | void loop() { |
104 | 126 | // Get the currently touched pads |
105 | 127 | currtouched = cap.touched(); |
106 | - /* | |
128 | + written=false; | |
129 | + | |
130 | + | |
131 | + | |
132 | + | |
133 | + | |
107 | 134 | //effacement de la mémoire |
108 | 135 | if ((currtouched & _BV(2)) && !(lasttouched & _BV(2)) ) { |
109 | 136 | Serial.println("D"); |
137 | + fichier.close(); | |
138 | + SD.remove(filename); | |
139 | + fichier=SD.open(filename,FILE_WRITE); | |
140 | + | |
141 | + fichier2.close(); | |
142 | + SD.remove(filename2); | |
143 | + fichier=SD.open(filename2,FILE_WRITE); | |
144 | + | |
110 | 145 | //effacer ce qui est présent dans la carte SD |
111 | - }*/ | |
146 | + } | |
112 | 147 | //récupération des entrées |
113 | 148 | if ((currtouched & _BV(5)) && !(lasttouched & _BV(5))) { |
114 | 149 | Serial.println("R"); |
... | ... | @@ -116,30 +151,89 @@ void loop() { |
116 | 151 | while((c=fichier.read())!=-1){ |
117 | 152 | Keyboard.write(c); |
118 | 153 | } |
154 | + Keyboard.write(KEY_RETURN); | |
155 | + Keyboard.write(KEY_RETURN); | |
156 | + | |
157 | + fichier2.seek(0); | |
158 | + while((c=fichier2.read())!=-1){ | |
159 | + Keyboard.write(c); | |
160 | + } | |
119 | 161 | } |
120 | - | |
162 | + | |
163 | + | |
164 | + | |
165 | + | |
166 | + | |
167 | + | |
168 | + | |
169 | + | |
170 | + | |
171 | + | |
172 | + | |
173 | + | |
121 | 174 | |
122 | 175 | for (uint8_t i=0; i<12; i++) { |
176 | + | |
177 | + if(i==2 || i==5)i++;//ne pas traiter R et D | |
178 | + | |
123 | 179 | // it if *is* touched and *wasnt* touched before, alert! |
124 | 180 | if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) { |
181 | + written=true; | |
125 | 182 | Serial.print(tab[i]); Serial.println(" touched"); |
126 | 183 | c=('0'+tab[i]); |
184 | + fichier2.write('<'); | |
185 | + fichier2.write(c); | |
186 | + fichier2.write('>'); | |
127 | 187 | Keyboard.press(c); |
128 | 188 | } |
189 | + | |
129 | 190 | // if it *was* touched and now *isnt*, alert! |
130 | 191 | if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) { |
192 | + written=true; | |
131 | 193 | Serial.print(tab[i]); Serial.println(" released"); |
132 | 194 | c=('0'+tab[i]); |
195 | + fichier2.write('>'); | |
196 | + fichier2.write(c); | |
197 | + fichier2.write('<'); | |
198 | + | |
199 | + fichier.write(c); | |
133 | 200 | Keyboard.release(c); |
134 | 201 | } |
135 | - if(i==1 || i==5)i++; | |
136 | 202 | } |
203 | + if(written){ | |
204 | + fichier.write('\n'); | |
205 | + fichier.flush();//force l'enregistrement physique des données | |
206 | + fichier2.write('\n'); | |
207 | + fichier2.flush(); | |
208 | + } | |
209 | + | |
210 | + | |
211 | + | |
212 | + | |
213 | + | |
214 | + | |
215 | + | |
216 | + | |
217 | + | |
137 | 218 | |
138 | 219 | // reset our state |
139 | 220 | lasttouched = currtouched; |
140 | 221 | |
141 | 222 | // comment out this line for detailed data from the sensor! |
142 | 223 | return; |
224 | + | |
225 | + | |
226 | + | |
227 | + | |
228 | + | |
229 | + | |
230 | + | |
231 | + | |
232 | + | |
233 | + | |
234 | + | |
235 | + | |
236 | + | |
143 | 237 | |
144 | 238 | // debugging info, what |
145 | 239 | Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX); |
... | ... | @@ -159,4 +253,5 @@ void loop() { |
159 | 253 | } |
160 | 254 | |
161 | 255 | |
162 | -// >v< <v> | |
256 | +// v released >v< | |
257 | +// v pressed <v> | |
163 | 258 | \ No newline at end of file | ... | ... |