Elliot_Gareau:
I don't understand. Do you want me to put extra braces or remove braces because I don't see any extra braces in the code that I posted Moreover, for me, the code compiles correctly.
Well, I don't see how but okay...
I adjusted a few things and got it to compile here. For your return problem, you need to read the switch each pass to update the variable EtatBoutonSelection before testing it.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
const int BoutonSelection = 10;
const int BoutonReglage = 11;
const int BoutonPlus = 12;
const int BoutonMoins = 13;
int pageMenu = 1;
const int Relai1 = 8;
const int Relai2 = 9;
int EtatBoutonPlus = HIGH;
int EtatBoutonMoins = HIGH;
int EtatBoutonSelection = HIGH;
int EtatBoutonReglage = HIGH;
int TauxHumidite;
int PourcentageHumidite;
int ValeurMaximum = 1023;
int ValeurMinimum = 0;
int Seconde = 0;
int Minute = 0;
int Heure = 0;
int Jour = 0;
int Semaine = 0;
int TempsLumiere = 12;
void setup()
{
//lcd.begin();
lcd.init();
lcd.backlight();
pinMode (BoutonSelection, INPUT_PULLUP);
pinMode (BoutonReglage, INPUT_PULLUP);
pinMode (BoutonPlus, INPUT_PULLUP);
pinMode (BoutonMoins, INPUT_PULLUP);
pinMode(A0, INPUT);
pinMode(Relai1, OUTPUT);
pinMode(Relai2, OUTPUT);
}//setup
void loop()
{
MenuPrincipal();
}//loop
void MenuPrincipal()
{
TauxHumidite = analogRead(A0);
PourcentageHumidite = map(TauxHumidite, ValeurMaximum, ValeurMinimum, 0, 100);
EtatBoutonSelection = digitalRead(BoutonSelection);
EtatBoutonReglage = digitalRead(BoutonReglage);
EtatBoutonPlus = digitalRead(BoutonPlus);
EtatBoutonMoins = digitalRead(BoutonMoins);
if(EtatBoutonPlus == LOW)
{
pageMenu++;
}
if(EtatBoutonMoins == LOW)
{
pageMenu--;
}
if(pageMenu == 0)
{
pageMenu = 4;
}
if(pageMenu == 5)
{
pageMenu = 1;
}
switch (pageMenu)
{
case 1:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Taux humidite");
lcd.setCursor(0,1);
lcd.print("actuel:");
lcd.setCursor(7,1);
lcd.print(PourcentageHumidite);
lcd.setCursor(9,1);
lcd.print("%");
delay(500);
if(EtatBoutonReglage == LOW)
{
SousMenu1();
}
break;
case 2:
lcd.setCursor(0,0);
lcd.print("S:");
lcd.setCursor(2,0);
lcd.print(Seconde);
lcd.setCursor(6,0);
lcd.print("M:");
lcd.setCursor(8,0);
lcd.print(Minute);
lcd.setCursor(12,0);
lcd.print("H:");
lcd.setCursor(14,0);
lcd.print(Heure);
lcd.setCursor(3,1);
lcd.print("J:");
lcd.setCursor(5,1);
lcd.print(Jour);
lcd.setCursor(10,1);
lcd.print("Se:");
lcd.setCursor(13,1);
lcd.print(Semaine);
delay(1000);
break;
case 3:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Heure:");
lcd.setCursor(6,0);
lcd.print(Heure);
lcd.setCursor(0,1);
lcd.print("Lumiere/24h:");
lcd.setCursor(13,1);
lcd.print(TempsLumiere);
delay(1000);
break;
}//switch
if(TauxHumidite >= 850)
{
digitalWrite(Relai1, LOW);
}
else
{
digitalWrite(Relai1, HIGH);
}
if(TempsLumiere <= Heure)
{
digitalWrite(Relai2, HIGH);
}
else
{
digitalWrite(Relai2, LOW);
}
Seconde++;
if (Seconde == 60)
{
Seconde = 0;
Minute++;
}
if (Minute == 60)
{
Minute = 0;
Heure++;
}
if (Heure == 24)
{
Heure = 0;
Jour++;
}
if (Jour == 7)
{
Jour = 0;
Semaine++;
}
lcd.clear();
}//MenuPrincipal
void SousMenu1()
{
EtatBoutonSelection = digitalRead(BoutonSelection);
EtatBoutonReglage = digitalRead(BoutonReglage);
EtatBoutonPlus = digitalRead(BoutonPlus);
EtatBoutonMoins = digitalRead(BoutonMoins);
while(1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("modification");
delay(500);
EtatBoutonSelection = digitalRead(BoutonSelection);
if(EtatBoutonSelection == LOW)
{
return;
}
}
}