TECHNICAL SUPPORT
Monday to Friday by e-mail:
suporte@robocore.net
CONTACT INFORMATION
Monday to Friday from 8:00 to 17:30
+55 11 3522-7626 / vendas@robocore.net
Back
to top

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Autor
Mensagem
3
fabiolivera2016

Level 0
2000 xp

Registrado em:
16/01/2021





Mensagens:
1
3
fabiolivera2016

Responder com citações
Mensagem Sab Jan 16, 2021 7:05 pm
Teclado Matricial 4x4 e LEDS
Olá, recentemente me envolvi em um projeto de alarme e incêndio e surgiu a ideia de representar diferentes setores de uma maquete com um LED diferente. Em primeiro caso resolvi utilizar um teclado matricial para acender diferentes LEDs.
Eu sei como funciona o teclado matricial porém não consigo definir uma forma para manter um LED aceso quando uma tecla for pressionada, e caso for pressionada novamente o LED apague.
O meu problema é que sempre mexi no teclado matricial colocando as colunas em alto e as linhas em baixo, caso um botão for pressionado a coluna dele também fica em estado baixo e faço uma varredura pra encontrar a tecla pressionada.
Aqui um exemplo:
int pinosLinhas[]  = {11,10,9,8};
int pinosColunas[] = {7,6,5,4};
char teclas[4][4] = {{'1','2','3','A'},
                     {'4','5','6','B'},
                     {'7','8','9','C'},
                     {'*','0','#','D'}};

void setup()
{
  for (int nL = 0; nL <= 3; nL++) {
     pinMode(pinosLinhas[nL], OUTPUT);
     digitalWrite(pinosLinhas[nL], HIGH);
  }

  for (int nC = 0; nC <= 3; nC++) {
     pinMode(pinosColunas[nC], INPUT_PULLUP);
  } 
   
  Serial.begin(9600);
  Serial.println("Teclado 4x4");
  Serial.println("Aguardando acionamento das teclas...");
  Serial.println();
}
 
void loop()
{
    //faz varredura em todas as linhas, desligando uma de cada vez
    for (int nL = 0; nL <= 3; nL++)
    {
      digitalWrite(pinosLinhas[nL], LOW);
      
      //faz varredura em todas as colunas verificando se tem algum botao apertado
      for (int nC = 0; nC <= 3; nC++) {
        if (digitalRead(pinosColunas[nC]) == LOW)
        {
          Serial.print("Tecla: ");
          Serial.println(teclas[nL][nC]);
          while(digitalRead(pinosColunas[nC]) == LOW){}
        }
      }

      digitalWrite(pinosLinhas[nL], HIGH);
    }
   delay(10);
}

Queria saber como fazer como integrar os LEDs nesse código pro proposito que eu quero atingir.

Giovanni5

Level 3
3636219 xp

Registrado em:
15/12/2016



Equipe:
VagalBotzzzzz

Mensagens:
37

Giovanni5

Responder com citações
Mensagem Seg Jan 18, 2021 9:47 am
Teclado Matricial 4x4 e LEDS
fabiolivera2016, para o uso do teclado matricial 4x4, sempre recomendamos o uso da biblioteca "Keypad.h", que basicamente executa a mesma sequência que você executa em seu código, porém internamente, o que facilita muito. Você pode encontrar um exemplo do uso dessa biblioteca no tutorial do link a seguir, https://www.robocore.net/...ial-com-arduino. 

Em relação ao controle do LED ao pressionar um dos botões, você precisa usar uma variável auxiliar para salvar o estado do LED, mantendo ele aceso ou apagado. Você pode encontrar um exemplo disso no segundo código do tutorial a seguir, https://www.robocore.net/...erial-com-botao. Embora esse tutorial mencionado seja específico para o módulo Relé Serial que fabricamos, ele pode ser uma base muito útil para o seu projeto.

Espero ter ajudado, qualquer dúvida entre em contato.
Mostrar mensagens desde a última:




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group