J'ai fais ca mais le relais ne s'arrête pas.
J'ai mis volontairement y plus grand que temps sinon le relais s'allumait et s’éteigné en une fraction de seconde.Code:#include <Keypad.h> #define RELAY_1 10 #define RELAY_2 11 #define RELAY_3 12 #define RELAY_4 13 //--- Constantes utilisées avec le clavier 4x4 const byte LIGNES = 4; // 4 lignes const byte COLONNES = 4; //4 colonnes const int L1=2; //declaration constante de broche const int L2=3; //declaration constante de broche const int L3=4; //declaration constante de broche const int L4=5; //declaration constante de broche const int C1=6; //declaration constante de broche const int C2=7; //declaration constante de broche const int C3=8; //declaration constante de broche const int C4=9; //declaration constante de broche //--- Définition des touches 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 // création d'un objet keypad = initialisation clavier Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES ); // les broches de lignes sont automatiquement configurées en ENTREE avec pullup interne activé // les broches de colonnes sont automatiquement configurées en SORTIE int tempo; // variable de temporisation des relais long temps; // variable temps fonction millis() int y; // variable temps + temporisation. void setup() { // on initialise les sorties et on éteind les leds connectées pinMode(RELAY_1, OUTPUT); digitalWrite(RELAY_1, HIGH); pinMode(RELAY_2, OUTPUT); digitalWrite(RELAY_2, HIGH); pinMode(RELAY_3, OUTPUT); digitalWrite(RELAY_3, HIGH); pinMode(RELAY_4, OUTPUT); digitalWrite(RELAY_4, HIGH); y = temps + tempo; // obligais de les séparer des variables sinon ca me mettait erreur variable pas declarer. } void loop() { // debut de la fonction loop() // --- ici instructions à exécuter par le programme principal --- touche = clavier.getKey(); // lecture de la touche appuyée if(touche != NO_KEY){ // si une touche a été frappée -- gestion de la touche appuyée if(touche=='1') //si les touches '1' est tapée. {tempo=5000;} // la variable tempempo est à 5000. if(touche=='2') {tempo=10000;} if(touche=='3') {tempo=15000;} if(touche=='A') // si touche 'A' est tapée. {temps = millis(); digitalWrite(RELAY_1, LOW); if (y > temps) {digitalWrite(RELAY_1, HIGH);}} }}
Je n'ai pas réussi a mettre tempo quand j'appuis sur le bouton A.
J'ai aussi essayé de séparer
if (y > temps)
{digitalWrite(RELAY_1, HIGH);}
mais rien même résultat.
-----