Dans ce projet amusant, vous apprendrez à créer votre propre Arduino calculatrice.
Vous pouvez utiliser cette calculatrice pour des calculs simples. Ce sont des plus, moins, des temps ou divisés par. Alors ne vous attendez pas à pouvoir résoudre des équations avec.
Nous faisons cela en utilisant un clavier 4X4 et un écran LCD 16X2. Nous connectons l'écran via I2C, alors gardez à l'esprit que vous avez besoin de bibliothèques supplémentaires. Pour le clavier, vous devez importer la bibliothèque de clavier, vous trouverez plus d'informations à ce sujet dans le piano piézo projet. Pour les bibliothèques I2C, vous trouverez les informations dans le LCD I2C .
- Niveau - Moyen 40%
- Durée - 20/25 Min 25%
- Coûts - 42.80 € complets 40%
Étape 1: Fournitures
1X Arduino UNO
12X fils de cavalier
Clavier 1X 4X4
LCD 1X 16X2
Étape 2: Construire et câbler
Étape 3: programmation
Maintenant que vous commencez la programmation, gardez à l'esprit que vous avez besoin des bibliothèques Wire, Keypad et LiquidCrystal_I2C.
Lors de la programmation, nous définissons les * et # comme d'autres symboles. Le * est la fonction claire donc C et le # est le signe et est donc défini comme =.
Une fois que tout le code est dessus et que vous regardez votre Arduino, l'écran affichera d'abord «électronique pour votre calculatrice». Ensuite, l'écran devient vide et vous pouvez commencer à faire des calculs.
Si vous appuyez déjà sur le signe C avant d'avoir calculé une somme et que vous souhaitez continuer le calcul, vous remarquerez probablement que cela ne fonctionne pas. Il est important que vous appuyiez d'abord sur le signe = si vous ne le faites pas car cela ne fonctionnera pas.
// les bibliothèques dont nous avons besoin
#comprendre
#comprendre
#comprendre
// définitions du clavier
octet const ROWS = 4;
octet de const COLS = 4;
clés char [ROWS] [COLS] = {
{'1', '2', '3', '+'},
{'4', '5', '6', '-'},
{'7', '8', '9', '*'},
{'C', '0', '=', '/'}
};
byte rowPins [ROWS] = {0, 1, 2, 3};
octet colPins [COLS] = {4, 5, 6, 7};
Keypad ourKeypad = Keypad (makeKeymap (clés), rowPins, colPins, ROWS, COLS);
// initialiser lcd
LCD LiquidCrystal_I2C (0x3F, 20,4);
// dites ici quelles sont ces valeurs
booléen firstNumState = true;
String firstNum = "";
String secondNum = "";
réponse flottante = 0.0;
char oper = '';
void setup () {
// ici on allume l'écran
lcd.start (16,2);
lcd.init ();
lcd.init ();
LCD rétro-éclairage ();
lcd.setCursor (0,0);
lcd.print («électronique»);
lcd.setCursor (0,1);
lcd.print («Pour vous»);
délai (1500);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print («calculatrice»);
délai (1500);
lcd.clear ();
}
boucle vide () {
char newKey = ourKeypad.getKey ();
// que faire quand il reçoit un numéro
if (newKey! = NO_KEY && (newKey == '1' || newKey == '2' || newKey == '3' || newKey == '4' || newKey == '5' || newKey = = '6' || newKey == '7' || newKey == '8' || newKey == '9' || newKey == '0 ′)) {
if (firstNumState == true) {
firstNum = firstNum + newKey;
lcd.print (newKey);
}autre{
secondNum = secondNum + newKey;
lcd.print (newKey);
}
}
// que faire quand il a un opérateur
if (newKey! = NO_KEY && (newKey == '+' || newKey == '-' || newKey == '*' || newKey == '/')) {
if (firstNumState == true) {
oper = nouvelleClé;
firstNumState = false;
lcd.print (opér);
}
}
// ici nous disons ce qui se passe quand vous
// presse #
if (newKey! = NO_KEY && newKey == '=') {
// que faire en tant qu'opérateur
// + est
si (oper == '+') {
antw = firstNum.toFloat () + secondNum.toFloat ();
}
// que faire en tant qu'opérateur
// - est
si (oper == '-') {
antw = firstNum.toFloat () - secondNum.toFloat ();
}
// que faire en tant qu'opérateur
// * est
si (oper == '*') {
antw = firstNum.toFloat () * secondNum.toFloat ();
}
// que faire en tant qu'opérateur
// divisé par est
si (oper == '/') {
antw = firstNum.toFloat () / secondNum.toFloat ();
}
lcd.setCursor (0,0);
lcd.print (firstNum);
lcd.print (opér);
lcd.print (secondNum);
lcd.setCursor (0,1);
lcd.print ("=");
lcd.print (antw);
firstNumState = vrai;
}
if (newKey! = NO_KEY && newKey == 'C') {
// ici nous disons ce qui se passe quand vous
// presse *
lcd.clear ();
lcd.setCursor (0,0);
firstNum = "";
secondNum = "";
réponse = 0 ;
oper = '';
}
}