Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

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 :

Construire une Calculatrice Arduino avec Écran LCD 16x2 et Clavier

Tableau de câblage :

Broche Arduino Connexion
D01ère broche du clavier
D12ème broche du clavier
D23ème broche du clavier
D34ème broche du clavier
D45ème broche du clavier
D56ème broche du clavier
D67ème broche du clavier
D78ème broche du clavier
D8Broche Register Select du LCD (broche 4)
D9Broche Enable du LCD (broche 6)
D10Broche Data 4 (broche 11)
D11Broche Data 5 (broche 12)
D12Broche Data 6 (broche 13)
D13Broche Data 7 (broche 14)
+5VConnecté à Vdd du LCD (broche 2)
GNDConnecté à 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 :

Construire une Calculatrice Arduino avec Écran LCD 16x2 et Clavier

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

Construire une Calculatrice Arduino avec Écran LCD 16x2 et Clavier

Processus de fabrication

  1. Le rouleau à pâtisserie : des origines étrusques à l'artisanat moderne
  2. L'évolution et l'artisanat des quilles de bowling modernes
  3. Prévention des attaques USB HID : Démonstration d'exploit clavier avec Arduino Leonardo
  4. Programmer facilement les Atmel AT89 avec Arduino Uno – Guide pas à pas
  5. Construire un Spybot Arduino piloté par Bluetooth
  6. Décoder les signaux PPM d'un récepteur RC avec Arduino : Guide pas à pas
  7. FlickMote : Télécommande IR à gestes pour maison connectée
  8. TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
  9. Contrôle de ventilateur PWM 4 broches 25 kHz avec Arduino Uno – Construction, code et test