bonsoir à tous, gros problème avec des if dans un programme de menu;
en gros, le menu appelle des sous menus en fonction de celui choisi avec un potentiomètre et de si on clique sur un bouton, il y a des sous menus ou je souhaite appeler des fonction mais cela fait bloquer toute la carte, les actions sur les bouton ou potentiomètre ne font plus rien
voici le code:
il est vraiment très long et lourd à lire mais le probleme pour moi vient des if, je n'arrive pas à ecrire autre chose que de l'affichage sur l'ecran, si j'appelle une sous fonction ça marche plus
j'ai mis un long commentaire avec marqué "ici" la ou il y a le probleme.
je vous remercie de votre aide
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)){ /// verif si l'ecran marche
Serial.println(F("SSD1306 allocation raté"));
for(;;);}
display.clearDisplay();
display.display();
pinMode(ENTER_BUTTON, INPUT); // Initialise le bouton 1
pinMode(EXIT_BUTTON, INPUT); // Initialise le bouton 2
pinMode(ETAT_POT, INPUT); // Initialise le potentiomètre
// secondes, minutes, heure, jour de la semaine, jour du mois, mois, année
//RTC.setDS1302Time(0,20,2,3,14,12,2022);
// initialisation des led
pinMode(ledJaune, OUTPUT);
pinMode(ledRouge, OUTPUT);
pinMode(ledVerte, OUTPUT);
pinMode(sensorPin, INPUT);
// initialise les broches buzzer
pinMode(10, OUTPUT);
// initialise bouton
pinMode(bouton, INPUT); // Initialise la broche 4 comme entrée
//attachInterrupt(digitalPinToInterrupt(bouton), boutonStop, CHANGE);
//potentionmetre menu
pinMode(potentio, OUTPUT);
}
void loop() {
// ce sont des bouton
ETAT_ENTER_BUTTON = digitalRead(ENTER_BUTTON);// selection de l'option
ETAT_EXIT_BUTTON = digitalRead(EXIT_BUTTON); // retour en arriere pour choisir une autre option
ETAT_POT = analogRead(POT);
// Affiche le menu principal
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
if (ETAT_POT<512){
display.drawRect(-10,29,160,15,BLACK);//non afficher
display.drawRect(-10,15,160, 11,WHITE);
}
if (ETAT_POT>=512){
display.drawRect(-10,29,160,15,WHITE);//non afficher
display.drawRect(-10,15,160, 11,BLACK);
}
if (menu == 1) {
display.println("Main Menu");
display.println("");
if (langue == 1) {
display.println("1. English");
display.println("");
display.println("2. Francais");
}
else if (langue == 2) {
display.println("1. English");
display.println("");
display.println("2. Francais");
}
}
else if (menu == 2) {
if (langue == 1) {
display.println("English Menu");
display.println("");
display.println("1. BPM");
display.println("");
display.println("2. Memory");
}
else if (langue == 2) {
display.println("Menu Francais");
display.println("");
display.println("1. BPM");
display.println("");
display.println("2. Memoire");
}
}
else if (menu == 3){
if (langue == 1) {
display.println("English Menu");
display.println("");
display.println("1. Display BPM/PPG");
display.println("");
display.println("2. Start measurement");
}
else if (langue == 2) {
display.println("Menu Francais");
display.println("");
display.println("1. Afficher BPM/PPG");
display.println("");
display.println("2. Demarrer mesure");
}
}
else if (menu == 4){
if (langue == 1) {
display.println("English Menu");
display.println("");
display.println("1. See measurement");
display.println("");
display.println("2. Delete measurement");
}
else if (langue == 2) {
display.println("Menu Francais");
display.println("");
display.println("1. Voir mesures ");
display.println("");
display.println("2. Effacer mesures");
}
}
else if (menu == 5){
if (langue == 1||langue == 2){
display.clearDisplay();
display.println("FCT AFFICHER BPM");
}
}
else if (menu == 6){
if(langue == 1||langue == 2){
display.clearDisplay();
display.print("mesure bpm");
bouclepourboucle(); //// ici//////// ici ///////////ici //////// ici //////// ici ///////////
}
}
else if (menu == 7){
if(langue == 1||langue == 2){
display.clearDisplay();
display.println("FCT AFFICHER MEMOIRE");
}
}
else if (menu == 8){
if(langue == 1||langue == 2){
display.clearDisplay();
display.println("FCT SUPPRIMER MEMOIRE");
}
}
display.display();
if (ETAT_ENTER_BUTTON == 0) { // Bouton1 enfoncé/////////////////////////////////ENTER/////////////////////////////////:
if (menu == 1) { // Si le menu principal est affiché
if (ETAT_POT < 512) { // Potentiomètre tourne à gauche
langue = 1; // Selectionne l'anglais
menu = 2;
}
else { // Potentiomètre tourne à droite
langue = 2; // Selectionne le français
menu = 2;
}
}
else if (menu == 2){// FRANCAIS
if (ETAT_POT < 512){
menu = 3;
}
else if (ETAT_POT > 512){
menu = 4;
}
}
else if (menu == 3){
if (ETAT_POT < 512){
menu = 5;
}
else if (ETAT_POT > 512){
menu = 6;
}
}
else if (menu == 4){
if (ETAT_POT < 512){
menu = 7;
}
else if (ETAT_POT > 512){
menu = 8;
}
}
else if (menu==4){//MEMORY
menu = 6;
}
else if (menu==3){//BPM
}
}
else if (ETAT_EXIT_BUTTON==0) {
if (menu == 2) {
menu = 1;
}
else if (menu == 3){
menu = 2;
}
else if (menu == 4){
menu = 2;
}
else if (menu==5){
menu = 3;
}
else if (menu==6){
menu = 3;
}
else if (menu==7){
menu = 4;
}
else if (menu==8){
menu = 4;
}
}
delay(100);
}