Comme les 2 changements provoquent les mêmes actions (incrément et affichage), pour éviter la répétition de lignes de code, j'ai ajouté une fonction qui regroupe le tout et qui est appelée avec l'état de INTER:
void changeINTER(int etat) // Change l'état de INTER
Essaies ça (je n'ai pas pu essayer en vrai) et inspires t'en pour la suite ![]()
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// La commande de l'interrupteur se fait par la broche 2 de l'Arduino
#define INTER 2
int cptINTER = 0; // Comptage des transitions d'INTER
// Le contrôl de l'alim 120V se fait avec la broche 4 de l'Arduino connectée à l'entrée du driver de MOSFET
#define ALIM_120V 4
void setup() {
Serial.begin(115200);
lcd.begin(16, 2);
// Déclaration des broches 2 et 4 de l'arduino comme sorties
pinMode(INTER, OUTPUT);
pinMode(ALIM_120V, OUTPUT);
}
void loop() {
// Passer la sortie 4 de l'Arduino à l'état HAUT pour avoir 0 en sortie du driver afin de ne pas piloter le MOSFET
digitalWrite(ALIM_120V, HIGH);
// Attendre 1 seconde avant de passer aux instructions suivantes
delay(1000);
// Passer la sortie 2 de l'Arduino à l'état HAUT pour fermer l'interrupteur
changeINTER(HIGH);
// Après fermeture de l'interrupteur, attendre 3 secondes avant d'activer le MOS et envoyer du 120V
delay(3000);
// Passer la sortie 4 de l'Arduino à l'état BAS pour envoyer le 120V
digitalWrite(ALIM_120V, LOW);
// Après envoi du 120V, attendre 9 seconde avant d'arrêter cette tension
delay(9000);
// Passer la sortie 4 de l'Arduino à l'état HAUT pour arrêter le 120V
digitalWrite(ALIM_120V, HIGH);
// Après arrêt du 120V, attendre 1 seconde avant d'ouvrir l'interrupteur
delay(1000);
// Passer la sortie 2 de l'Arduino à l'état BAS pour ouvrir l'interrupteur
changeINTER(LOW);
// Après ouverture de l'interrupteur, attendre 3 seconde avant d'envoyer du 120V
delay(3000);
// Passer la sortie 4 de l'Arduino à l'état BAS pour envoyer le 120V
digitalWrite(ALIM_120V, LOW);
// Après envoi du 120V, attendre 9 seconde avant d'arrêter cette tension
delay(9000);
}
void changeINTER(int etat) // Change l'état de INTER
{
digitalWrite(INTER, etat);
cptINTER ++; // Incrémentation du compteur
lcd.setCursor(0,0);
lcd.print("INTER=");
lcd.setCursor(7,0);
lcd.print(String(cptINTER) + " ");
Serial.println("INTER = " + String(cptINTER));
}
Bonne soirée
jpbbricole