sexta-feira, 22 de janeiro de 2016

Teclado Matricial 4x3 - Arquivo 002

Referência:
http://www.arduinoecia.com.br/2015/05/teclado-matricial-membrana-4x3-arduino.html

Lista de Materiais:
IDE Arduino 1.0.6
1x  Board Arduino UNO
1x  Protoboard 830 furos
1x  Cabo USB-A male to USB-B male 
1x  Conj. de fios jumper p/ protoboard
1x  Teclado matricial 4x3

Montagem:
Detalhes do teclado 4x3:


*Para que o teclado matricial opere na configuração 4 Linhas e 3 Colunas os Pinos 8 e 9 devem ser ligados aos pinos 6 e 7, conforme a sequência Pino 8 - 6 e Pino 7 - 9.




Firmware 01:
void setup(){
  //Pinos ligados aos pinos 4, 5, 6 e 7 do teclado - Linhas
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  //Pinos ligados aos pinos 8, 9, e 10 do teclado - Colunas
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  //Ativacao resistor pull-up
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
 
  Serial.begin(9600);
  Serial.println("Teclado 4x3 - Exemplo 1");
  Serial.println("Aguardando acionamento das teclas...");
  Serial.println();
}

void loop(){
    for (int porta = 4; porta<8; porta++){
      //Alterna o estado dos pinos das linhas
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
      digitalWrite(porta, LOW);
      //Verifica se alguma tecla da coluna 1 foi pressionada
      if (digitalRead(8) == LOW){
        imprime_linha_coluna(porta-3, 3);
        while(digitalRead(8) == LOW){}
      }

      //Verifica se alguma tecla da coluna 2 foi pressionada  
      if (digitalRead(9) == LOW){
        imprime_linha_coluna(porta-3, 2);
        while(digitalRead(9) == LOW){};
      }
   
      //Verifica se alguma tecla da coluna 3 foi pressionada
      if (digitalRead(10) == LOW){
        imprime_linha_coluna(porta-3, 1);
        while(digitalRead(10) == LOW){}
      }
    }
   delay(10);
 }

void imprime_linha_coluna(int x, int y){
  Serial.print("Linha : ");
  Serial.print(x);
  Serial.print(" x Coluna : ");
  Serial.print(y);
  delay(10);
  Serial.println();
}

Firmware 02:
#include <Keypad.h>

//Definicao da quantidade de linhas e colunas
const byte LINHAS = 4;
const byte COLUNAS = 3;

//Matriz de caracteres
char matriz_teclas[LINHAS][COLUNAS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

//Definicao dos pinos das linhas
byte PinosLinhas[LINHAS] = {4, 5, 6, 7};
//Definicao dos pinos das colunas
byte PinosColunas[COLUNAS] = {10, 9, 8};

//Inicializa o teclado
Keypad meuteclado = Keypad( makeKeymap(matriz_teclas), PinosLinhas,
                            PinosColunas, LINHAS, COLUNAS);

void setup(){
  Serial.begin(9600);
  Serial.println("Teclado 4x3 - Exemplo biblioteca Keypad");
  Serial.println("Aguardando acionamento das teclas...");
  Serial.println();
}

void loop(){
  char tecla_pressionada = meuteclado.getKey();
  if (tecla_pressionada){
    Serial.print("Tecla pressionada : ");
    Serial.println(tecla_pressionada);
  }

}

Download: Keypad.h

Nenhum comentário:

Postar um comentário