Vous êtes sur la page 1sur 4

#include <LiquidCrystal_I2C.

h>

// Initialiser l'objet de l'afficheur LCD


LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C et dimensions de l'afficheur

// Broches des boutons poussoirs


const int boutonVerrePin = 2;
const int boutonTissusPin = 3;
const int boutonChirurgicalPin = 4;
const int boutonRetourPin = 5;

// Valeurs de température de stérilisation (en degrés Celsius)


const int temperatureVerre = 125;
const int temperatureTissus = 130;
const int temperatureChirurgical = 135;

// Durée de stérilisation (en secondes)


const int dureeSterilisation = 1800; // 30 minutes

enum EtatMenu { MENU_PRINCIPAL, STERILISATION_EN_COURS };

EtatMenu etatMenu = MENU_PRINCIPAL;

void setup() {
// Initialiser l'afficheur LCD
lcd.begin(16, 2);

// Afficher le message initial


afficherMenuPrincipal();
}

void loop() {
switch (etatMenu) {
case MENU_PRINCIPAL:
verifierBoutonsMenuPrincipal();
break;
case STERILISATION_EN_COURS:
verifierBoutonRetour();
break;
}
}

void afficherMenuPrincipal() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Que voulez-vous");
lcd.setCursor(0, 1);
lcd.print("steriliser?");
}

void verifierBoutonsMenuPrincipal() {
int boutonVerreEtat = digitalRead(boutonVerrePin);
int boutonTissusEtat = digitalRead(boutonTissusPin);
int boutonChirurgicalEtat = digitalRead(boutonChirurgicalPin);

if (boutonVerreEtat == LOW) {
effectuerSterilisation("Ster. de verre", temperatureVerre, dureeSterilisation);
} else if (boutonTissusEtat == LOW) {
effectuerSterilisation("Ster. de tissus", temperatureTissus,
dureeSterilisation);
} else if (boutonChirurgicalEtat == LOW) {
effectuerSterilisation("Ster. chirurgical", temperatureChirurgical,
dureeSterilisation);
}
}

void effectuerSterilisation(const char* typeSterilisation, int temperature, int


duree) {
etatMenu = STERILISATION_EN_COURS;

lcd.clear();
lcd.setCursor(0, 0);
lcd.print(typeSterilisation);
lcd.setCursor(0, 1);
lcd.print("Sterilisation en");

for (int i = duree; i >= 0; i--) {


lcd.setCursor(14, 1);
lcd.print(i);
delay(1000);
}

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("STERILISATION");
lcd.setCursor(0, 1);
lcd.print("EFFECTUEE");

delay(3000); // Attendre 3 secondes pour afficher le message


}

###########garrrrr voici un peu le truc

9 / 9

D'accord, voici le code mis à jour pour inclure un bouton de retour au menu et
afficher un message après la fin du cycle de stérilisation :

cpp
Copy code
#include <LiquidCrystal_I2C.h>

// Initialiser l'objet de l'afficheur LCD


LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C et dimensions de l'afficheur

// Broches des boutons poussoirs


const int boutonVerrePin = 2;
const int boutonTissusPin = 3;
const int boutonChirurgicalPin = 4;
const int boutonRetourPin = 5;

// Valeurs de température de stérilisation (en degrés Celsius)


const int temperatureVerre = 121;
const int temperatureTissus = 134;
const int temperatureChirurgical = 121;
// Durée de stérilisation (en secondes)
const int dureeSterilisation = 1800; // 30 minutes

enum EtatMenu { MENU_PRINCIPAL, STERILISATION_EN_COURS };

EtatMenu etatMenu = MENU_PRINCIPAL;

void setup() {
// Initialiser l'afficheur LCD
lcd.begin(16, 2);

// Afficher le message initial


afficherMenuPrincipal();
}

void loop() {
switch (etatMenu) {
case MENU_PRINCIPAL:
verifierBoutonsMenuPrincipal();
break;
case STERILISATION_EN_COURS:
verifierBoutonRetour();
break;
}
}

void afficherMenuPrincipal() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Que voulez-vous");
lcd.setCursor(0, 1);
lcd.print("steriliser?");
}

void verifierBoutonsMenuPrincipal() {
int boutonVerreEtat = digitalRead(boutonVerrePin);
int boutonTissusEtat = digitalRead(boutonTissusPin);
int boutonChirurgicalEtat = digitalRead(boutonChirurgicalPin);

if (boutonVerreEtat == LOW) {
effectuerSterilisation("Ster. de verre", temperatureVerre, dureeSterilisation);
} else if (boutonTissusEtat == LOW) {
effectuerSterilisation("Ster. de tissus", temperatureTissus,
dureeSterilisation);
} else if (boutonChirurgicalEtat == LOW) {
effectuerSterilisation("Ster. chirurgical", temperatureChirurgical,
dureeSterilisation);
}
}

void effectuerSterilisation(const char* typeSterilisation, int temperature, int


duree) {
etatMenu = STERILISATION_EN_COURS;

lcd.clear();
lcd.setCursor(0, 0);
lcd.print(typeSterilisation);
lcd.setCursor(0, 1);
lcd.print("Sterilisation en");

for (int i = duree; i >= 0; i--) {


lcd.setCursor(14, 1);
lcd.print(i);
delay(1000);
}

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("STERILISATION");
lcd.setCursor(0, 1);
lcd.print("EFFECTUEE");

delay(3000); // Attendre 3 secondes pour afficher le message

afficherMenuPrincipal();
}

void verifierBoutonRetour() {
int boutonRetourEtat = digitalRead(boutonRetourPin);

if (boutonRetourEtat == LOW) {
etatMenu = MENU_PRINCIPAL;
afficherMenuPrincipal();
}
}
Dans ce code, jai ajouté une variable boutonRetourPin pour définir la broche du
bouton de retour au menu également ajouté l'énumération EtatMenu pour gérer les
différents états du menu.

Lorsque tu es dans l'état MENU_PRINCIPAL, le programme vérifie l'état des boutons


de stérilisation comme avant. Lorsque tu es appuyez sur l'un des boutons, la
fonction effectuerSterilisation() est appelée pour lancer le cycle de
stérilisation. Une fois le cycle terminé, le message "STERILISATION EFFECTUEE" est
affiché pendant 3 secondes avant de revenir au menu principal.

Lorsque tu es dans l'état STERILISATION_EN_COURS, le programme vérifie l'état du


bouton de retour appuyez sur le bouton de retour, le programme revient à l'état
MENU_PRINCIPAL et affiche le menu principal à nouveau.

je pense que les connection son visible norhhh avec le code

Vous aimerez peut-être aussi