Table des matières:

Calculatrice Arduino : 6 étapes
Calculatrice Arduino : 6 étapes

Vidéo: Calculatrice Arduino : 6 étapes

Vidéo: Calculatrice Arduino : 6 étapes
Vidéo: How to make calculator using arduino #shorts 2024, Novembre
Anonim
Calculatrice Arduino
Calculatrice Arduino

La programmation est toujours amusante et Arduino est une plate-forme merveilleuse si vous débutez avec la programmation embarquée. Dans ce tutoriel, nous allons construire notre propre calculatrice avec Arduino. Les valeurs peuvent être envoyées via un clavier (clavier 4×4) et le résultat peut être visualisé sur un écran LCD (16×2 Dot-matrix). Cette calculatrice peut effectuer des opérations simples comme l'addition, la soustraction, la multiplication et la division avec des nombres entiers. Mais une fois que vous avez compris le concept, vous pouvez même implémenter des fonctions scientifiques avec les fonctions intégrées d'Arduino. À la fin de ce projet, vous saurez comment utiliser un écran LCD et un clavier 16x2 avec Arduino et aussi à quel point il est facile de programmer pour eux en utilisant le bibliothèques disponibles. Vous comprendrez également comment programmer votre Arduino pour accomplir une tâche particulière.

Étape 1: Choses requises

Arduino Uno (Toute version fonctionnera) Écran LCD 16 × 2 Clavier 4 × 4 Batterie 9V Planche à pain et fils de connexion

Étape 2: schéma de circuit

Schéma
Schéma

Étape 3: programme de calculatrice Arduino

Le programme Arduino complet pour ce projet est donné à la fin de ce projet. Le code est divisé en petits morceaux significatifs et expliqué ci-dessous. Comme indiqué précédemment, nous allons interfacer un écran LCD et un clavier avec Arduino à l'aide de bibliothèques. Ajoutons-les donc d'abord à notre IDE Arduino. La bibliothèque pour LCD est déjà incluse dans votre Arduino par défaut, nous n'avons donc pas à nous en soucier. Pour la bibliothèque du clavier, cliquez sur le lien pour le télécharger depuis Github. Vous obtiendrez un fichier ZIP, puis ajoutez cette bibliothèque à Arduino par Sketch -> Inclure la bibliothèque -> Ajouter un fichier. ZIP et pointez l'emplacement vers ce fichier téléchargé. Une fois cela fait, nous sommes tous prêts pour la programmation. Même si nous avons utilisé une bibliothèque pour utiliser un clavier, nous devons mentionner quelques détails (illustrés ci-dessous) sur le clavier de l'Arduino. Les variables ROWS et COLS indiqueront le nombre de lignes et de colonnes de notre clavier et le clavier indique l'ordre dans lequel les touches sont présentes sur le clavier. Le clavier que j'utilise dans ce projet ressemble à ceci ci-dessous, la carte des touches représente également la même chose. Plus loin, nous avons mentionné ci-dessous à quelles broches le clavier est connecté à l'aide du tableau de variables rowPins et colPins.const octet ROWS = 4; // Quatre rowsconst byte COLS = 4; // Trois colonnes// Définir les Keymapchar keys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', ' B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}};byte rowPins[ROWS] = { 0, 1, 2, 3 }; // Connectez le clavier ROW0, ROW1, ROW2 et ROW3 à ces broches Arduino.byte colPins[COLS] = { 4, 5, 6, 7 }; // Connectez le clavier COL0, COL1 et COL2 à ces broches Arduino. Une fois que nous avons mentionné le type de clavier que nous utilisons et comment il est connecté, nous pouvons créer le clavier en utilisant ces détails en utilisant la ligne ci-dessousKeypad kpd = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS); // Créez le clavier De la même manière, nous devons également indiquer à quelles broches de l'Arduino l'écran LCD est connecté. Selon notre schéma de circuit, les définitions seraient comme ci-dessousconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Broches auxquelles l'écran LCD est connectéLiquidCrystal lcd(rs, en, d4, d5, d6, d7); //créer l'écran LCDDans la fonction de configuration, nous affichons simplement le nom du projet, puis nous passons à la boucle while où se trouve le projet principal. En gros, nous devons vérifier si quelque chose est tapé sur le clavier, si tapé, nous devons reconnaître ce qui est tapé, puis le convertir en une variable lorsque le "=" est pressé, nous devons calculer le résultat et enfin l'afficher sur l'écran LCD. C'est exactement ce qui est fait dans la fonction de boucle comme indiqué ci-dessouskey = kpd.getKey(); //stockage de la valeur de la touche enfoncée dans un charif (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); Ce qui se passe à l'intérieur de chaque fonction est expliqué à l'aide des lignes de commentaires, parcourez le code complet ci-dessous, bricolez-le pour comprendre comment cela fonctionne réellement. Si vous avez un doute sur une ligne précise, n'hésitez pas à utiliser la section commentaires ou les forums.

Étape 4:

Étape 5: Fonctionnement de la calculatrice Arduino

Fonctionnement de la calculatrice Arduino
Fonctionnement de la calculatrice Arduino

Effectuez les connexions selon le schéma de circuit et téléchargez le code ci-dessous. S'il affiche une erreur, assurez-vous d'avoir ajouté la bibliothèque conformément aux instructions données ci-dessus. Vous pouvez également essayer la simulation pour vérifier si le problème vient de votre matériel. Si tout est fait comme il est censé être, alors votre matériel ressemblera à ceci ci-dessous avec l'écran LCD affichant cette calculatrice Arduino utilisant le clavier 4x4 en action Puisque le clavier utilisé ici n'a pas de marquage approprié, j'ai supposé que les alphabets étaient des opérateurs comme ci-dessousCaractère sur le clavier Supposé être "A" Addition (+) "B" Soustraction (-) " C " Multiplication (*) " D " Division (/) " * " Effacer (C) " # " Egal à (=) Vous pouvez utilisez un marqueur pour écrire sur ce que chaque bouton représente réellement. Cela fait, vous pouvez directement commencer à utiliser la calculatrice. Tapez le numéro et apparaîtra sur la deuxième ligne appuyez sur l'opérande et tapez votre deuxième numéro enfin appuyez sur la touche "#" pour obtenir votre résultat. Vous pouvez également essayer de construire cette calculatrice Arduino à écran tactile.

