Como Fazer uma Calculadora no Arduino Usando Teclado Matricial, Potenciômetro e LCD 16x2

 

Como Fazer uma Calculadora no Arduino Usando Teclado Matricial, Potenciômetro e LCD 16x2

Introdução

Criar uma calculadora com Arduino é um projeto excelente para aprender sobre eletrônica, programação e integração de componentes. Neste artigo, vamos desenvolver uma calculadora simples utilizando um teclado matricial 4x4, um potenciômetro para ajustar o contraste do LCD 16x2 e explorar como essa atividade contribui para o desenvolvimento em robótica.


Materiais Necessários

  • Arduino Uno (ou similar)

  • Teclado matricial 4x4

  • Display LCD 16x2 com módulo I2C (ou sem I2C, utilizando resistores)

  • Potenciômetro 10kΩ (se o LCD não for I2C)

  • Protoboard e jumpers

  • Cabo USB para programação


Montagem do Circuito



Programação no Arduino IDE

Bibliotecas Necessárias

  • LiquidCrystal.h (ou LiquidCrystal_I2C.h se usar I2C)

  • Keypad.h

Código Básico da Calculadora

cpp
Copy
Download
#include <LiquidCrystal.h>
#include <Keypad.h>
const byte filas = 4; //cuatro  filas.
const byte columnas = 4; //cuatro columnas.
char tecla[filas][columnas] = {
  {'1','2','3','A'},
  {'4','5','6','+'},
  {'7','8','9','-'},
  {'*','0','=','/'}
};
byte pinFilas[filas] = {7, 6, 5, 4}; //conectarse a las patillas de salida de fila del teclado.
byte pinColumnas[columnas] = {3, 2, A5, A4}; //conectarse a las patillas de las columnas del teclado.

Keypad keypad = Keypad( makeKeymap(tecla), pinFilas, pinColumnas, filas, columnas );
LiquidCrystal lcd(8,9,10,11,12,13); //RS,E,D4,D5,D6,D7
String leeCadena1,leeCadena2;
byte cuenta=0;
char a;
long dato1,dato2,rpt1;
double dato3,dato4,rpt2;
void setup(){
  lcd.begin(16,2); //LCD (16 COLUMNAS Y 2 FILAS)
}

void loop(){
  char key = keypad.getKey();
  if (key=='0'||key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'){
   
      if(cuenta==0){
        lcd.print(key);
        leeCadena1+=key;
        dato1=leeCadena1.toInt();
      }
     
      else if(cuenta==1){
        lcd.print(key);
        leeCadena2+=key;
        dato2=leeCadena2.toInt();
      }
   
  }

  if(key=='A'){

      leeCadena2="";
      leeCadena1="";
      dato1=0;
      dato2=0;
      dato3=0;
      dato4=0;
      cuenta=0;
      rpt1=0;
      rpt2=0;
      lcd.clear();
  }
  else if(key=='='&&a=='+'){
    cuenta++;
    lcd.setCursor(0,2);
    rpt1=dato1+dato2;
    lcd.print("RPT=");
    lcd.print(rpt1);
  }

  else if(key=='='&&a=='-'){
    cuenta++;
    lcd.setCursor(0,2);
    rpt1=dato1-dato2;
    lcd.print("RPT=");
    lcd.print(rpt1);
  }
  else if(key=='='&&a=='*'){
    cuenta++;
    lcd.setCursor(0,2);
    rpt1=dato1*dato2;
    lcd.print("RPT=");
    lcd.print(rpt1);
  }
  else if(key=='='&&a=='/'){
    cuenta++;
    lcd.setCursor(0,2);
    dato3=dato1;
    dato4=dato2;
    lcd.print("RPT=");
    rpt2=(dato3/dato4);
    lcd.print(rpt2);
  }

 
  else if((key=='+'||key=='-'||key=='*'||key=='/')&&(cuenta==0)){
    cuenta++;
    a=key;
    lcd.print(a);
  }
}



//********script dos **********

