Enregistrer des valeurs dans des variables via clavier 4*4 et LCD

Bonjour à tous
Donc voila je suis sur un projet qui m'est paru assez simple à première vue mais auquel je tourne en rond depuis plusieurs heures
le cahier de charge de ce projet est le suivant:
nous avons quatre variables A,B,C,D auxquels nous devons insérer des valeurs comprises entre 10 jusqu'à 500 et les enregistrer en appuyant sur '#' via un clavier 4*4 le tout affiché sur un lcd i2c

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(32,16,2);

//#include<EEPROM.h>
//const byte eepromFirstUsageToken = 170;

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
  {'D','#','0','*'},
  {'C','9','8','7'},
  {'B','6','5','4'},
  {'A','3','2','1'}
};
byte rowPins[ROWS] = {6, 8, 9, 10};
byte colPins[COLS] = {2, 3, 4, 5}; 

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int a;
int b;
int c;
int d;
int val=0;



void setup()
{
lcd.begin(16,2);
lcd.init();
lcd.backlight();
  lcd.setCursor(0, 0);
lcd.print(" BONJOUR");
  lcd.setCursor(0, 1);
  lcd.print("  ARDUINO");

Serial.begin(9600);

}

void loop()
{

  
  char cr = keypad.getKey();
 switch (cr)  {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
    
      val = 10 * val + (cr - '0');}
   
      
 if(cr=='*'){val=0;}
 
  if(cr=='A'){
   a=val;
    if(cr=='#'){EEPROM.put(0, a); }
   val=0;
  lcd.clear();lcd.setCursor(0, 0);lcd.print("VALEUR DE A");
lcd.setCursor(0, 1); lcd.print(" =="); lcd.print(a);
  
  }
 
   if(cr=='B'){
   b=val;
    if(cr=='#'){EEPROM.put(0, b); }
   val=0;
  lcd.clear();lcd.setCursor(0, 0);lcd.print("VALEUR DE B");
lcd.setCursor(0, 1); lcd.print(" =="); lcd.print(b);
  
  }
 
 if(cr=='C'){
   c=val;
    if(cr=='#'){EEPROM.put(0, c); }
   val=0;
  lcd.clear();lcd.setCursor(0, 0);lcd.print("VALEUR DE C");
lcd.setCursor(0, 1); lcd.print(" =="); lcd.print(c);
  
  }
  
  if(cr=='D'){
   d=val;
    if(cr=='#'){EEPROM.put(0, d); }
   val=0;
  lcd.clear();lcd.setCursor(0, 0);lcd.print("VALEUR DE D");
lcd.setCursor(0, 1); lcd.print(" =="); lcd.print(d);
  
  }
 
  }

Si vous voulez comprendre comment écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.