Tabla de contenido:

Calculadora Arduino: 6 pasos
Calculadora Arduino: 6 pasos

Video: Calculadora Arduino: 6 pasos

Video: Calculadora Arduino: 6 pasos
Video: Calculadora Arduino con LCD 16x2 💡【 2021 】 - Capítulo #44🔋 2024, Octubre
Anonim
Calculadora Arduino
Calculadora Arduino

La programación siempre es divertida y Arduino es una plataforma maravillosa si recién está comenzando con la programación integrada. En este tutorial construiremos nuestra propia calculadora con Arduino. Los valores se pueden enviar a través de un teclado (teclado 4 × 4) y el resultado se puede ver en una pantalla LCD (matriz de puntos 16 × 2). Esta calculadora podría realizar operaciones simples como suma, resta, multiplicación y división con números enteros. Pero una vez que comprenda el concepto, puede implementar incluso funciones científicas con las funciones integradas de Arduino. Al final de este proyecto, sabrá cómo usar una pantalla LCD de 16x2 y un teclado con Arduino y también lo fácil que es programarlos usando el bibliotecas disponibles. También comprenderá cómo programar su Arduino para realizar una tarea en particular.

Paso 1: Cosas necesarias

Arduino Uno (cualquier versión funcionará) Pantalla LCD de 16 × 2 Teclado de 4 × 4 Batería de 9 V Tablero de pan y cables de conexión

Paso 2: diagrama de circuito

Diagrama de circuito
Diagrama de circuito

Paso 3: Programa de calculadora Arduino

El programa completo de Arduino para este proyecto se da al final de este proyecto. El código se divide en pequeños fragmentos significativos y se explica a continuación. Como se dijo anteriormente, vamos a conectar una pantalla LCD y un teclado con Arduino usando bibliotecas. Así que primero agregémoslos a nuestro IDE de Arduino. La biblioteca para LCD ya está incluida en su Arduino de forma predeterminada, por lo que no debemos preocuparnos por eso. Para la biblioteca de teclado, haga clic en el enlace para descargarlo de Github. Obtendrá un archivo ZIP, luego agregue esta lib a Arduino by Sketch -> Incluir biblioteca -> Agregar archivo. ZIP y apunte la ubicación a este archivo descargado. Una vez hecho esto, estamos listos para la programación. A pesar de que hemos usado una biblioteca para usar un teclado, tenemos que mencionar algunos detalles (que se muestran a continuación) sobre el teclado del Arduino. La variable ROWS y COLS indicará cuántas filas y columnas tiene nuestro teclado y el mapa de teclas muestra el orden en el que están presentes las teclas en el teclado. El teclado que estoy usando en este proyecto se ve así a continuación en el mapa de teclas también representa lo mismo. Más abajo hemos mencionado a qué pines está conectado el teclado usando la matriz de variables rowPins y colPins.const byte ROWS = 4; // Cuatro filas const byte COLS = 4; // Tres columnas // Defina las claves de Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Conecte el teclado ROW0, ROW1, ROW2 y ROW3 a estos pines de Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Conecte el teclado COL0, COL1 y COL2 a estos pines de Arduino. Una vez que hemos mencionado qué tipo de teclado estamos usando y cómo está conectado, podemos crear el teclado usando esos detalles usando la línea de abajo Keypad kpd = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS); // Crear el teclado De manera similar, también tenemos que decirle a qué pines del Arduino está conectada la pantalla LCD. De acuerdo con nuestro diagrama de circuito, las definiciones serían las siguientes const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pines a los que se conecta la pantalla LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // creamos el LCD Dentro de la función de configuración, solo mostramos el nombre del proyecto y luego procedemos al bucle while donde se encuentra el proyecto principal Básicamente, tenemos que verificar si se está escribiendo algo en el teclado, si se escribe tenemos que reconocer lo que se está escribiendo y luego convertirlo en una variable cuando se presiona “=” tenemos que calcular el resultado y finalmente mostrarlo en la pantalla LCD. Esto es exactamente lo que se hace dentro de la función de bucle como se muestra a continuación key = kpd.getKey (); // almacenar el valor de la tecla presionada en un charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Lo que sucede dentro de cada función se explica usando las líneas de comentarios, revise el código completo a continuación, juegue con él para comprender cómo funciona realmente. Si tiene alguna duda sobre una línea específica, no dude en utilizar la sección de comentarios o los foros.

Paso 4:

Paso 5: Funcionamiento de la calculadora Arduino

Funcionamiento de la calculadora Arduino
Funcionamiento de la calculadora Arduino

