Construire une Calculatrice Arduino avec Écran LCD 16x2 et Clavier
Composants et fournitures
| Arduino UNO | × | 1 |
| Kit Shield LCD RVB 16x2 | × | 1 |
| Fils de connexion (générique) | × | 1 |
| Batterie 9V (générique) | × | 1 |
| Plaque d'essai (générique) | × | 1 |
À propos de ce projet
À la fin de ce projet, vous saurez comment utiliser un écran LCD 16x2 et un clavier avec Arduino, et à quel point il est facile de programmer pour eux en utilisant les bibliothèques disponibles. Vous comprendrez également comment programmer votre Arduino pour accomplir une tâche particulière.
Matériel requis :
- Arduino Uno (toute version fonctionnera)
- Écran LCD 16×2
- Clavier 4×4
- Batterie 9V
- Plaque d'essai et fils de connexion
Tableau de câblage :
| Broche Arduino | Connexion |
|---|---|
| D0 | 1ère broche du clavier |
| D1 | 2ème broche du clavier |
| D2 | 3ème broche du clavier |
| D3 | 4ème broche du clavier |
| D4 | 5ème broche du clavier |
| D5 | 6ème broche du clavier |
| D6 | 7ème broche du clavier |
| D7 | 8ème broche du clavier |
| D8 | Broche Register Select du LCD (broche 4) |
| D9 | Broche Enable du LCD (broche 6) |
| D10 | Broche Data 4 (broche 11) |
| D11 | Broche Data 5 (broche 12) |
| D12 | Broche Data 6 (broche 13) |
| D13 | Broche Data 7 (broche 14) |
| +5V | Connecté à Vdd du LCD (broche 2) |
| GND | Connecté à Vss, Vee et RW du LCD (broches 1, 3 et 5) |
Certaines cartes Arduino peuvent afficher une erreur lors du téléversement si quelque chose est connecté aux broches 0 et 1. Si vous rencontrez ce problème, retirez simplement le clavier pendant le téléversement du programme.
Une fois vos connexions faites, votre matériel ressemblera à ceci :
Code
Calculatrice Arduino avec Clavier (Arduino)
/*
* Programme Calculatrice Clavier Arduino
*/
#include <LiquidCrystal.h> // Fichier d'en-tête pour LCD depuis https://www.arduino.cc/en/Reference/LiquidCrystal
#include <Keypad.h> // Fichier d'en-tête pour Keypad depuis https://github.com/Chris--A/Keypad
const byte ROWS = 4; // Quatre lignes
const byte COLS = 4; // Quatre colonnes
// Définir le Keymap
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 }; // Connecter keypad ROW0, ROW1, ROW2 et ROW3 à ces broches Arduino.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connecter keypad COL0, COL1, COL2 et COL3 à ces broches Arduino.
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Créer le Keypad
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Broches auxquelles le LCD est connecté
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
long Num1, Num2, Number;
char key, action;
boolean result = false;
void setup() {
lcd.begin(16, 2); // Nous utilisons un écran LCD 16*2
lcd.print("DIY Calculator"); // Afficher un message d'intro
lcd.setCursor(0, 1); // placer le curseur à la colonne 0, ligne 1
lcd.print("-CircuitDigest"); // Afficher un message d'intro
delay(2000); // Attendre l'affichage
lcd.clear(); // Puis effacer
}
void loop() {
key = kpd.getKey(); // stocker la valeur de la touche pressée dans un char
if (key != NO_KEY) DetectButtons();
if (result == true) CalculateResult();
DisplayResult();
}
void DetectButtons() {
lcd.clear(); // Puis effacer
if (key == '*') { // Si bouton Annuler pressé
Serial.println("Button Cancel");
Number = Num1 = Num2 = 0;
result = false;
}
if (key == '1') { Serial.println("Button 1"); if (Number == 0) Number = 1; else Number = (Number * 10) + 1; }
if (key == '4') { Serial.println("Button 4"); if (Number == 0) Number = 4; else Number = (Number * 10) + 4; }
if (key == '7') { Serial.println("Button 7"); if (Number == 0) Number = 7; else Number = (Number * 10) + 7; }
if (key == '0') { Serial.println("Button 0"); if (Number == 0) Number = 0; else Number = (Number * 10) + 0; }
if (key == '2') { Serial.println("Button 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; }
if (key == '5') { Serial.println("Button 5"); if (Number == 0) Number = 5; else Number = (Number * 10) + 5; }
if (key == '8') { Serial.println("Button 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; }
if (key == '#') { Serial.println("Button Equal"); Num2 = Number; result = true; }
if (key == '3') { Serial.println("Button 3"); if (Number == 0) Number = 3; else Number = (Number * 10) + 3; }
if (key == '6') { Serial.println("Button 6"); if (Number == 0) Number = 6; else Number = (Number * 10) + 6; }
if (key == '9') { Serial.println("Button 9"); if (Number == 0) Number = 9; else Number = (Number * 10) + 9; }
if (key == 'A' || key == 'B' || key == 'C' || key == 'D') { // Détecter boutons colonne 4
Num1 = Number;
Number = 0;
if (key == 'A') { Serial.println("Addition"); action = '+'; }
if (key == 'B') { Serial.println("Subtraction"); action = '-'; }
if (key == 'C') { Serial.println("Multiplication"); action = '*'; }
if (key == 'D') { Serial.println("Division"); 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); // placer curseur colonne 0, ligne 1
lcd.print(Num1);
lcd.print(action);
lcd.print(Num2);
if (result == true) { lcd.print(" ="); lcd.print(Number); } // Afficher le résultat
lcd.setCursor(0, 1); // placer curseur colonne 0, ligne 1
lcd.print(Number); // Afficher le résultat
}
Schémas
Processus de fabrication
- Le rouleau à pâtisserie : des origines étrusques à l'artisanat moderne
- L'évolution et l'artisanat des quilles de bowling modernes
- Prévention des attaques USB HID : Démonstration d'exploit clavier avec Arduino Leonardo
- Programmer facilement les Atmel AT89 avec Arduino Uno – Guide pas à pas
- Construire un Spybot Arduino piloté par Bluetooth
- Décoder les signaux PPM d'un récepteur RC avec Arduino : Guide pas à pas
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Contrôle de ventilateur PWM 4 broches 25 kHz avec Arduino Uno – Construction, code et test