Índice:

Calculadora Arduino: 6 etapas
Calculadora Arduino: 6 etapas

Vídeo: Calculadora Arduino: 6 etapas

Vídeo: Calculadora Arduino: 6 etapas
Vídeo: Arduino Calculator (Display) 2024, Outubro
Anonim
Calculadora Arduino
Calculadora Arduino

Programar é sempre divertido e o Arduino é uma plataforma maravilhosa se você está apenas começando com a programação incorporada. Neste tutorial, construiremos nossa própria calculadora com Arduino. Os valores podem ser enviados através de um teclado (teclado 4 × 4) e o resultado pode ser visualizado em uma tela LCD (matriz de pontos 16 × 2). Esta calculadora pode realizar operações simples como adição, subtração, multiplicação e divisão com números inteiros. Mas, depois de entender o conceito, você pode implementar até mesmo funções científicas com as funções integradas do Arduino. No final deste projeto, você saberá como usar um LCD 16x2 e teclado com Arduino e também como é fácil programar para eles usando o prontamente bibliotecas disponíveis. Você também entenderá como programar seu Arduino para realizar uma tarefa específica.

Etapa 1: Coisas necessárias

Arduino Uno (qualquer versão funcionará) 16 × 2 LCD Display4 × 4 Keypad9V BatteryBreadboard e cabos de conexão

Etapa 2: Diagrama de Circuito

Diagrama de circuito
Diagrama de circuito

Etapa 3: Programa de calculadora do Arduino

O programa Arduino completo para este projeto é fornecido no final deste projeto. O código é dividido em pequenos pedaços significativos e explicado a seguir. Conforme dito anteriormente, faremos a interface de um LCD e teclado com o Arduino usando bibliotecas. Então, vamos adicioná-los ao nosso IDE Arduino primeiro. A biblioteca para LCD já está incluída em seu Arduino por padrão, então não precisamos nos preocupar com isso. Para a biblioteca do teclado, clique no link para fazer o download do Github. Você obterá um arquivo ZIP, então adicione esta lib ao Arduino por Sketch -> Incluir Biblioteca -> Adicionar arquivo. ZIP e aponte o local para este arquivo baixado. Uma vez feito isso, estamos todos prontos para a programação. Mesmo que tenhamos usado uma biblioteca para usar um teclado, temos que mencionar alguns detalhes (mostrados abaixo) sobre o teclado do Arduino. A variável ROWS e COLS dirá quantas linhas e colunas nosso teclado tem e o mapa de teclado mostra a ordem em que as teclas estão presentes no teclado. O teclado que estou usando neste projeto se parece com o seguinte para o mapa de teclado também representa o mesmo. Mais adiante, mencionamos a quais pinos o teclado está conectado usando o array de variáveis rowPins e colPins.const byte ROWS = 4; // Quatro linhasconst byte COLS = 4; // Três colunas // Definir as chaves do 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 o teclado ROW0, ROW1, ROW2 e ROW3 a esses pinos do Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Conecte o teclado COL0, COL1 e COL2 a esses pinos do Arduino. Uma vez que mencionamos que tipo de teclado estamos usando e como ele está conectado, podemos criar o teclado usando esses detalhes usando a linha abaixoKeypad kpd = Teclado (makeKeymap (keys), rowPins, colPins, ROWS, COLS); // Crie o teclado da mesma forma, também temos que dizer a quais pinos do Arduino o LCD está conectado. De acordo com nosso diagrama de circuito, as definições seriam as seguintes: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinos aos quais o LCD está conectadoLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // cria o LCDDentro da função de configuração, apenas exibimos o nome do projeto e, em seguida, procedemos ao loop while onde está o projeto principal. Basicamente, temos que verificar se algo está sendo digitado no teclado, se digitado, temos que reconhecer o que está sendo digitado e depois convertê-lo em uma variável quando o “=” é pressionado, temos que calcular o resultado e finalmente exibi-lo no LCD. Isso é exatamente o que é feito dentro da função de loop, conforme mostrado abaixokey = kpd.getKey (); // armazenando o valor da tecla pressionada em um charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); O que acontece dentro de cada função é explicado usando as linhas de comentário, percorra o código completo abaixo, brinque com ele para entender como ele realmente funciona. Se você tiver alguma dúvida sobre uma linha específica, sinta-se à vontade para usar a seção de comentários ou os fóruns.

Passo 4:

Etapa 5: Trabalho com a Calculadora Arduino

Trabalho da Calculadora Arduino
Trabalho da Calculadora Arduino

