Calculadora Arduino
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Sobre este projeto
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 as bibliotecas disponíveis. Você também entenderá como programar seu Arduino para realizar uma tarefa específica.
Materiais necessários:
- Arduino Uno (qualquer versão funcionará)
- Tela LCD 16 × 2
- teclado 4 × 4
- Bateria 9V
- Placa de ensaio e fios de conexão
D0
1º pino do teclado
D1
2º pino do teclado
D2
3º pino do teclado
D3
4º pino do teclado
D4
5º pino do teclado
D5
6º pino do teclado
D6
7º pino do teclado
D7
8º pino do teclado
D8
Registre o pino de seleção do LCD (pino 4)
D9
Habilitar pino de LCD (pino 6)
D10
Pino de dados 4 (pino 11)
D11
Pino de dados 4 (pino 11)
D12
Pino de dados 4 (pino 11)
D13
Pino de dados 4 (pino 11)
+ 5V
Conectado ao pino Vdd do LCD (pino 2)
Chão
Conectado aos pinos Vss, Vee e RW do LCD (pinos 1, 3 e 5)
Algumas placas Arduino podem mostrar um erro durante o upload do programa se houver alguma coisa conectada ao pino 0 e pino 1, então se você tiver algum, apenas remova o teclado enquanto carrega o programa.
Uma vez que suas conexões sejam feitas, seu hardware ficará mais ou menos assim abaixo
Código
- Arquivo sem título
Arquivo sem título Arduino
* * Programa de calculadora do teclado Arduino * / # include// Arquivo de cabeçalho para LCD de https://www.arduino.cc/en/Reference/LiquidCrystal#include // Header arquivo para teclado de https://github.com/Chris--A/Keypadconst byte ROWS =4; // Quatro linhasconst byte COLS =4; // Três colunas // Defina 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}
Esquemas
Processo de manufatura
- Rolling Pin
- Pino de boliche
- Demonstração de exploração do teclado Arduino (HID) e prevenção
- Programação da série Atmel AT89 via Arduino
- Arduino Spybot
- Leitura do sinal PPM do receptor RC usando Arduino
- FlickMote
- TV B-Gone caseiro
- Relógio mestre
- Controle de ventilador PWM de 4 pinos de 25 kHz com Arduino Uno