Taula de continguts:

Calculadora Arduino: 6 passos
Calculadora Arduino: 6 passos

Vídeo: Calculadora Arduino: 6 passos

Vídeo: Calculadora Arduino: 6 passos
Vídeo: #61 Arduino Calculator || PR ROBOTICS 2024, De novembre
Anonim
Calculadora Arduino
Calculadora Arduino

La programació sempre és divertida i Arduino és una plataforma meravellosa si tot just s’inicia amb la programació incrustada. En aquest tutorial construirem la nostra pròpia calculadora amb Arduino. Els valors es poden enviar mitjançant un teclat (teclat 4 × 4) i el resultat es pot veure en una pantalla LCD (16 × 2 Dot-matrix). Aquesta calculadora podria realitzar operacions senzilles com sumar, restar, multiplicar i dividir amb nombres enters. Però una vegada que entengueu el concepte, podeu implementar fins i tot funcions científiques amb les funcions integrades d’Arduino. Al final d’aquest projecte, sabreu com utilitzar un LCD i un teclat de 16x2 amb Arduino i també el fàcil que és programar per a ells utilitzant fàcilment biblioteques disponibles. També entendreu com programar el vostre Arduino per dur a terme una tasca en particular.

Pas 1: coses necessàries

Arduino Uno (Qualsevol versió funcionarà) Pantalla LCD 16 × 2 Teclat 4 × 4 Bateria 9V Tauler de pa i cables de connexió

Pas 2: diagrama del circuit

Esquema de connexions
Esquema de connexions

Pas 3: Programa de calculadora Arduino

El programa complet d'Arduino per a aquest projecte es dóna al final d'aquest projecte. El codi es divideix en petits trossos significatius i s’explica a continuació. Com s’ha dit anteriorment, farem una interfície de pantalla LCD i teclat amb Arduino mitjançant biblioteques. Per tant, anem a afegir-los al nostre IDE Arduino primer. La biblioteca per a LCD ja està inclosa al vostre Arduino per defecte, de manera que no ens hem de preocupar. Per a la biblioteca de teclats, feu clic a l'enllaç per descarregar-la des de Github. Obtindreu un fitxer ZIP i, a continuació, afegiu aquesta llibreta a Arduino by Sketch -> Inclou biblioteca -> Afegiu un fitxer. ZIP i assenyaleu la ubicació al fitxer descarregat. Un cop fet, ja estem preparats per a la programació. Tot i que hem utilitzat una biblioteca per utilitzar un teclat, hem d’esmentar pocs detalls (que es mostren a continuació) sobre el teclat de l’Arduino. La variable FILES i COLS indicarà quantes files i columnes té el nostre teclat i el mapa de tecles mostra l'ordre en què les tecles estan presents al teclat. El teclat que estic fent servir en aquest projecte té un aspecte semblant al mapa de tecles també representa el mateix. A continuació hem esmentat a quins pins està connectat el teclat mitjançant la matriu variable rowPins i colPins.const byte ROWS = 4; // Quatre filesconst byte COLS = 4; // Tres columnes // Definiu les tecles Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Connecteu el teclat ROW0, ROW1, ROW2 i ROW3 a aquests pins Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Connecteu el teclat COL0, COL1 i COL2 a aquests pins Arduino. Un cop hem esmentat quin tipus de teclat utilitzem i com està connectat, podem crear el teclat utilitzant aquests detalls mitjançant la línia següent Teclat kpd = Teclat (makeKeymap (tecles)), rowPins, colPins, ROWS, COLS); // Crear el teclat De la mateixa manera, també hem de dir a quins pins de l'Arduino està connectat el LCD. Segons el nostre diagrama de circuits, les definicions serien com les següents: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pins als quals està connectat el LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); // Creeu la pantalla LCD Dins de la funció de configuració, només visualitzem el nom del projecte i, a continuació, passem al bucle mentre es troba el projecte principal. Bàsicament, hem de comprovar si s’està escrivint alguna cosa al teclat, si s’ha d’escriure s’ha de reconèixer el que s’està escrivint i després convertir-lo en una variable quan es prem “=”, hem de calcular el resultat i, finalment, mostrar-lo a la pantalla LCD. Això és exactament el que es fa dins de la funció de bucle, tal com es mostra a continuació key = kpd.getKey (); // emmagatzemar el valor de la tecla premuda en una charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); El que passa dins de cada funció s’explica mitjançant les línies de comentari, passeu pel codi complet que hi ha a continuació, feu-hi una volta per entendre com funciona realment. Si teniu cap dubte sobre una línia específica, no dubteu a utilitzar la secció de comentaris o els fòrums.

Pas 4:

Pas 5: Funcionament de la calculadora Arduino

Funcionament de la calculadora Arduino
Funcionament de la calculadora Arduino