/*

//Este script se puede poner la cantidad de digitos para hacer la operacíon.

#include <LiquidCrystal.h>
#include <Keypad.h>
const byte filas = 4; //cuatro  filas.
const byte columnas = 4; //cuatro columnas.
char tecla[filas][columnas] = {
  {'1','2','3','A'},
  {'4','5','6','+'},
  {'7','8','9','-'},
  {'*','0','=','/'}
};
byte pinFilas[filas] = {7, 6, 5, 4}; //conectarse a las patillas de salida de fila del teclado.
byte pinColumnas[columnas] = {3, 2, A5, A4}; //conectarse a las patillas de las columnas del teclado.

Keypad keypad = Keypad( makeKeymap(tecla), pinFilas, pinColumnas, filas, columnas );
LiquidCrystal lcd(8,9,10,11,12,13); //RS,E,D4,D5,D6,D7
String leeCadena1,leeCadena2;
byte numero = 0; //variable a incrementar
byte  digito = 2; //cantidad de dígitos para la operación
byte cuenta=0;
char a;
long dato1,dato2,rpt1;
double dato3,dato4,rpt2;
void setup(){
lcd.begin(16,2); //LCD (16 COLUMNAS Y 2 FILAS)

}

void loop(){
  char key = keypad.getKey();
  if (key=='0'||key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9' && numero <= digito){

  numero++;
   
      if(cuenta==0 && numero<= digito){
        lcd.print(key);
        leeCadena1+=key;
        dato1=leeCadena1.toInt();
      }
     
      else if(cuenta==1 && numero <= digito){
        lcd.print(key);
        leeCadena2+=key;
        dato2=leeCadena2.toInt();
      }
   
  }

  if(key=='A'){

      leeCadena2="";
      leeCadena1="";
      dato1=0;
      dato2=0;
      dato3=0;
      dato4=0;
      numero = 0;
      cuenta=0;
      rpt1=0;
      rpt2=0;
      lcd.clear();
  }
  else if(key=='='&&a=='+'){
    numero = 0;
    cuenta++;
    lcd.setCursor(0,2);
    rpt1=dato1+dato2;
    lcd.print("RPT=");
    lcd.print(rpt1);
  }

  else if(key=='='&&a=='-'){
    numero = 0;
    cuenta++;
    lcd.setCursor(0,2);
    rpt1=dato1-dato2;
    lcd.print("RPT=");
    lcd.print(rpt1);
  }
  else if(key=='='&&a=='*'){
    numero = 0;
    cuenta++;
    lcd.setCursor(0,2);
    rpt1=dato1*dato2;
    lcd.print("RPT=");
    lcd.print(rpt1);
  }
  else if(key=='='&&a=='/'){
    numero = 0;
    cuenta++;
    lcd.setCursor(0,2);
    dato3=dato1;
    dato4=dato2;
    lcd.print("RPT=");
    rpt2=(dato3/dato4);
    lcd.print(rpt2);
  }

 
  else if((key=='+'||key=='-'||key=='*'||key=='/')&&(cuenta==0)){

    numero = 0;
    cuenta++;
    a=key;
    lcd.print(a);
  }
}

*/

Importância para o Desenvolvimento em Robótica

1. Integração de Múltiplos Componentes

Robôs dependem da comunicação entre sensores, atuadores e microcontroladores. Este projeto ensina como conectar e gerenciar diferentes dispositivos (teclado, LCD, potenciômetro) em um único sistema.

2. Lógica de Programação

Desenvolver uma calculadora envolve manipulação de variáveis, estruturas condicionais e tratamento de entradas, habilidades essenciais para programar robôs autônomos.

3. Interface Homem-Máquina (HMI)

O uso de um teclado e display LCD simula a interação entre humanos e robôs, um conceito fundamental em robótica industrial e aplicações autônomas.

4. Ajuste e Calibração de Sensores

O potenciômetro, usado para ajustar o contraste do LCD, introduz o conceito de calibração de sensores, algo crítico em robótica para garantir precisão.

5. Prototipagem Rápida

Aprender a montar circuitos no Arduino e protoboard é essencial para testar ideias antes de implementá-las em robôs mais complexos.


Conclusão

Construir uma calculadora com Arduino é um projeto didático que ajuda a entender conceitos fundamentais de eletrônica e programação, diretamente aplicáveis à robótica. Além disso, desenvolve habilidades práticas em integração de hardware e software, essenciais para quem deseja avançar em automação e sistemas embarcados.

Experimente modificar o projeto adicionando novas funções (como cálculo de potência ou raiz quadrada) ou integrando um módulo Bluetooth para controle remoto!

Comentários

Postagens mais visitadas