Faça as conexões de acordo com o diagrama de circuito e carregue o código abaixo. Se mostrar um erro, certifique-se de adicionar a biblioteca de acordo com as instruções fornecidas acima. Você também pode tentar a simulação para verificar se o problema é com o seu hardware. Se tudo for feito como deveria ser, então seu hardware será parecido com o que está abaixo com o LCD exibindo esta Calculadora Arduino usando o teclado 4x4 em ação. Visto que o teclado usado aqui não tem marcações adequadas, assumi que os alfabetos são operadores como listado abaixo Caractere no teclado Presume-se que seja “A” Adição (+) “B” Subtração (-) “C” Multiplicação (*) “D” Divisão (/) “*” Limpar (C) “#” É igual a (=) Você pode use um marcador para escrever sobre o que cada botão realmente representa. Com isso feito, você pode começar a usar a calculadora diretamente. Digite o número e aparecerá na segunda linha pressione o operando e digite o seu segundo número por fim pressione a tecla “#” para obter o seu resultado. Você também pode tentar construir esta calculadora Arduino baseada em touchscreen.

Etapa 6: Código

/ * * Programa de calculadora do teclado Arduino * / # include // Arquivo de cabeçalho para LCD de https://www.arduino.cc/en/Reference/LiquidCrystal#include // Arquivo de cabeçalho para teclado de https://github.com/ Chris - byte A / Keypadconst ROWS = 4; // Quatro linhasconst byte COLS = 4; // Três colunas // Definir as chaves do 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 o teclado ROW0, ROW1, ROW2 e ROW3 a esses pinos do Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Conecte o teclado COL0, COL1 e COL2 a esses pinos do Arduino. Keypad kpd = Teclado (makeKeymap (keys), rowPins, colPins, ROWS, COLS); // Crie o tecladoconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinos aos quais o LCD está conectadoLiquidCrystal lcd (rs, en, d4, d5, d6, d7); longo Num1, Num2, Número; chave char, ação; resultado booleano = falso; configuração vazia () {lcd.begin (16, 2); // Estamos usando um display LCD 16 * 2 lcd.print ("DIY Calculator"); // Exibe uma mensagem de introdução lcd.setCursor (0, 1); // define o cursor para a coluna 0, linha 1 lcd.print ("- CircuitDigest"); // Exibe uma mensagem de introdução delay (2000); // Aguarde o display mostrar informações lcd.clear (); // Em seguida, limpe-o} void loop () {key = kpd.getKey (); // armazenando o valor da tecla pressionada em um charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Em seguida, limpe if (key == '*') // Se o botão Cancelar for pressionado {Serial.println ("Botão Cancelar"); Número = Num1 = Num2 = 0; resultado = falso;} if (key == '1') // Se o botão 1 for pressionado {Serial.println ("Botão 1"); if (Número == 0) Número = 1; senão Número = (Número * 10) + 1; // pressionado duas vezes} if (key == '4') // Se o botão 4 for pressionado {Serial.println ("Botão 4"); if (Número == 0) Número = 4; senão Número = (Número * 10) + 4; // pressionado duas vezes} if (key == '7') // Se o botão 7 for pressionado {Serial.println ("Botão 7"); if (Número == 0) Número = 7; senão Número = (Número * 10) + 7; // Pressionado duas vezes} if (key == '0') {Serial.println ("Botão 0"); // Botão 0 é pressionado if (Number == 0) Number = 0; senão Número = (Número * 10) + 0; // pressionado duas vezes} if (key == '2') // Botão 2 é pressionado {Serial.println ("Botão 2"); if (Número == 0) Número = 2; senão Número = (Número * 10) + 2; // Pressionado duas vezes} if (key == '5') {Serial.println ("Botão 5"); if (Número == 0) Número = 5; senão Número = (Número * 10) + 5; // Pressionado duas vezes} if (key == '8') {Serial.println ("Botão 8"); if (Número == 0) Número = 8; senão Número = (Número * 10) + 8; // Pressionado duas vezes} if (key == '#') {Serial.println ("Botão igual"); Num2 = número; resultado = verdadeiro; } if (key == '3') {Serial.println ("Botão 3"); if (Número == 0) Número = 3; senão Número = (Número * 10) + 3; // Pressionado duas vezes} if (key == '6') {Serial.println ("Botão 6"); if (Número == 0) Número = 6; senão Número = (Número * 10) + 6; // Pressionado duas vezes} if (key == '9') {Serial.println ("Botão 9"); if (Número == 0) Número = 9; senão Número = (Número * 10) + 9; // Pressionado duas vezes} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Botões de detecção na coluna 4 {Num1 = Número; Número = 0; if (chave == 'A') {Serial.println ("Adição"); ação = '+';} if (chave == 'B') {Serial.println ("Subtração"); ação = '-'; } if (key == 'C') {Serial.println ("Multiplicação"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); ação = '/';} atraso (100); }} void CalculateResult () {if (action == '+') Number = Num1 + Num2; if (ação == '-') Número = Num1-Num2; if (ação == '*') Número = Num1 * Num2; if (ação == '/') Número = Num1 / Num2; } void DisplayResult () {lcd.setCursor (0, 0); // define o cursor para a coluna 0, linha 1 lcd.print (Num1); lcd.print (ação); lcd.print (Num2); if (resultado == verdadeiro) {lcd.print ("="); lcd.print (Number);} // Exibe o resultado lcd.setCursor (0, 1); // define o cursor para a coluna 0, linha 1 lcd.print (Number); // Exibir o resultado}

Recomendado: