Bonjour.
J'ai écrit un code pour allumer des LED ( lampes) en appuyant les boutons d'un clavier matriciel 4x4.
Lorsque je réalise une simulation sous le logiciel PROTEUS, les lampes ne fonctionnent pas comme je le souhaite ( elles ne s'allument pas).
En gros lorsque j'appuis le bouton '*', le système est sensé attendre que j'appuis un second bouton ( compris entre '1' et '5' ) pour allumer la lampe correspondante.
Mais lorsque j'appuis le bouton '*' et après j'appuis sur un autre ( '1' par exemple) , rien ne se produit, la lampe ne s'allume pas.
Svp quelqu'un peut-il me dire d'où peut venir ce problème ???
Merci d'avance.
Voici le code :
#include <Key.h>
#include <Keypad.h>
/*-----------------------------déclaration des variables de gestion du clavier-------------------------------*/
const int ROW_NUM = 4; //four rows
const int COLUMN_NUM = 4; //four columns
char keys[ROW_NUM][COLUMN_NUM] = {
{'1','2','3', 'A'},
{'4','5','6', 'B'},
{'7','8','9', 'C'},
{'*','0','#', 'D'}
};
byte pin_rows[ROW_NUM] = {34, 36, 38, 40}; //connect to the row pinouts of the keypad{42, 44, 46, 48}{40, 38, 36, 34}
byte pin_column[COLUMN_NUM] = {42, 44, 46, 48}; //connect to the column pinouts of the keypad{34, 36, 38, 40}{48, 46, 44, 42}
Keypad clavier = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
/*-----------------------------déclaration des variables de gestion du clavier-------------------------------*/
/*--------------------------------------declaration des Pins des lampes--------------------------------------*/
int lampeSalon = 22;
int lampeChambre = 24;
int lampeCuisine = 26;
int lampeGarage = 28;
int lampeDouche = 30;
/*--------------------------------------declaration des Pins des lampes--------------------------------------*/
/*--------------------------------------------------declaration des des variables pour la gestion de l'éclairage-------------------------*/
//------------variables des switch/case de la fonction éclairage
int sal = 0 ;
int cha = 0 ;
int cui = 0 ;
int gar = 0 ;
int dou = 0 ;
//------------variables du switch/case de la fonction 'éclairage()'
//------------variables de gestion des états des lampes
int state_Salon = 0 ;
int state_Chambre = 0 ;
int state_Cuisine = 0 ;
int state_Garage = 0 ;
int state_Douche = 0 ;
//------------variables de gestion des états des lampes
/*--------------------------------------------------declaration des des variables pour la gestion de l'éclairage-------------------------*/
/*----------------------------------------Déclaration des fonctions---------------------------------------------*/
int eclairage (int a, int b, int c, int d, int e ); // fontion de gestion de l'éclairage
int gestion_clavier(); // fonction de gestion du clavier
/*----------------------------------------Déclaration des fonctions---------------------------------------------*/
void setup() {
Serial.begin(9600);
/*--------------------------------------configuration des Pins en entrée/sortie--------------------------------------*/
pinMode(lampeSalon, OUTPUT);
pinMode(lampeChambre, OUTPUT);
pinMode(lampeCuisine, OUTPUT);
pinMode(lampeGarage, OUTPUT);
pinMode(lampeDouche, OUTPUT);
/*--------------------------------------configuration des Pins en entrée/sortie--------------------------------------*/
/*-------------------------------------gestion du clavier-------------------------------------*/
//keypad.setDebounceTime(50); // pour régler l'anti-rebon à 50ms
/*-------------------------------------gestion du clavier-------------------------------------*/
}
void loop(){
gestion_clavier();
eclairage(sal, cha, cui, gar, dou) ;
}
/*----------------------------------fonction de reccupération des touches enfoncées du clavier-------------------------------------*/
int gestion_clavier(){
char code = clavier.getKey();
Serial.println(code);
if (code != NO_KEY){
if (code == '*'){
switch (code){
case '1' :
sal = 1 ;
break;
case '2' :
cha = 1 ;
break;
case '3' :
cui = 1 ;
break;
case '4' :
gar = 1 ;
break;
case '5' :
dou = 1 ;
break;
}
}
}
}
/*----------------------------------fonction de reccupération des touches enfoncées du clavier-------------------------------------*/
/*-----------------------------fonction gestion de l'éclairage à partir des requetes obtenues précédemment--------------------*/
int eclairage (int a, int b, int c, int d, int e){
switch (a){
case 1 :
digitalWrite(lampeSalon, HIGH);
state_Salon = 1 ;
a = 0 ;
break;
case 2 :
digitalWrite(lampeSalon, LOW);
state_Salon = 0 ;
a = 0 ;
break;
}
switch (b){
case 1 :
digitalWrite(lampeChambre, HIGH);
state_Chambre = 1 ;
b = 0 ;
break;
case 2 :
digitalWrite(lampeChambre, LOW);
state_Chambre = 0 ;
b = 0 ;
break;
}
switch (c){
case 1 :
digitalWrite(lampeCuisine, HIGH);
state_Cuisine = 1 ;
c = 0 ;
break;
case 2 :
digitalWrite(lampeCuisine, LOW);
state_Cuisine = 0 ;
c = 0 ;
break;
}
switch (d){
case 1 :
digitalWrite(lampeGarage, HIGH);
state_Garage = 1 ;
d = 0 ;
break;
case 2 :
digitalWrite(lampeGarage, LOW);
state_Garage = 0 ;
d = 0 ;
break;
}
switch (e){
case 1 :
digitalWrite(lampeDouche, HIGH);
state_Douche = 1 ;
e = 0 ;
break;
case 2 :
digitalWrite(lampeDouche, LOW);
state_Douche = 0 ;
e = 0 ;
break;
}
}
/*-----------------fonction gestion de l'éclairage à partir des requetes obtenues précédemment--------------------*/