Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa uma Calculadora Arduino com Display LCD 16x2 e Teclado

Componentes e Materiais

Arduino UNO × 1
Kit Shield LCD RGB 16x2 × 1
Jumpers (genéricos) × 1
Bateria 9V (genérica) × 1
Protoboard (genérica) × 1

Sobre o Projeto

Ao final deste projeto, você saberá como usar um LCD 16x2 e teclado com Arduino e também como é fácil programá-los usando bibliotecas prontamente disponíveis. Você também entenderá como programar seu Arduino para realizar uma tarefa específica.

Materiais Necessários:

Construa uma Calculadora Arduino com Display LCD 16x2 e Teclado

Conexões

D01º pino do teclado
D12º pino do teclado
D23º pino do teclado
D34º pino do teclado
D45º pino do teclado
D56º pino do teclado
D67º pino do teclado
D78º pino do teclado
D8Pino Register Select do LCD (pino 4)
D9Pino Enable do LCD (pino 6)
D10Pino Data 4 (pino 11)
D11Pino Data 4 (pino 11)
D12Pino Data 4 (pino 11)
D13Pino Data 4 (pino 11)
+5VConectado ao pino Vdd do LCD (pino 2)
GNDConectado aos pinos Vss, Vee e RW do LCD (pinos 1, 3 e 5)

Algumas placas Arduino podem mostrar erro durante upload se houver algo conectado aos pinos 0 e 1. Se isso acontecer, remova o teclado durante o upload do programa.

Uma vez feitas as conexões, seu hardware será parecido com isto:

Construa uma Calculadora Arduino com Display LCD 16x2 e Teclado

Código

Calculadora com Teclado Arduino

/*
 * Programa de Calculadora com Teclado Arduino
 */
#include <LiquidCrystal.h> // Biblioteca para LCD de https://www.arduino.cc/en/Reference/LiquidCrystal
#include <Keypad.h>        // Biblioteca para Teclado de https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Quatro linhas
const byte COLS = 4; // Quatro colunas

// Definir o Keymap
char keys[ROWS][COLS] = {
  {'7','8','9','D'},
  {'4','5','6','C'},
  {'1','2','3','B'},
  {'*','0','#','A'}
};

byte rowPins[ROWS] = {0, 1, 2, 3}; // Conectar ROW0, ROW1, ROW2, ROW3 do teclado a estes pinos do Arduino
byte colPins[COLS] = {4, 5, 6, 7}; // Conectar COL0, COL1, COL2, COL3 do teclado a estes pinos do Arduino

Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Criar o Teclado

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinos aos quais o LCD está conectado
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

long Num1, Num2, Number;
char key, action;
boolean result = false;

void setup() {
  lcd.begin(16, 2); // Usando display LCD 16x2
  lcd.print("DIY Calculator"); // Mensagem introdutória
  lcd.setCursor(0, 1); // cursor na coluna 0, linha 1
  lcd.print("-CircuitDigest"); // Mensagem introdutória
  delay(2000); // Aguardar exibição
  lcd.clear(); // Limpar
}

void loop() {
  key = kpd.getKey(); // armazenar tecla pressionada em char
  if (key != NO_KEY) DetectButtons();
  if (result == true) CalculateResult();
  DisplayResult();
}

void DetectButtons() {
  lcd.clear();
  if (key == '*') { // Se botão Cancelar pressionado
    Serial.println("Button Cancel");
    Number = Num1 = Num2 = 0;
    result = false;
  }
  if (key == '1') { Serial.println("Button 1"); if (Number == 0) Number = 1; else Number = (Number * 10) + 1; }
  if (key == '4') { Serial.println("Button 4"); if (Number == 0) Number = 4; else Number = (Number * 10) + 4; }
  if (key == '7') { Serial.println("Button 7"); if (Number == 0) Number = 7; else Number = (Number * 10) + 7; }
  if (key == '0') { Serial.println("Button 0"); if (Number == 0) Number = 0; else Number = (Number * 10) + 0; }
  if (key == '2') { Serial.println("Button 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; }
  if (key == '5') { Serial.println("Button 5"); if (Number == 0) Number = 5; else Number = (Number * 10) + 5; }
  if (key == '8') { Serial.println("Button 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; }
  if (key == '#') { Serial.println("Button Equal"); Num2 = Number; result = true; }
  if (key == '3') { Serial.println("Button 3"); if (Number == 0) Number = 3; else Number = (Number * 10) + 3; }
  if (key == '6') { Serial.println("Button 6"); if (Number == 0) Number = 6; else Number = (Number * 10) + 6; }
  if (key == '9') { Serial.println("Button 9"); if (Number == 0) Number = 9; else Number = (Number * 10) + 9; }
  if (key == 'A' || key == 'B' || key == 'C' || key == 'D') { // Detectar botões na Coluna 4
    Num1 = Number;
    Number = 0;
    if (key == 'A') { Serial.println("Addition"); action = '+'; }
    if (key == 'B') { Serial.println("Subtraction"); action = '-'; }
    if (key == 'C') { Serial.println("Multiplication"); action = '*'; }
    if (key == 'D') { Serial.println("Division"); action = '/'; }
    delay(100);
  }
}

void CalculateResult() {
  if (action == '+') Number = Num1 + Num2;
  if (action == '-') Number = Num1 - Num2;
  if (action == '*') Number = Num1 * Num2;
  if (action == '/') Number = Num1 / Num2;
}

void DisplayResult() {
  lcd.setCursor(0, 0);
  lcd.print(Num1);
  lcd.print(action);
  lcd.print(Num2);
  if (result == true) { lcd.print(" ="); lcd.print(Number); } // Exibir resultado
  lcd.setCursor(0, 1);
  lcd.print(Number); // Exibir resultado
}

Esquemáticos

Construa uma Calculadora Arduino com Display LCD 16x2 e Teclado

Processo de manufatura

  1. O Rolo de Massa: Das Origens Etruscas à Arte Moderna
  2. A Evolução e o Artesanato dos Pinos de Boliche Modernos
  3. Prevenção de Ataques USB HID: Demonstração de Exploração de Teclado com Arduino Leonardo
  4. Programe Facilmente a Série Atmel AT89 com Arduino Uno – Guia Passo a Passo
  5. Construa um Spybot Controlado por Bluetooth com Arduino
  6. Decodifique Sinais PPM de Receptor RC com Arduino: Guia Passo a Passo
  7. FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
  8. DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
  9. Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
  10. Controle de Ventoinha PWM 4 Pinos 25 kHz com Arduino Uno – Montagem, Código e Teste