El chip TTP223 montado en multitud de sensores táctiles capacitaros permite detectar las pulsaciones realzadas con nuestro dedo e incluso sin necesidad de llegar a tocar la almohadilla/zona de cobre que hace de receptor en la placa.
El módulo funciona exactamente igual que cualquier otro pulsador por lo que no hace falta usar ninguna librería, cuando no detecte señal el Arduino leerá un LOW/FALSE y cuando si detecte la pulsación leerá un HIGH/TRUE.
Los siguientes dos códigos hacen cambiar los colores de un led RGB, el primero de ellos es mas simple y no controla los rebotes o pulsaciones prolongadas por lo que la intensidad de brillo varia muy rápidamente, por contra el segundo código si lo controla y nos fuerza a separar el dedo y pulsar de nuevo para que el brillo aumente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#define pSEN1 A0 #define pSEN2 A1 #define pSEN3 A2 #define pLEDR 3 #define pLEDG 5 #define pLEDB 6 byte vRED = 0; byte vGREEN = 0; byte vBLUE = 0; void setup() { pinMode(pSEN1, INPUT); pinMode(pSEN2, INPUT); pinMode(pSEN3, INPUT); pinMode(pLEDR, OUTPUT); pinMode(pLEDG, OUTPUT); pinMode(pLEDB, OUTPUT); } void loop() { if( digitalRead(pSEN1) ) { vRED = (vRED+5 <= 255 ? vRED+5 : 0); delay(100); } if( digitalRead(pSEN2) ) { vGREEN = (vGREEN+5 <= 255 ? vGREEN+5 : 0); delay(100); } if( digitalRead(pSEN3) ) { vBLUE = (vBLUE+5 <= 255 ? vBLUE+5 : 0); delay(100); } analogWrite(pLEDR, vRED); analogWrite(pLEDG, vGREEN); analogWrite(pLEDB, vBLUE); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#define pSEN1 A0 #define pSEN2 A1 #define pSEN3 A2 #define pLEDR 3 #define pLEDG 5 #define pLEDB 6 byte vRED = 0; byte vGREEN = 0; byte vBLUE = 0; void setup() { pinMode(pSEN1, INPUT); pinMode(pSEN2, INPUT); pinMode(pSEN3, INPUT); pinMode(pLEDR, OUTPUT); pinMode(pLEDG, OUTPUT); pinMode(pLEDB, OUTPUT); } void loop() { if( digitalRead(pSEN1) ) { while(digitalRead(pSEN1)); vRED = (vRED+5 <= 255 ? vRED+5 : 0); delay(100); } if( digitalRead(pSEN2) ) { while(digitalRead(pSEN2)); vGREEN = (vGREEN+5 <= 255 ? vGREEN+5 : 0); delay(100); } if( digitalRead(pSEN3) ) { while(digitalRead(pSEN3)); vBLUE = (vBLUE+5 <= 255 ? vBLUE+5 : 0); delay(100); } analogWrite(pLEDR, vRED); analogWrite(pLEDG, vGREEN); analogWrite(pLEDB, vBLUE); } |