LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: almamater em 17 de Junho de 2011, 12:50

Título: 4x4 Keypad
Enviado por: almamater em 17 de Junho de 2011, 12:50
Tenho aqui uma coisa destas:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg853.imageshack.us%2Fimg853%2F5293%2F44key1.th.jpg&hash=f092e0fd181dffc62342b91f35e4389ed8b707b2) (http://img853.imageshack.us/i/44key1.jpg/)

"8 Pin keyboard scan."
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg535.imageshack.us%2Fimg535%2F8906%2F44key2.th.jpg&hash=e2763c30f4ca85e0b0b774da90300838ce72e531) (http://img535.imageshack.us/i/44key2.jpg/)

Confirmem só se posso fazer a ligação desta forma ao Arduino:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg694.imageshack.us%2Fimg694%2F8613%2Figp2847.th.jpg&hash=60e714676eb6bbd237188a83f18e3d8c110c1677) (http://imageshack.us/photo/my-images/694/igp2847.jpg/)
Encontrei na web este esquema

Ligar os 8 pinos do teclado com resistências de 1K aos pinos do Arduino e usar a Library http://www.arduino.cc/playground/Code/Keypad#Download (http://www.arduino.cc/playground/Code/Keypad#Download) "Keypad.h":

Código: [Seleccione]
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'#','0','*','D'}
};
byte rowPins[ROWS] = {8, 7, 6, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {12, 11, 10, 9}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}

void loop(){
  char key = keypad.getKey();

  if (key != NO_KEY){
    Serial.println(key);
  }
}
Título: Re: 4x4 Keypad
Enviado por: almamater em 21 de Junho de 2011, 10:34
Funcionou! 8 resistências de 1 K e voilá :) nada se estragou.
Título: Re: 4x4 Keypad
Enviado por: StarRider em 22 de Junho de 2011, 13:06
Boas,

Nem sequer era necessário as resistências, usavas os internal pullup ...

Abraços,
PA
Título: Re: 4x4 Keypad
Enviado por: almamater em 22 de Junho de 2011, 13:13
Boas,

Nem sequer era necessário as resistências, usavas os internal pullup ...

Abraços,
PA

Pois.. devia dar de facto.. seria só
Código: [Seleccione]
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Título: Re: 4x4 Keypad
Enviado por: shenzi em 09 de Julho de 2011, 16:09
tenho um keypad 3x4, existe algum problema de não meter nenhuma resistência?
Título: Re: 4x4 Keypad
Enviado por: Njay em 09 de Julho de 2011, 17:00
As resistências no esquema da foto não estão a fazer pull-up. Se esse teclado é mesmo um "scan keyboard" tipico, funcionou apenas por sorte.
Título: Re: 4x4 Keypad
Enviado por: almamater em 11 de Julho de 2011, 10:17
então secalhar não é um dos teclados 'típicos', pois funcionou bem.. várias vezes e com códigos diferentes..
Título: Re: 4x4 Keypad
Enviado por: Njay em 11 de Julho de 2011, 10:22
Se calhar a biblioteca do Arduino já activa os pull-ups do AVR.
Título: Re: 4x4 Keypad
Enviado por: almamater em 11 de Julho de 2011, 10:47
então deve ser isso :), eu liguei como no esquema que referi, com resistências de 1K em todos os pinos do Keypad :D