Bonsoir bonsoir,
J'avais dans l'espoir de faire un petit bout de code pour piloter des relais suivant le "code" saisie sur le clavier matriciel mais cependant je bloque assez vite sur un soucis de boucle un peu folle ^^ (ou d'initialisation, à cette heure je suis un peu dans le brouillard)
Je poste donc mon code (inspiré d'un sketch de code PIN que j'ai recup sur la toile il a un moment) en espérant que quelqu’un pourra me sauver la mise
#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD
#include <Keypad.h> // inclusion de la librairie pour clavier matriciel
// --- constantes des broches ---
const int L4=35; //declaration constante de broche
const int L3=37; //declaration constante de broche
const int L2=39; //declaration constante de broche
const int L1=41; //declaration constante de broche
const int C4=43; //declaration constante de broche
const int C3=45; //declaration constante de broche
const int C2=47; //declaration constante de broche
const int C1=49; //declaration constante de broche
//--- Const pour Afficheur LCD 16x2 ----
const int RS=32;
const int E=30;
const int D4=28;
const int D5=26;
const int D6=24;
const int D7=22;
//--- Constantes utilisées avec le clavier 4x4
const byte LIGNES = 4; // 4 lignes
const byte COLONNES = 4; //4 colonnes
char touches[LIGNES][COLONNES] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
// tableaux de lignes et colonnes
byte BrochesLignes[LIGNES] = {L1, L2, L3, L4}; //connexions utilisées pour les broches de lignes du clavier
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4}; //connexions utilisées pour les broches de colonnes du clavier
char touche; // variable de stockage valeur touche appuyée
Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// Création d'un objet LiquidCrystal = initialisation LCD en mode 4 bits
char attempt[6]={0,0,0,0,0,0}; // used for comparison
int z=0;
int w=0;
char INTER1ON[6]={'A','B','C','D','1','1'};
char INTER1OFF[6]={'A','B','C','D','1','0'};
char INTER2ON[6]={'A','B','C','D','2','1'};
char INTER2OFF[6]={'A','B','C','D','2','0'};
int INTER1ONvalue=0;
int INTER1OFFvalue=0;
int INTER2ONvalue=0;
int INTER2OFFvalue=0;
void setup()
{
lcd.begin(16,2); // Initialise le LCD avec 20 colonnes x 4 lignes
Serial.begin(115200);
delay(10); // pause rapide pour laisser temps initialisation
// Test du LCD
lcd.print("LCD OK") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes
lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(1000); // pour laisser temps effacer écran
lcd.print(" Entrer Code...");
}
void initialisation(){
int INTER1ONvalue=0;
int INTER1OFFvalue=0;
int INTER2ONvalue=0;
int INTER2OFFvalue=0;
}
void checkCODE()
{
for (int q=0; q<6; q++)
{
if (attempt[q]==INTER1ON[q]){
INTER1ONvalue++;
}
if (attempt[q]==INTER1OFF[q]){
INTER1OFFvalue++;
}
if (attempt[q]==INTER2ON[q]){
INTER2ONvalue++;
}
if (attempt[q]==INTER2OFF[q]){
INTER2OFFvalue++;
}
}
if (INTER1ONvalue==6){
Serial.println("INTER1ON_value");
}
if(INTER1OFFvalue==6){
Serial.println("INTER1OFF_value");
}
if(INTER2ONvalue==6){
Serial.println("INTER2ON_value");
}
if(INTER2OFFvalue==6){
Serial.println("INTER2OFF_value");
}
for (int w=0; w<6; w++){
attempt[w]=0;
}
Serial.println(INTER1ONvalue);
Serial.println(INTER1OFFvalue);
Serial.println(INTER2ONvalue);
Serial.println(INTER2OFFvalue);
Serial.println("Suivant OK");
initialisation();
}
void readKeypad()
{
char touche = clavier.getKey();
if (touche != NO_KEY)
{
if(touche=='*'){
z=0;
}
else if(touche=='#'){
delay(100); // for extra debounce
lcd.clear();
checkCODE();
}
else{
attempt[z]=touche;
z++;
}//fin else
}// fin if
}// fin void
void loop()
{
readKeypad();
}
Je vous glisse aussi ce que je recup sur le port série pour le debug
INTER2OFF_value
4
5
5
6
Suivant OK
INTER2OFF_value
17218
12868
49
6
Suivant OK
On remarque que pour le premier il n'y a aucun soucis mais qu'ensuite tout devient un peu étrange ^^
Si quelqu'un a une piste je suis preneur,
Bonne nuit a tous
Amicalement,
Trigger