Realice las conexiones según el diagrama de circuito y cargue el código a continuación. Si muestra un error, asegúrese de haber agregado la biblioteca según las instrucciones dadas anteriormente. También puede probar la simulación para comprobar si el problema está en su hardware. Si todo se hace como se supone que debe ser, entonces su hardware se verá algo así a continuación con la pantalla LCD mostrando esta Calculadora Arduino usando el teclado 4x4 en acción Dado que el teclado usado aquí no tiene las marcas adecuadas, he asumido que los Alfabetos son operadores como se enumeran a continuación Carácter en el teclado Se supone que es “A” Suma (+) “B” Resta (-) “C” Multiplicación (*) “D” División (/) “*” Borrar (C) “#” Igual a (=) Puede Use un marcador para escribir sobre lo que realmente representa cada botón. Una vez hecho esto, puede comenzar a usar la calculadora directamente. Escribe el número y aparecerá en la segunda línea, presiona el operando y escribe tu segundo número finalmente presiona la tecla “#” para obtener tu resultado. También puede intentar construir esta calculadora Arduino basada en pantalla táctil.

Paso 6: Código

/ * * Programa de calculadora de teclado Arduino * / # incluye // Archivo de encabezado para LCD de https://www.arduino.cc/en/Reference/LiquidCrystal#include // Archivo de encabezado para teclado de https://github.com/ Chris - A / Keypadconst byte FILAS = 4; // Cuatro filas const byte COLS = 4; // Tres columnas // Defina las claves de Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Conecte el teclado ROW0, ROW1, ROW2 y ROW3 a estos pines de Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Conecte el teclado COL0, COL1 y COL2 a estos pines de Arduino. Teclado kpd = Teclado (makeKeymap (teclas), rowPins, colPins, ROWS, COLS); // Crea el Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pines a los que se conecta la pantalla LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7); long Num1, Num2, Number; char key, acción; resultado booleano = falso; configuración vacía () {lcd.begin (16, 2); // Estamos usando una pantalla LCD de 16 * 2 lcd.print ("Calculadora de bricolaje"); // Muestra un mensaje de introducción lcd.setCursor (0, 1); // coloca el cursor en la columna 0, línea 1 lcd.print ("- CircuitDigest"); // Mostrar un retraso en el mensaje de introducción (2000); // Espere a que la pantalla muestre información lcd.clear (); // Luego límpialo} void loop () {key = kpd.getKey (); // almacenar el valor de la tecla presionada en un charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Luego límpialo if (key == '*') // Si se presiona el botón cancelar {Serial.println ("Botón Cancelar"); Número = Num1 = Num2 = 0; result = false;} if (key == '1') // Si se presiona el Botón 1 {Serial.println ("Botón 1"); si (Número == 0) Número = 1; más Número = (Número * 10) + 1; // Presionado dos veces} if (key == '4') // Si se presiona el Botón 4 {Serial.println ("Botón 4"); si (Número == 0) Número = 4; más Número = (Número * 10) + 4; // Presionado dos veces} if (key == '7') // Si se presiona el Botón 7 {Serial.println ("Botón 7"); si (Número == 0) Número = 7; más Número = (Número * 10) + 7; // Presionado dos veces} if (key == '0') {Serial.println ("Botón 0"); // Se presiona el botón 0 si (Número == 0) Número = 0; más Número = (Número * 10) + 0; // Presionado dos veces} if (key == '2') // Se presiona el botón 2 {Serial.println ("Botón 2"); si (Número == 0) Número = 2; más Número = (Número * 10) + 2; // Presionado dos veces} if (key == '5') {Serial.println ("Botón 5"); si (Número == 0) Número = 5; más Número = (Número * 10) + 5; // Presionado dos veces} if (key == '8') {Serial.println ("Botón 8"); si (Número == 0) Número = 8; más Número = (Número * 10) + 8; // Presionado dos veces} if (key == '#') {Serial.println ("Botón igual"); Num2 = Número; resultado = verdadero; } if (clave == '3') {Serial.println ("Botón 3"); si (Número == 0) Número = 3; más Número = (Número * 10) + 3; // Presionado dos veces} if (key == '6') {Serial.println ("Botón 6"); si (Número == 0) Número = 6; más Número = (Número * 10) + 6; // Presionado dos veces} if (key == '9') {Serial.println ("Botón 9"); si (Número == 0) Número = 9; más Número = (Número * 10) + 9; // Presionado dos veces} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Detectando botones en la columna 4 {Num1 = Number; Número = 0; if (clave == 'A') {Serial.println ("Adición"); acción = '+';} if (clave == 'B') {Serial.println ("Resta"); acción = '-'; } if (clave == 'C') {Serial.println ("Multiplicación"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); acción = '/';} retraso (100); }} void CalculateResult () {if (acción == '+') Número = Num1 + Num2; if (acción == '-') Número = Num1-Num2; if (acción == '*') Número = Num1 * Num2; if (acción == '/') Número = Num1 / Num2; } void DisplayResult () {lcd.setCursor (0, 0); // coloca el cursor en la columna 0, línea 1 lcd.print (Num1); lcd.print (acción); lcd.print (Num2); if (resultado == verdadero) {lcd.print ("="); lcd.print (Number);} // Muestra el resultado lcd.setCursor (0, 1); // coloca el cursor en la columna 0, línea 1 lcd.print (Number); // Mostrar el resultado}

Recomendado: