http://forum.hobbycomponents.com/viewtopic.php?f=73&t=1781&hilit=hcmodu0079
Descripcin
Este trabajo est basado en la pgina mostrada arriba.
Realmente no entiendo la filosofa del diseo, pero funciona muy bien. Solo le aument el
retardo porque repeta las lecturas y le agreg el sonido con un buzzer, a travs de un PIN
PWM para variarle la tensin de alimentacin o sea variarle el volumen. El sonido indica
que la tecla envi el dato.
Este teclado tctil capacitivo de 16 teclas se basa en el sensor capacitivo TTP229 con
deteccin de hasta 16 teclas. El uso de este teclado ofrece una alternativa para los
teclados de tipo mecnicos con la ventaja de una mayor durabilidad especialmente en
ambientes polvorientos . El teclado se puede configurar en diferentes modos que
proporcionan el uso de hasta 16 teclas independientes.
Las salidas 1 a 8 en el conector de cabecera permite el uso de 8 teclas .
Para usar las 16 16 teclas se hace a travs de su interfaz en serie de 2 hilos .
Nota: Por defecto, el teclado est en modo de 8 teclas. Para configurarlo para el modo 16
se deben puentear las pistas TP2 (ver diagrama) .
Auto calibration at power up (keypad must not be touched for 0.5 seconds after power up)
Auto calibration for changes in environment
Conexionado de la Plaqueta
1.....VCC (2.4 - 5.5V)
2.....GND
3.....SCL (serial clock in)
4.....SDO (serial data out)
5.....OUT 1 (key 1 state)
6.....OUT 2 (key 2 state)
7.....OUT 3 (key 3 state)
8.....OUT 4 (key 4 state)
9.....OUT 5 (key 5 state)
10...OUT 6 (key 6 state)
11...OUT 7 (key 7 state)
12...OUT 8 (key 8 state)
Puenteado de TP2
Cableado
{
Key = Read_Keypad(); // Leer el estado del teclado
if (Key)
{
Serial.println(Key);
analogWrite(SonidoPin, 100); // se escribe el valor de PWM, para generar sonido.
Control de volumen
delay(50);
analogWrite(SonidoPin, 0); // se escribe el valor de PWM
}
delay(450); // Espera
} // FIN del void loop()
byte Read_Keypad(void) // Lee el estado del teclado
{
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;
}