Bonjour a tous, je suis débutant et j’apprends en faisant de petits exercices. Je veux faire un simple menu avec un clavier 4 x 4 en matriciel et un LCD 16 x 2. J’utilise la bib. Keypad, j’ai copie un exemple et ça fonctionne. Dans mon programme je ne comprends pas pourquoi sur le LCD j’ai bien le bon caractère et pas sur le moniteur serie qui m’envoie un petit carré ? j’ai essayé de mettre les caractères en décimale c’est pareil ? de plus le clavier n’attend pas, j’ai dû introduire la variable ‘cla’ à chaque passage dans la fonction clavier, ce qui ne me parait pas normal. Ca fait des jours que je recherche et j’essaye sans succès.
J’ai aussi besoin d’un conseil, je n’ai jamais entré une valeur à 3 chiffres, pour moi, si je dois rentrer la valeur 350 je récupe le 5 que je multiplie par 100, que le mets dans ma variable, le 2ème caractère multiplié par 10, que j’ajoute à ma variable et même chose pour l’unité. Est-ce qu’il existe une autre méthode ? excusez mon ignorance je découvre petit à petit le C et c’est pas si simple.
Je vous remercie pour votre aide.
#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;
byte partie =0;
byte cla=0;
byte tval;
char carac;
void setup(){
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.print("salut");
}
void loop(){
// on attend l'apuye sur une touche
clavier(); Serial.println(key);
if (cla=1){
//key='A'; // utilise pour verifier test du switch
switch(key){
case '*':
lcd.clear();lcd.print ("Choix du Programme ");
lcd.setCursor(0, 01); lcd.print ("A ou B ");cla=0;
break;
case'A':
lcd.clear();
lcd.setCursor(0, 0); lcd.print("lire valeur");
lcd.setCursor(0, 1);lcd.print(valeur[0]);cla=0;
break;
case 'B':
lcd.clear();
lcd.setCursor(0, 0); lcd.print("entrée valeur 350");cla=0;
// a écrire
break;
}
}
} //fin
//____________________________________________
void clavier() //clavier
{
char key = keypad.getKey();
if (key)
{
//Serial.println(key);
lcd.print(key);
cla=1;;
}
return (key);}