Bonsoir à tous,
Voilà, je souhaite comprendre ce bout de code, il fonctionne, fait ce que je souhaite mais je ne le comprend pas complètement. Le but finale est de faire un compte a rebours programmable, j’y vais pas à pas.
Alors ce code il affiche du texte sur la 1er ligne (temps ?) ca, je sais faire. Ensuite sur la deuxième ligne il affiche ce que je tape a l’aide d’un keypad, pour le moments seulement les heures sur deux colonnes et c’est la que je bloque je comprends pas trop ce qu’on lui dis pour qu’il le fasse. Ensuite une fois ces deux colonnes taper il affiche “:” et on pourras passer au minutes.
Ce code met aussi certainement les heures dans une variable appelé hours (enfin je pense).
carte: Elegoo Carte MEGA 2560 R3 ATmega2560 ATMEGA 16U2
Voilà le code
#include <LiquidCrystal_I2C.h>
#include <Key.h>
#include <Keypad.h>LiquidCrystal_I2C lcd(0x27,16,2);
const byte ROWS = 4; //4 lignes
const byte COLS = 4; //4 colonnes
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {22,23,24,25};
byte colPins[COLS] = {26,27,28,29};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
lcd.begin();
lcd.clear();
}
void loop(){
char key = keypad.getKey();
int hours;
boolean cancel;
lcd.setCursor(0,0);
lcd.print("temps ?");
lcd.setCursor(4,1);
hours=readHours();
if (hours == -1)
cancel = true;
else
lcd.print(":");
}
//--------------------------------- Heures --------------------------------
int readHours ()
{
char key;
char hour[3];
int hours;
for (int i=0; i<2; ++i)
{
do
{
key = keypad.waitForKey();
if (key != NO_KEY);
}
while (key == NO_KEY || key == '#');
if (key == '*')
return -1;
hour[i] = key;
lcd.print(key);
}
hour[2] = '\0';
hours = atoi(hour);
return hours;
}
Merci de votre aide
Bonne soirée