TUTORIAL TECLADO CAPACITIVO DE 16 TECLAS TTP229

 Paso # 1: Descripción

Este teclado de 16 botones está basado en el sensor capacitivo TTP229. Éste es usado como una buena alternativa para los teclados mecánicos existentes, proporcionando más durabilidad en condiciones de trabajo pesado. El teclado se puede configurar como 8 botones o 16.

Las salidas del 1-8 están mapeadas directamente al conector del teclado. Cuando se requiera conectarse los 16 botones se realizará leyendo por medio de una interface serial de 2 vías. Esto se explicará a continuación. Una vez conectado el hardware y descargando el código al Arduino, se puede pulsar los botones y observar los resultados en el Serial Monitor del software Arduino.

Paso 2: Hardware Conexión 8 botones

Esta configuración aplica si se requiere utilizar los botones del 1-8. Esta configuración es sencilla. Solamente se conectan los 10 pines del header del Teclado hacia el Arduino como se muestra a continuación.


1

 

Paso 3: Software (Código 8 Botones)

boolean yaImprimi = false;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);

Serial.begin(9600);
}

void loop(){

for(int i = 2; i <= 9; i++){
if(digitalRead(i)){ //detectar si ya se presionó una tecla
if(!yaImprimi){
Serial.print("Se presiono el boton: ");
Serial.println(i - 1);
}
}
}

yaImprimi = false;
for(int j = 2; j <= 9; j++){
if(digitalRead(j)){
yaImprimi = true;
}
}
delay(100);
}

Paso 4: Hardware Conexión 16 botones

Esta configuración aplica si se requiere utilizar los botones del 1-16. Primeramente tiene que saber que para esta configuración se realizará por medio de una interface serial de 2 vías a través de SCL y SDO.

Esto es lo que sucede: El Arduino le pregunta al Teclado si se presionó un botón a través de su reloj interno con el pin SCL (1).  El Teclado lo recibe (2). Si se da cuenta que hubo un cambio en el valor capacitivo de algún botón inmediatamente el Teclado manda una señal al Arduino a través del pin SDO (3). El Arduino recibe el # del botón presionado (4). Esto se puede ver en la gráfica siguiente.

2

A continuación la conexión entre el Arduino y el Teclado. Cablear como se muestra a continuación y además hacer un enlace en el Teclado mostrado en naranja para configurarlo como 16 botones. Para hacer esto es necesario soldar un cable pequeño para unir estas 2 terminales.

3

4

 

Paso 5: Software (Código de 16 Botones)

/* Define the digital pins used for the clock and data */
#define SCL_PIN 8
#define SDO_PIN 9

/* Used to store the key state */
byte Key;

void setup()
{
/* Initialize the serial interface */
Serial.begin(9600);
/* Configure the clock and data pins */
pinMode(SCL_PIN, OUTPUT);
pinMode(SDO_PIN, INPUT);
}

/* Main program */
void loop()
{
/* Read the current state of the keypad */
Key = Read_Keypad();
/* If a key has been pressed output it to the serial port */
if (Key)
Serial.println(Key);
/* Wait a little before reading again
so not to flood the serial port*/
delay(200);
}
/* Read the state of the keypad */
byte Read_Keypad(void)
{
byte Count;
byte Key_State = 0;
/* Pulse the clock pin 16 times (one for each key of the keypad)
and read the state of the data pin on each pulse */
for(Count = 1; Count <= 16; Count++)
{
digitalWrite(SCL_PIN, LOW);

/* If the data pin is low (active low mode) then store the
current key number */
if (!digitalRead(SDO_PIN))
Key_State = Count;
digitalWrite(SCL_PIN, HIGH);
}
return Key_State;
}