Feu les connexions segons el diagrama del circuit i pengeu el codi següent. Si es mostra un error, assegureu-vos que heu afegit la biblioteca segons les instruccions anteriors. També podeu provar la simulació per comprovar si el problema és del vostre maquinari. Si tot es fa tal i com s’hauria de fer, el vostre maquinari tindrà un aspecte similar a continuació, amb la pantalla LCD que mostra aquesta calculadora Arduino mitjançant el teclat 4x4 en acció Com que el teclat que s’utilitza aquí no té marques adequades, he suposat que els alfabets serien operadors com a la llista següent Caràcter al teclat Se suposa que és una suma "A" (+) "B" Resta (-) "C" Multiplicació (*) Divisió "D" (/) "*" Esborra (C) "#" Igual (=) Podeu utilitzeu un marcador per escriure sobre el que representa realment cada botó. Amb això, podeu començar directament a utilitzar la calculadora. Escriviu el número i apareixerà a la segona línia, premeu l'operand i escriviu el segon número, finalment premeu la tecla "#" per obtenir el resultat. També podeu provar de construir aquesta calculadora Arduino basada en pantalla tàctil.

Pas 6: Codi

/ * * Programa de calculadora del teclat Arduino * / # include // Fitxer de capçalera per a LCD de https://www.arduino.cc/en/Reference/LiquidCrystal#include // Fitxer de capçalera del teclat de https://github.com/ Chris - A / Keypadconst byte ROWS = 4; // Quatre filesconst byte COLS = 4; // Tres columnes // Definiu les tecles Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Connecteu el teclat ROW0, ROW1, ROW2 i ROW3 a aquests pins Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Connecteu el teclat COL0, COL1 i COL2 a aquests pins Arduino. Teclat kpd = Teclat (makeKeymap (tecles), filaPins, colPins, FILES, COLS); // Creeu el Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pins als quals està connectat el LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); llarg Num1, Num2, Nombre; clau de caràcter, acció; resultat booleà = false; void setup () {lcd.begin (16, 2); // Estem fent servir una pantalla LCD de 16 * 2 lcd.print ("Calculadora de bricolatge"); // Mostra un missatge d'introducció lcd.setCursor (0, 1); // configureu el cursor a la columna 0, línia 1 lcd.print ("- CircuitDigest"); // Mostra un retard de missatge d'introducció (2000); // Espereu que la pantalla mostri informació lcd.clear (); // Després neteja-ho} void loop () {clau = kpd.getKey (); // emmagatzemar el valor de la tecla premuda en una charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Després netegeu-lo si (tecla == '*') // Si premeu el botó Cancel·la {Serial.println ("Cancel·la el botó"); Nombre = Num1 = Num2 = 0; result = false;} if (tecla == '1') // Si es prem el botó 1 {Serial.println ("Botó 1"); if (Nombre == 0) Nombre = 1; else Nombre = (Nombre * 10) + 1; // Es prem dues vegades} if (tecla == '4') // Si es prem el botó 4 {Serial.println ("Botó 4"); if (Nombre == 0) Nombre = 4; else Nombre = (Nombre * 10) + 4; // Es prem dues vegades} if (tecla == '7') // Si es prem el botó 7 {Serial.println ("Botó 7"); if (Nombre == 0) Nombre = 7; else Nombre = (Nombre * 10) + 7; // Es prem dues vegades} if (tecla == '0') {Serial.println ("Botó 0"); // Es prem el botó 0 si (Nombre == 0) Nombre = 0; else Nombre = (Nombre * 10) + 0; // Es prem dues vegades} if (tecla == '2') // Es prem el botó 2 {Serial.println ("Botó 2"); if (Nombre == 0) Nombre = 2; else Nombre = (Nombre * 10) + 2; // Prem dues vegades} if (tecla == '5') {Serial.println ("Botó 5"); if (Nombre == 0) Nombre = 5; else Nombre = (Nombre * 10) + 5; // Es prem dues vegades} if (tecla == '8') {Serial.println ("Botó 8"); if (Nombre == 0) Nombre = 8; else Nombre = (Nombre * 10) + 8; // Es prem dues vegades} if (tecla == '#') {Serial.println ("Botó igual"); Num2 = Nombre; resultat = cert; } if (clau == '3') {Serial.println ("Botó 3"); if (Nombre == 0) Nombre = 3; else Nombre = (Nombre * 10) + 3; // Es prem dues vegades} if (tecla == '6') {Serial.println ("Botó 6"); if (Nombre == 0) Nombre = 6; else Nombre = (Nombre * 10) + 6; // Es prem dues vegades} if (tecla == '9') {Serial.println ("Botó 9"); if (Nombre == 0) Nombre = 9; else Nombre = (Nombre * 10) + 9; // Prem dues vegades} if (tecla == 'A' || tecla == 'B' || tecla == 'C' || tecla == 'D') // Detecció de botons a la columna 4 {Num1 = Nombre; Nombre = 0; if (clau == 'A') {Serial.println ("Addició"); action = '+';} if (clau == 'B') {Serial.println ("Resta"); acció = '-'; } if (clau == 'C') {Serial.println ("Multiplicació"); action = '*';} if (clau == 'D') {Serial.println ("Devesió"); action = '/';} retard (100); }} void CalculateResult () {if (action == '+') Nombre = Num1 + Num2; if (action == '-') Nombre = Num1-Num2; if (action == '*') Number = Num1 * Num2; if (action == '/') Nombre = Num1 / Num2; } void DisplayResult () {lcd.setCursor (0, 0); // configureu el cursor a la columna 0, línia 1 lcd.print (Num1); lcd.print (acció); lcd.print (Num2); if (result == true) {lcd.print ("="); lcd.print (Nombre);} // Mostra el resultat lcd.setCursor (0, 1); // configureu el cursor a la columna 0, línia 1 lcd.print (Nombre); // Mostra el resultat}

Recomanat: