Teclado Matricial - Sem Biblioteca + Deboucing

Bom dia a todos (a) !

Me chamo Igor Henrique e desde já, peço desculpa por não falar a língua nativa do fórum, e caso eu cometa algum equivoco, peço gentilmente a compreensão de todos, visto que é a primeira que decido criar um tópico aqui no grupo.

Bom, tudo começou quando recebi um convite de um professor de uma Escola Técinica Federal do estado do Espirito Santo - Brasil, para auxiliar o mesmo a passar um curso de robótica para seus jovens alunos. O projeto teve iniciativa de uma outra Sede do instituto, na capital, visando levar a tecnologia para locais mais remotos (Interior). Aqui na região, esses tipos de conteúdos são pouco visto/conhecido pela população. Sendo assim, me senti no dever de compartilhar meu amor pelo mundo da robótica/eletrônica/Arduino a frente, junto com esse projeto. Sem mais delongas... Estou com um projeto de uma trava eletrônica, utilizando um UNO, Display (16x2) I2C e um Teclado Matricial de Membrana (4x4).
Como o objetivo é ensinar, estou evitando o uso de bibliotecas, para que o aluno entenda o que ele está fazendo.

Gostaria de compartilhar um link do meu projeto no Tinkercad, para que fique mais fácil a compreensão do meu projeto.

A principio, está funcionando a função do meu teclado, porém vejo que ocorre muitas leituras desnecessárias no botão (na variável "bnt"). Gostaria de corrigir essa parte e peço o apoio de vocês.

Link do Projeto no Tinkercad:

Trava_eletrica.ino (1.0 KB)

Boa tarde Igor (xará do meu neto).
Vou analisar seu código e ver se consigo dar sugestões.
Gosto muito do trabalho das escolas técnicas brasileira, e onde poder ajudar, eu o farei.
Eu não tenho login no tinker cad, então farei a simulação no wokwi.

Boa tarde amigo!
Fico grato pelo pelo seu apoio. O tikercad tem a opção de usar a conta do Google, caso tenha interesse... Mas se quiser também posso fazer o projeto no Protheus, caso queira. Mas onde for melhor da sua parte, já está ótimo!

Eu poderia apenas usar uma biblioteca, pegar um código parecido e modifica-lo de acordo com meu interesse. Mas acredito que dessa forma, perderíamos o objetivo com o curso na qual me dediquei a ajudar e seus alunos.

Novamente, muito obrigado!

E a cada colaborador, farei questão de divulgar nos créditos do código e no evento que os alunos irão nesta segunda feira.

Veja se este codigo atende sua necessidade.

Está simulado em : " KeyPad_No_Lib - Wokwi ESP32, STM32, Arduino Simulator

// https://forum.arduino.cc/t/teclado-matricial-sem-biblioteca-deboucing/1269509
/* Projeto de Tranca Eletrônica

  Autor: Igor Henrique Moreira Lusquinho
  Data:06/06/2024
*/

#define buzzer 10
#define trava 13
unsigned short linhas[] = {9, 8, 7, 6};
unsigned short colunas[] = {5, 4, 3, 2};
char keypad[] = {'1', '2', '3', 'A', '4', '5', '6', 'B', '7', '8', '9', 'C', '*', '0', '#', 'D'};
int btn = 0;
void matricial();
void display();
boolean flag_btn = true;
//----------------------------------------------------------------------
void setup() {
  Serial.begin(9600);
  pinMode(buzzer, OUTPUT);
  pinMode(trava, INPUT);
  for (int i = 0; i < 4; i++)
  {
    pinMode(linhas[i], OUTPUT);
    pinMode(colunas[i], INPUT);
    digitalWrite(linhas[i], HIGH);
    digitalWrite(colunas[i], HIGH);
  }
}
//---------------------------------------------------------------------- -
void loop() {
  matricial();
}
//---------------------------------------------------------------------- -
void matricial() {
  for (short l = 0; l < 4; l++) {
    digitalWrite(linhas[l], LOW);
    for (short c = 0; c < 4; c++) {
      while (!digitalRead(colunas[c]) ) {
        btn = (l * 4) + (c);
        flag_btn = false;
      }
      if (flag_btn == false) {
        Serial.print(keypad[btn]);
        flag_btn = true;
      }
    }
    digitalWrite(linhas[l], HIGH);
  }
}

Bom dia !

Cara funcionou deliciosamente !

Muito obrigado mesmo por seu apoio. Consegui fazer um cofre junto com os alunos e foi divulgado em um evento para o município através da secretaria de educação.
Foi muito satisfatório ver a empolgação dos jovens, principalmente das meninas, visto que as mulheres estão se interessando pelo mundo da programação/eletronica.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.