Bonjour à tous,
Encore un problème de conversion dont j’ai du mal à comprendre. :
Je veux pouvoir entrée un nombre de 3 chiffres ex :752 à partir d’un clavier , faire un calcul et l’afficher sur un lcd.
Je reçois un premier caractère ASCCI codé en décimale ex : 53 pour le chiffre 5, je veux faire une calcul ex : 5 x 8 =40. Donc je soustrais -48 qui est le « 0 » j’ ai donc mon chiffre 5 x 8 je range le résultat dans une variable d’abord le caractère reçu est un CHAR et pour un calcul je vais avoir besoin d’un INT ? mais comment faire repasser en Ascii pour mon affichage de mon résultat sur le lcd ?
Faut-il convertir chaque chiffre en ASCII, dans mon exemple, le 7, puis le etc.. sachant que je souhaite conserver le résultat pour d’éventuels autres calculs.
Je pense que c’est courant mais il est complètement paumé le débutant. Existe-t-il un bibli, j’ai essayé de voir avec atoi et autres ! je vous joins ce que j'ai essayé. merci de votre compréhension
J’espère avoir été assez clair dans mes explications
Merci pour votre aide et conseil. Très bonne journée
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// valeur
uint16_t valeur [] = {500,750}; // valeur par défaut
byte rowPins[ROWS] = {9,8,7,6,}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5,4,3,2}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal_I2C lcd(0x27,16, 2); // SET I2C Address
char key;
uint16_t valor[]= {000,000,000};
byte compt=0;
int resul=0;
//int chiffre2=0;
//int chiffre3=0;
char carac;
void setup(){
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.print(" exercice ");
delay(1000);
}
//debut programme ###########################################################
void loop(){
char key = keypad.getKey();
if (key){
if (key != 'A' and key != 'B' and key != 'C' and key != 'D' and key != '*' and key != '#') {
}
/* je pourrai utiliser une boule For pour lafaire le calcul, j'aimerai surtout savoir comment je
dois faire pour coder mon resultat pour mon lcd, */
if (compt<=3){
if( compt==0) {;carac= (key-48)*100; Serial.println(carac);
valor[1]=carac;Serial.println(valor[1]);compt+1;}
if( compt==1) {carac=(key-48)*10;valor[2]=carac;compt+1; Serial.println(valor[2]);}
if( compt==2) {;carac=(key-48)*100;valor[3]=carac;compt+1;Serial.println(valor[3]);}
resul=valor[1]+valor[2]+valor[3];
lcd.print (resul);Serial.println(resul) ;
}
else{compt=0;lcd.clear();}
}
} //fin """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