Étape 6: Coder

/* * Programme de calculatrice de clavier Arduino */#include //Fichier d'en-tête pour l'écran LCD de https://www.arduino.cc/en/Reference/LiquidCrystal#include //Fichier d'en-tête pour clavier de https://github.com/ Chris--A/Keypadconst octet LIGNES = 4; // Quatre rowsconst byte COLS = 4; // Trois colonnes// Définir les Keymapchar keys[ROWS][COLS] = { {'7', '8', '9', 'D'}, {'4', '5', '6', ' C'}, {'1', '2', '3', 'B'}, {'*', '0', '#', 'A'}};byte rowPins[ROWS] = { 0, 1, 2, 3 }; // Connectez le clavier ROW0, ROW1, ROW2 et ROW3 à ces broches Arduino.byte colPins[COLS] = { 4, 5, 6, 7 }; // Connectez le clavier COL0, COL1 et COL2 à ces broches Arduino. Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Créer le clavierconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Broches auxquelles l'écran LCD est connectéLiquidCrystal lcd(rs, en, d4, d5, d6, d7); long Num1, Num2, Nombre; clé de caractère, action; boolean result = false;void setup() { lcd.begin(16, 2); //Nous utilisons un écran LCD 16*2 lcd.print("Calculatrice DIY"); //Affiche un message d'introduction lcd.setCursor(0, 1); // place le curseur sur la colonne 0, ligne 1 lcd.print("-CircuitDigest"); //Affiche un message d'introduction delay(2000); //Attend que l'écran affiche les informations lcd.clear(); //Puis le nettoyer}boucle void() {key = kpd.getKey(); //stockage de la valeur de la touche enfoncée dans un charif (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); }void DetectButtons(){ lcd.clear(); //Puis le nettoyer si (key=='*') //Si le bouton Annuler est enfoncé {Serial.println ("Bouton Annuler"); Nombre=Num1=Num2=0; result=false;} if (key == '1') //Si le bouton 1 est enfoncé {Serial.println ("Bouton 1"); si (Nombre==0) Nombre=1; sinon Nombre = (Nombre*10) + 1; //Appuyé deux fois } if (touche == '4') //Si le bouton 4 est enfoncé {Serial.println ("Bouton 4"); si (Nombre==0) Nombre=4; sinon Nombre = (Nombre*10) + 4; //Appuyé deux fois } if (touche == '7') //Si le bouton 7 est enfoncé {Serial.println ("Bouton 7"); si (Nombre==0) Nombre=7; sinon Nombre = (Nombre*10) + 7; //Appuyé deux fois } if (touche == '0') {Serial.println ("Bouton 0"); //Le bouton 0 est enfoncé si (Nombre==0) Nombre=0; sinon Nombre = (Nombre*10) + 0; //Appuyé deux fois } if (touche == '2') //Le bouton 2 est enfoncé {Serial.println ("Bouton 2"); si (Nombre==0) Nombre=2; sinon Nombre = (Nombre*10) + 2; //Appuyé deux fois } if (touche == '5') {Serial.println ("Bouton 5"); si (Nombre==0) Nombre=5; sinon Nombre = (Nombre*10) + 5; //Appuyé deux fois } if (touche == '8') {Serial.println ("Bouton 8"); si (Nombre==0) Nombre=8; sinon Nombre = (Nombre*10) + 8; //Appuyé deux fois } if (touche == '#') {Serial.println ("Bouton égal"); Num2=Nombre; résultat = vrai; } if (clé == '3') {Serial.println ("Bouton 3"); si (Nombre==0) Nombre=3; sinon Nombre = (Nombre*10) + 3; //Appuyé deux fois } if (touche == '6') {Serial.println ("Bouton 6"); si (Nombre==0) Nombre=6; sinon Nombre = (Nombre*10) + 6; //Appuyé deux fois } if (touche == '9') {Serial.println ("Bouton 9"); si (Nombre==0) Nombre=9; sinon Nombre = (Nombre*10) + 9; //Appuyé deux fois } if (touche == 'A' || touche == 'B' || touche == 'C' || touche == 'D') //Détection des boutons sur la colonne 4 { Num1 = Number; Nombre =0; if (clé == 'A') {Serial.println ("Ajout"); action = '+';} if (key == 'B') {Serial.println ("Soustraction"); action = '-'; } if (clé == 'C') {Serial.println ("Multiplication"); action = '*';} if (clé == 'D') {Serial.println ("Devesion"); action = '/';} délai(100); }}void CalculateResult(){ if (action=='+') Number = Num1+Num2; si (action=='-') Nombre = Num1-Num2; si (action=='*') Nombre = Num1*Num2; si (action=='/') Nombre = Num1/Num2; }void DisplayResult(){ lcd.setCursor(0, 0); // place le curseur sur la colonne 0, ligne 1 lcd.print(Num1); lcd.print(action); lcd.print(Num2); if (résultat==true) {lcd.print(" ="); lcd.print(Number);} //Affiche le résultat lcd.setCursor(0, 1); // place le curseur sur la colonne 0, ligne 1 lcd.print(Number); //Afficher le résultat}

Conseillé: