Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye una Calculadora Arduino con Pantalla LCD 16x2 y Teclado

Componentes y Suministros

Componente Cantidad
Arduino UNO 1
Pantalla LCD 16x2 (Kit Shield RGB) 1
Cables jumper (genéricos) 1
Batería 9V (genérica) 1
Protoboard (genérica) 1

Descripción del Proyecto

Al final de este proyecto sabrá cómo usar una pantalla LCD 16x2 y un teclado con Arduino, y lo fácil que es programarlos usando las librerías disponibles. También entenderá cómo programar su Arduino para realizar una tarea específica.

Materiales Requeridos

Conexiones

Pin Arduino Conexión
D01er pin del teclado
D12º pin del teclado
D23er pin del teclado
D34º pin del teclado
D45º pin del teclado
D56º pin del teclado
D67º pin del teclado
D78º pin del teclado
D8Pin Register Select del LCD (pin 4)
D9Pin Enable del LCD (pin 6)
D10Pin Data 4 del LCD (pin 11)
D11Pin Data 5 del LCD (pin 12)
D12Pin Data 6 del LCD (pin 13)
D13Pin Data 7 del LCD (pin 14)
+5VPin Vdd del LCD (pin 2)
GNDPines Vss, Vee y RW del LCD (pines 1, 3 y 5)

Nota: Algunas placas Arduino pueden dar error al subir el programa si hay algo conectado a los pines 0 y 1. Si experimenta problemas, desconecte el teclado mientras sube el programa.

Una vez hechas las conexiones, su hardware se verá como en la imagen.

Código

Calculadora con Teclado Arduino

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

const byte ROWS = 4; // Cuatro filas
const byte COLS = 4; // Cuatro columnas

// Definir el mapa de teclas
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 filas del teclado a estos pines Arduino
byte colPins[COLS] = { 4, 5, 6, 7 }; // Conectar columnas del teclado a estos pines Arduino

Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Crear el Keypad

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pines a los que está conectado el LCD
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

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

void setup() {
  lcd.begin(16, 2); // Usamos LCD 16x2
  lcd.print("Calculadora DIY"); // Mensaje de presentación
  lcd.setCursor(0, 1);
  lcd.print("-CircuitDigest");
  delay(2000);
  lcd.clear();
}

void loop() {
  key = kpd.getKey(); // Almacenar tecla pulsada en char
  if (key != NO_KEY) DetectButtons();
  if (result == true) CalculateResult();
  DisplayResult();
}

void DetectButtons() {
  lcd.clear();
  if (key == '*') { // Botón Cancelar
    Serial.println("Botón Cancelar");
    Number = Num1 = Num2 = 0;
    result = false;
  }
  if (key == '1') { Serial.println("Botón 1"); if (Number == 0) Number = 1; else Number = (Number * 10) + 1; }
  if (key == '4') { Serial.println("Botón 4"); if (Number == 0) Number = 4; else Number = (Number * 10) + 4; }
  if (key == '7') { Serial.println("Botón 7"); if (Number == 0) Number = 7; else Number = (Number * 10) + 7; }
  if (key == '0') { Serial.println("Botón 0"); if (Number == 0) Number = 0; else Number = (Number * 10) + 0; }
  if (key == '2') { Serial.println("Botón 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; }
  if (key == '5') { Serial.println("Botón 5"); if (Number == 0) Number = 5; else Number = (Number * 10) + 5; }
  if (key == '8') { Serial.println("Botón 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; }
  if (key == '#') { Serial.println("Botón Igual"); Num2 = Number; result = true; }
  if (key == '3') { Serial.println("Botón 3"); if (Number == 0) Number = 3; else Number = (Number * 10) + 3; }
  if (key == '6') { Serial.println("Botón 6"); if (Number == 0) Number = 6; else Number = (Number * 10) + 6; }
  if (key == '9') { Serial.println("Botón 9"); if (Number == 0) Number = 9; else Number = (Number * 10) + 9; }

  if (key == 'A' || key == 'B' || key == 'C' || key == 'D') { // Detectar botones columna 4
    Num1 = Number;
    Number = 0;
    if (key == 'A') { Serial.println("Suma"); action = '+'; }
    if (key == 'B') { Serial.println("Resta"); action = '-'; }
    if (key == 'C') { Serial.println("Multiplicación"); action = '*'; }
    if (key == 'D') { Serial.println("División"); 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); }
  lcd.setCursor(0, 1);
  lcd.print(Number);
}

Esquemáticos

Diagrama de conexiones disponible en el proyecto original.

Proceso de manufactura

  1. El rodillo de cocina: de los orígenes etruscos a la artesanía moderna
  2. La Evolución y la Artesanía de los Bolos de Bolera Modernos
  3. Prevención de ataques USB HID: Demostración de explotación de teclado con Arduino Leonardo
  4. Programa fácilmente la serie Atmel AT89 con Arduino Uno – Guía paso a paso
  5. Construye un Spybot controlado por Bluetooth con Arduino
  6. Decodifica señales PPM de receptor RC con Arduino: Guía paso a paso
  7. FlickMote: Mando IR por gestos para Smart Home
  8. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  9. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  10. Convierte tu Teclado MIDI en Tutor de Piano Inteligente con Arduino, LEDs y MuseScore
  11. Control de Ventilador PWM de 4 Pines a 25 kHz con Arduino Uno – Montaje, Código y Pruebas