Project calculatrice 0.1

Bonjours,je viens juste de terminer mon projet de faire une calculatrice presque scientifique . Elle est fonctionnelle et fonctionne très bien. :) Fonction: -PI -EXPOSANT -RACINE CARRE ET les incontournables + - * /

Explication du fonctionnement 5 step: première étape entre le chiffre1 puis virgule deuxième étape entre l'opération troisième étape entre le chiffre2 puis virgule sauf pour la racine carré et PI qui vont directement a l'étape 4 Quatrième étape résultat cinquième reset des chiffres, des opérations,etc Puis on recommence tout de A à Z du moins de 1 à 5 :) Montage Branchement si il y une erreur merci de me dire pas d'image car moi pas comprendre comment mettre image vous comprendre :) Code un peu long pourrait être simplifie mais j'aime pas la simplicité >:(

merci et bonne lecture dans pardonnez-moi l'expression ce [u]BORDEL DE CODE[/u] PS:la calculatrice fonctionne aussi avec une télécommande infrarouge d'un grand fabricant sud coréen pour ne pas dire la marque et aussi le code sera affiche ne deux partie car trop long

parti 1

#include <LiquidCrystal.h>

#include <IRremote.h>

int RECV_PIN = 10;

IRrecv irrecv(RECV_PIN);

decode_results results;

LiquidCrystal lcd(12,11,5,4,3,2);

int virgule=0;
int i=0;
int i2=0;
int virgule2=0;
unsigned long temps;
  float chiffre1=0;
float chiffre2=0;
float resultat=0;
int operation;
int etape=1;
int etatetape=0;
float resultat2=0;
byte coeur[8]={
  0b00000,
  0b01010,
  0b01110,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};

boolean etatbouton0=0;
boolean etatbouton1=0;
boolean etatbouton2=0;
boolean etatbouton3=0;
boolean etatbouton4=0;
boolean etatbouton5=0;
boolean etatbouton6=0;
boolean etatbouton7=0;
boolean etatbouton8=0;
boolean etatbouton9=0;
boolean etatboutonmode=0;

int bouton0=A0;
int bouton1=A1;
int bouton2=A2;
int bouton3=A3;
int bouton4=A4;
int bouton5=A5;
int bouton6=6;
int bouton7=7;
int bouton8=8;
int bouton9=9;
int boutonmode=13;
void setup() {
 
 Serial.begin(9600);
 irrecv.enableIRIn(); // Start the receiver
 lcd.begin(16,2);
 lcd.createChar(0,coeur);
 lcd.setCursor(15,1);
 lcd.write(byte(0));
pinMode(10,INPUT);
 pinMode(bouton0,INPUT);
 pinMode(bouton1,INPUT);
 pinMode(bouton2,INPUT);
 pinMode(bouton3,INPUT);
 pinMode(bouton4,INPUT);
 pinMode(bouton5,INPUT);
 pinMode(bouton6,INPUT);
 pinMode(bouton7,INPUT);
 pinMode(bouton8,INPUT);
 pinMode(bouton9,INPUT);
 pinMode(boutonmode,INPUT);
lcd.setCursor(2,0);
lcd.print("calculatrice");
lcd.setCursor(3,1);
lcd.print("remy mode");
delay(1900);
}

void loop() {

if(chiffre1>=100000000){
  chiffre1=0;
lcd.clear();
}
if(chiffre2>=100000000){
  chiffre2=0;
lcd.clear();
}
if(etape!=etatetape){
  etatetape=etape;
  lcd.clear();
}
switch (operation){
 
 
 case 1:
 resultat=chiffre1+chiffre2;
 lcd.setCursor(15,0);
 lcd.print("+");
 break;
 case 2:
 resultat=chiffre1-chiffre2;
 lcd.setCursor(15,0);
 lcd.print("-");
 break;
 case 3:
 resultat=chiffre1*chiffre2;
 lcd.setCursor(15,0);
 lcd.print("*");
 break;
 case 4:
 resultat=chiffre1/chiffre2;
 lcd.setCursor(15,0);
 lcd.print("/");
 break; 
 case 5:
 resultat=sqrt(chiffre1);
 lcd.setCursor(15,0);
 lcd.print("r");
 break;
 case 6:
 resultat2=pow(chiffre1,chiffre2);
 lcd.setCursor(15,0);
 lcd.print("2");
 break;
 case 7:
 resultat=chiffre1*3.14;
 lcd.setCursor(14,0);
 lcd.print("TT");
}
 switch (etape){
  
  case 1:
  switch (virgule){
    case 0:
  
  if(digitalRead(bouton0)==1&& digitalRead(bouton2)==1){
  lcd.clear();
  chiffre1=0;

}
  if(millis()-temps>500){
  temps=millis();
  if (irrecv.decode(&results)) {
    if(results.value==0xE13DDA28 ){
      chiffre1=chiffre1*10+1;
    }
    if(results.value==0xAD586662 ){
      chiffre1=chiffre1*10+2;
    }
    if(results.value==0x273009C4 ){
      chiffre1=chiffre1*10+3;
    }
    if(results.value==0xF5999288 ){
      chiffre1=chiffre1*10+4;
    }
    if(results.value==0x731A3E02 ){
      chiffre1=chiffre1*10+5;
    }
    if(results.value==0x2C452C6C ){
      chiffre1=chiffre1*10+6;
    }
    if(results.value==0x4592E14C ){
      chiffre1=chiffre1*10+7;
    }
    if(results.value==0x6825E53E ){
      chiffre1=chiffre1*10+8;
    }
    if(results.value==0x8B8510E8 ){
      chiffre1=chiffre1*10+9;
    }
    if(results.value==0xB9F56762 ){
      chiffre1=chiffre1*10+0;
    }
    if(results.value==0x8AF13528 ){
      virgule=1;
    }
    irrecv.resume(); // Receive the next value
  }
  }
  
  if(digitalRead(boutonmode)!=etatboutonmode){
    etatboutonmode=digitalRead(boutonmode);
    if(digitalRead(boutonmode)==1){
     virgule=1;
    }
  }
  if(digitalRead(bouton0)!=etatbouton0){
    etatbouton0=digitalRead(bouton0);
    if(digitalRead(bouton0)==1){
      chiffre1=chiffre1*10+0; 
    }
  }
 if(digitalRead(bouton1)!=etatbouton1){
    etatbouton1=digitalRead(bouton1);
    if(digitalRead(bouton1)==1){
      chiffre1=chiffre1*10+1; 
    }
  }
 if(digitalRead(bouton2)!=etatbouton2){
    etatbouton2=digitalRead(bouton2);
    if(digitalRead(bouton2)==1){
      chiffre1=chiffre1*10+2; 
    }
  }
 if(digitalRead(bouton3)!=etatbouton3){
    etatbouton3=digitalRead(bouton3);
    if(digitalRead(bouton3)==1){
      chiffre1=chiffre1*10+3; 
    }
  }
 if(digitalRead(bouton4)!=etatbouton4){
    etatbouton4=digitalRead(bouton4);
    if(digitalRead(bouton4)==1){
      chiffre1=chiffre1*10+4; 
    }
  }
 if(digitalRead(bouton5)!=etatbouton5){
    etatbouton5=digitalRead(bouton5);
    if(digitalRead(bouton5)==1){
      chiffre1=chiffre1*10+5; 
    }
  }
if(digitalRead(bouton6)!=etatbouton6){
    etatbouton6=digitalRead(bouton6);
    if(digitalRead(bouton6)==1){
      chiffre1=chiffre1*10+6; 
    }
  }
if(digitalRead(bouton7)!=etatbouton7){
    etatbouton7=digitalRead(bouton7);
    if(digitalRead(bouton7)==1){
      chiffre1=chiffre1*10+7; 
    }
  }
if(digitalRead(bouton8)!=etatbouton8){
    etatbouton8=digitalRead(bouton8);
    if(digitalRead(bouton8)==1){
      chiffre1=chiffre1*10+8; 
    }
  }
if(digitalRead(bouton9)!=etatbouton9){
    etatbouton9=digitalRead(bouton9);
    if(digitalRead(bouton9)==1){
      chiffre1=chiffre1*10+9; 
    }
  }
 break;
 case 1:
 if(millis()-temps>500){
  temps=millis();
  if (irrecv.decode(&results)) {
    if(results.value==0xE13DDA28 ){
      i++;
      chiffre1=1*pow(10,-i)+chiffre1;
    }
    if(results.value==0xAD586662 ){
      i++;
      chiffre1=2*pow(10,-i)+chiffre1;
    }
    if(results.value==0x273009C4 ){
      i++;
      chiffre1=3*pow(10,-i)+chiffre1;
    }
    if(results.value==0xF5999288 ){
      i++;
      chiffre1=4*pow(10,-i)+chiffre1;
    }
    if(results.value==0x731A3E02 ){
      i++;
      chiffre1=5*pow(10,-i)+chiffre1;
    }
    if(results.value==0x2C452C6C ){
      i++;
      chiffre1=6*pow(10,-i)+chiffre1;
    }
    if(results.value==0x4592E14C ){
      i++;
      chiffre1=7*pow(10,-i)+chiffre1;
    }
    if(results.value==0x6825E53E ){
      i++;
      chiffre1=8*pow(10,-i)+chiffre1;
    }
    if(results.value==0x8B8510E8 ){
      i++;
      chiffre1=9*pow(10,-i)+chiffre1;
    }
    if(results.value==0xB9F56762 ){
      i++;
      chiffre1=0*pow(10,-i)+chiffre1;
    }
    if(results.value==0x8AF13528 ){
      etape=2;
    }
    irrecv.resume(); // Receive the next value
  }
  }
 
 if(digitalRead(boutonmode)!=etatboutonmode){
    etatboutonmode=digitalRead(boutonmode);
    if(digitalRead(boutonmode)==1){
      etape=2;
    }
  }
  if(digitalRead(bouton0)!=etatbouton0){
    etatbouton0=digitalRead(bouton0);
    if(digitalRead(bouton0)==1){
     i++;
      chiffre1=0*pow(10,-i)+chiffre1;
    }
  }
 if(digitalRead(bouton1)!=etatbouton1){
    etatbouton1=digitalRead(bouton1);
    if(digitalRead(bouton1)==1){
i++;
      chiffre1=1*pow(10,-i)+chiffre1;
    }
  }
 if(digitalRead(bouton2)!=etatbouton2){
    etatbouton2=digitalRead(bouton2);
    if(digitalRead(bouton2)==1){
     i++;
      chiffre1=2*pow(10,-i)+chiffre1;
    }
  }
 if(digitalRead(bouton3)!=etatbouton3){
    etatbouton3=digitalRead(bouton3);
    if(digitalRead(bouton3)==1){
     i++;
      chiffre1=3*pow(10,-i)+chiffre1;
    }
  }
 if(digitalRead(bouton4)!=etatbouton4){
    etatbouton4=digitalRead(bouton4);
    if(digitalRead(bouton4)==1){
      i++;
      chiffre1=4*pow(10,-i)+chiffre1;
    }
  }
 if(digitalRead(bouton5)!=etatbouton5){
    etatbouton5=digitalRead(bouton5);
    if(digitalRead(bouton5)==1){
      i++;
      chiffre1=5*pow(10,-i)+chiffre1;
    }
  }
if(digitalRead(bouton6)!=etatbouton6){
    etatbouton6=digitalRead(bouton6);
    if(digitalRead(bouton6)==1){
     i++;
      chiffre1=6*pow(10,-i)+chiffre1;
    }
  }
if(digitalRead(bouton7)!=etatbouton7){
    etatbouton7=digitalRead(bouton7);
    if(digitalRead(bouton7)==1){
      i++;
      chiffre1=7*pow(10,-i)+chiffre1;
    }
  }
if(digitalRead(bouton8)!=etatbouton8){
    etatbouton8=digitalRead(bouton8);
    if(digitalRead(bouton8)==1){
      i++;
      chiffre1=8*pow(10,-i)+chiffre1;
    }
  }
if(digitalRead(bouton9)!=etatbouton9){
    etatbouton9=digitalRead(bouton9);
    if(digitalRead(bouton9)==1){
     i++;
      chiffre1=9*pow(10,-i)+chiffre1;
    }
  }
 lcd.setCursor(1,0);
 lcd.print(".");
 break;
  }
lcd.setCursor(4,0);
lcd.print("number1");
lcd.setCursor(1,1);

lcd.print(chiffre1,i);

 break;
case 2:
 if(millis()-temps>500){
 temps=millis(); 
 
 if (irrecv.decode(&results)) {
    if(results.value==0xE13DDA28||results.value==0xAD586662||results.value==0x273009C4||results.value==0xF5999288||results.value==0x731A3E02||results.value==0x2C452C6C||results.value==0x4592E14C){
      etape=3;
    }
    if(results.value==0xE13DDA28 ){
      operation=1;
    }
    if(results.value==0xAD586662 ){
      operation=2;
    }
    if(results.value==0x273009C4 ){
      operation=3;
    }
    if(results.value==0xF5999288 ){
      operation=4;
    }
    if(results.value==0x731A3E02 ){
      operation=5;
     etape=4;
    }
    if(results.value==0x2C452C6C ){
      operation=6;
    }
    if(results.value==0x4592E14C ){
     operation=7;
    etape=4;
    }
    irrecv.resume(); // Receive the next value
  }
 }
 if(digitalRead(bouton1)||digitalRead(bouton2)||digitalRead(bouton3)||digitalRead(bouton4)||digitalRead(bouton6)!=0){
  etape=3;
 }
 if(digitalRead(bouton1)!=etatbouton1){
    etatbouton1=digitalRead(bouton1);
    if(digitalRead(bouton1)==1){
      operation=1;
    }
  }
 if(digitalRead(bouton2)!=etatbouton2){
    etatbouton2=digitalRead(bouton2);
    if(digitalRead(bouton2)==1){
      operation=2;
    }
  }
 if(digitalRead(bouton3)!=etatbouton3){
    etatbouton3=digitalRead(bouton3);
    if(digitalRead(bouton3)==1){
     operation=3;
    }
  }
 if(digitalRead(bouton4)!=etatbouton4){
    etatbouton4=digitalRead(bouton4);
    if(digitalRead(bouton4)==1){
      operation=4;
    }
  }
 if(digitalRead(bouton5)!=etatbouton5){
    etatbouton5=digitalRead(bouton5);
    if(digitalRead(bouton5)==1){
      operation=5;
      etape=4;
    }
  }
 if(digitalRead(bouton6)!=etatbouton6){
    etatbouton6=digitalRead(bouton6);
    if(digitalRead(bouton6)==1){
      operation=6;
      
    }
  }
 if(digitalRead(bouton7)!=etatbouton7){
    etatbouton7=digitalRead(bouton7);
    if(digitalRead(bouton7)==1){
      operation=7;
      etape=4;
    }
  }
 
 lcd.setCursor(2,0);
 lcd.print("1 2 3 4 5 6 7");
 lcd.setCursor(2,1);
 lcd.print("+ - * / r 2 TT");
 break;
 case 3 :
 if(digitalRead(bouton0)==1&& digitalRead(bouton2)==1){
  lcd.clear();
  chiffre2=0;

}
  switch (virgule2){
  case 0:
 if(millis()-temps>500){
 temps=millis(); 
 
 if (irrecv.decode(&results)) {
    if(results.value==0xE13DDA28 ){
      chiffre2=chiffre2*10+1;
    }
    if(results.value==0xAD586662 ){
      chiffre2=chiffre2*10+2;
    }
    if(results.value==0x273009C4 ){
      chiffre2=chiffre2*10+3;
    }
    if(results.value==0xF5999288 ){
      chiffre2=chiffre2*10+4;
    }
    if(results.value==0x731A3E02 ){
      chiffre2=chiffre2*10+5;
    }
    if(results.value==0x2C452C6C ){
      chiffre2=chiffre2*10+6;
    }
    if(results.value==0x4592E14C ){
      chiffre2=chiffre2*10+7;
    }
    if(results.value==0x6825E53E ){
      chiffre2=chiffre2*10+8;
    }
    if(results.value==0x8B8510E8 ){
      chiffre2=chiffre2*10+9;
    }
    if(results.value==0xB9F56762 ){
      chiffre2=chiffre2*10+0;
    }
    if(results.value==0x8AF13528 ){
      virgule2=1;
    }
    irrecv.resume(); // Receive the next value
  }
 }

 if(digitalRead(boutonmode)!=etatboutonmode){
    etatboutonmode=digitalRead(boutonmode);
    if(digitalRead(boutonmode)==1){
      virgule2=1;
    }
  }
 
 
 if(digitalRead(bouton0)!=etatbouton0){
    etatbouton0=digitalRead(bouton0);
    if(digitalRead(bouton0)==1){
      chiffre2=chiffre2*10+0; 
    }
  }
 if(digitalRead(bouton1)!=etatbouton1){
    etatbouton1=digitalRead(bouton1);
    if(digitalRead(bouton1)==1){
      chiffre2=chiffre2*10+1; 
    }
  }
 if(digitalRead(bouton2)!=etatbouton2){
    etatbouton2=digitalRead(bouton2);
    if(digitalRead(bouton2)==1){
      chiffre2=chiffre2*10+2; 
    }
  }
 if(digitalRead(bouton3)!=etatbouton3){
    etatbouton3=digitalRead(bouton3);
    if(digitalRead(bouton3)==1){
      chiffre2=chiffre2*10+3; 
    }
  }
 if(digitalRead(bouton4)!=etatbouton4){
    etatbouton4=digitalRead(bouton4);
    if(digitalRead(bouton4)==1){
      chiffre2=chiffre2*10+4; 
    }
  }
 if(digitalRead(bouton5)!=etatbouton5){
    etatbouton5=digitalRead(bouton5);
    if(digitalRead(bouton5)==1){
      chiffre2=chiffre2*10+5; 
    }
  }
if(digitalRead(bouton6)!=etatbouton6){
    etatbouton6=digitalRead(bouton6);
    if(digitalRead(bouton6)==1){
      chiffre2=chiffre2*10+6; 
    }
  }
if(digitalRead(bouton7)!=etatbouton7){
    etatbouton7=digitalRead(bouton7);
    if(digitalRead(bouton7)==1){
      chiffre2=chiffre2*10+7; 
    }
  }
if(digitalRead(bouton8)!=etatbouton8){
    etatbouton8=digitalRead(bouton8);
    if(digitalRead(bouton8)==1){
      chiffre2=chiffre2*10+8; 
    }
  }
if(digitalRead(bouton9)!=etatbouton9){
    etatbouton9=digitalRead(bouton9);
    if(digitalRead(bouton9)==1){
      chiffre2=chiffre2*10+9; 
    }
  }
 break;
 case 1:
 if(millis()-temps>500){
 temps=millis(); 
 
 if (irrecv.decode(&results)) {
    if(results.value==0xE13DDA28 ){
      i2++;
      chiffre2=1*pow(10,-i2)+chiffre2;
    }
    if(results.value==0xAD586662 ){
      i2++;
      chiffre2=2*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x273009C4 ){
      i2++;
      chiffre2=3*pow(10,-i2)+chiffre2;
    }
    if(results.value==0xF5999288 ){
      i2++;
      chiffre2=4*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x731A3E02 ){
      i2++;
      chiffre2=5*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x2C452C6C ){
      i2++;
      chiffre2=6*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x4592E14C ){
      i2++;
      chiffre2=7*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x6825E53E ){
      i2++;
      chiffre2=8*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x8B8510E8 ){
      i2++;
      chiffre2=9*pow(10,-i2)+chiffre2;
    }
    if(results.value==0xB9F56762 ){
      i2++;
      chiffre2=0*pow(10,-i2)+chiffre2;
    }
    if(results.value==0x8AF13528 ){
      etape=4;
    }
    irrecv.resume(); // Receive the next value
  }
 }
 if(digitalRead(boutonmode)!=etatboutonmode){
    etatboutonmode=digitalRead(boutonmode);
    if(digitalRead(boutonmode)==1){
      etape=4;
    }
  }
  if(digitalRead(bouton0)!=etatbouton0){
    etatbouton0=digitalRead(bouton0);
    if(digitalRead(bouton0)==1){
     i2++;
      chiffre2=0*pow(10,-i2)+chiffre2;
    }
  }
 if(digitalRead(bouton1)!=etatbouton1){
    etatbouton1=digitalRead(bouton1);
    if(digitalRead(bouton1)==1){
i2++;
      chiffre2=1*pow(10,-i2)+chiffre2;
    }
  }
 if(digitalRead(bouton2)!=etatbouton2){
    etatbouton2=digitalRead(bouton2);
    if(digitalRead(bouton2)==1){
     i2++;
      chiffre2=2*pow(10,-i2)+chiffre2;
    }
  }
 if(digitalRead(bouton3)!=etatbouton3){
    etatbouton3=digitalRead(bouton3);
    if(digitalRead(bouton3)==1){
     i2++;
      chiffre2=3*pow(10,-i2)+chiffre2;
    }
  }
 if(digitalRead(bouton4)!=etatbouton4){
    etatbouton4=digitalRead(bouton4);
    if(digitalRead(bouton4)==1){
      i2++;
      chiffre2=4*pow(10,-i2)+chiffre2;
    }
  }
 if(digitalRead(bouton5)!=etatbouton5){
    etatbouton5=digitalRead(bouton5);
    if(digitalRead(bouton5)==1){
      i2++;
      chiffre2=5*pow(10,-i2)+chiffre2;
    }
  }
if(digitalRead(bouton6)!=etatbouton6){
    etatbouton6=digitalRead(bouton6);
    if(digitalRead(bouton6)==1){
     i2++;
      chiffre2=6*pow(10,-i2)+chiffre2;
    }
  }
if(digitalRead(bouton7)!=etatbouton7){
    etatbouton7=digitalRead(bouton7);
    if(digitalRead(bouton7)==1){
      i2++;
      chiffre2=7*pow(10,-i2)+chiffre2;
    }
  }
if(digitalRead(bouton8)!=etatbouton8){
    etatbouton8=digitalRead(bouton8);
    if(digitalRead(bouton8)==1){
      i2++;
      chiffre2=8*pow(10,-i2)+chiffre2;
    }
  }
if(digitalRead(bouton9)!=etatbouton9){
    etatbouton9=digitalRead(bouton9);
    if(digitalRead(bouton9)==1){
     i2++;
      chiffre2=9*pow(10,-i2)+chiffre2;
    }
  }
 lcd.setCursor(1,0);
 lcd.print(".");
 break;
 }
 lcd.setCursor(2,0);
 lcd.print("number2 and 2");
 lcd.setCursor(1,1);
 
 lcd.print(chiffre2,i2);

 break;
 case 4:
if (irrecv.decode(&results)) {
   
    if(results.value==0x8AF13528 ){
      etape=5;
    }
    irrecv.resume(); // Receive the next value
  }
if(digitalRead(boutonmode)!=etatboutonmode){
    etatboutonmode=digitalRead(boutonmode);
    if(digitalRead(boutonmode)==1){
      etape=5;
    }
  }
lcd.setCursor(2,0);
lcd.print("= results =");
if(resultat2==0){
if(i>i2){

lcd.setCursor(1,1);
lcd.print(resultat,i);
}
if(i<i2){
 lcd.setCursor(1,1);
lcd.print(resultat,i2); 
}
if(i==i2){
 lcd.setCursor(1,1);
lcd.print(resultat,i2);  
}
}

  


if(resultat==0){
  
  

lcd.setCursor(1,1);
lcd.print(resultat2,i+i2);
}  
  

 


 
}

parti 3

break;
 case 5:
 i2=0;
 i=0;
 virgule2=0;
 virgule=0;
 chiffre1=0;
 chiffre2=0;
 operation=0;
 etape=1;
 resultat=0;
 resultat2=0;
 break;
 }
}

prochaine etape, ajouter un systeme de language du type TI -basic ou casio, comme dans les vrais calculatrices :) :o :D :D :smiling_imp: :smiling_imp:

tu sais, tu peux dire la marque Samsung ou LG...