#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
long premier_chiffre = 0;
long second_chiffre = 0;
double calcul_total = 0;
char digicode_modifie;
const byte Lignes = 4;
const byte Colonnes = 4;
char Touches[Lignes][Colonnes] = {
{'1','2','3','+'},
{'4','5','6','-'},
{'7','8','9','*'},
{'C','0','=','/'}
};
byte Ligne_pins[Lignes] = {7,6,5,4}; //connect to the row pinouts of the keypad
byte Colonne_pins[Colonnes] = {3,2,1,0}; //connect to the column pinouts of the keypad
Keypad customKeypad= Keypad( makeKeymap(Touches), Ligne_pins, Colonne_pins, Lignes, Colonnes);
void setup()
{
lcd.begin(16, 2);
for(int i=0;i<=3;i++);
lcd.setCursor(0,0);
lcd.print("Calculatrice");
lcd.setCursor(0,1);
lcd.print("Arduino Factory");
delay(4000);
lcd.clear(); // On efface l'écran LCD
lcd.setCursor(0, 0);
}
void loop()
{
digicode_modifie = customKeypad.getKey();
switch(digicode_modifie)
{
case '0' ... '9':
lcd.setCursor(0,0);
premier_chiffre = premier_chiffre * 10 + (digicode_modifie - '0');
lcd.print(premier_chiffre);
break;
case '+':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("+");
second_chiffre = second_chiffre_nombre();
calcul_total = premier_chiffre + second_chiffre;
lcd.setCursor(0,3);
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case '-':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("-");
second_chiffre = second_chiffre_nombre();
calcul_total = premier_chiffre - second_chiffre;
lcd.setCursor(0,3);
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case '*':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("*");
second_chiffre = second_chiffre_nombre();
calcul_total = premier_chiffre * second_chiffre;
lcd.setCursor(0,3);
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case '/':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("/");
second_chiffre = second_chiffre_nombre();
lcd.setCursor(0,3);
second_chiffre == 0 ? lcd.print("Invalid") : calcul_total = (float)premier_chiffre / (float)second_chiffre;
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case 'C':
calcul_total = 0;
lcd.clear();
break;
}
}
long second_chiffre_nombre()
{
while( 1 )
{
digicode_modifie = customKeypad.getKey();
if(digicode_modifie >= '0' && digicode_modifie <= '9')
{
second_chiffre = second_chiffre * 10 + (digicode_modifie - '0');
lcd.setCursor(0,2);
lcd.print(second_chiffre);
}
if(digicode_modifie == '=') break;
}
return second_chiffre;
}