Olá, boa tarde!
Estou com alguns problemas ligando um teclado telefônico ao Arduino (Freeduino BR / Arduino NG com ATMega 8-16 PU):
Estou usando uma versão modificada da bibliteca de keypad daqui que coloco aqui embaixo:
// Teste de Teclado Telefônico baseado no arquivo de Mark Stanley <mstanley@technologist.com>
#include <keypad.h>
#define ROWS 4
#define COLS 3
keypad kpd = keypad(ROWS, COLS);
//#define COL0 6
//#define COL1 5
//#define COL2 4
//#define COL3 7
//#define ROW0 3
//#define ROW1 2
//#define ROW2 1
//#define ROW3 0
int LedPin = 13 ; // Sinaliza que o pino 13 é ligado ao LED
void setup()
{
kpd.init(); // Inicia o teclado em matriz 4x3
pinMode(LedPin, OUTPUT); // Acerta o pino do LED como saída
Serial.begin(9600); // Inicia a conexão serial em 9600 bauds
Serial.print("Pronto"); // Sinaliza ao operador
}
void loop()
{
char key = kpd.get_key(); // Quantifica a variavel key sobre o comando digitado no teclado
if(key != '\0') // Logo, se key é de valor diferente de \0
{
Serial.print(key); // Será mostrado no monitor serial este valor
digitalWrite(LedPin, HIGH); // Acende o Led, para indicativo de tecla apertada
delay (100); // Delay de 0,1 s para a piscada
digitalWrite(LedPin, LOW); // Apaga o Led, para indicativo de tecla apertada
}
delay(100); // Delay de 0,1 s para envio de dados
}
O problema é o seguinte: Não sei ONDE está o problema, mas a questão é que tanto no monitor serial quanto no LED, há entrada de dados sem eu sequer tocar no teclado, como por exemplo, está ocorrendo agora :-D
Isto é o que eu recebo do monitor:
Pronto71322222223333333333333333252556556666665555555555555552222333666633333333322222333663333333333333222
Somente os dígitos como o 1 foi algo que de fato eu digitei, o resto surgiu.
Presumo ser o teclado, mas, como não tenho como ter esta certeza... Vou ter que destroçar mais um telefone...

See ya! []'s