Bonjour
Je suis en train de travailler sur une bibliothèque Arduino, et dans mon ficher source "TestMenu.cpp" j'ai le programme suivant:
#include "TestMenu.h"
#include "Arduino.h"
#include "SoftwareSerial.h"
#include <avr/io.h>
#include <avr/wdt.h>
//---------------
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
TestMenu::TestMenu (String TitreMenu, String Titre1, String Titre2, String Titre3, int BoutonS, int BoutonB, int BoutonR, int BoutonV, int BoutonH)
{
monTitreMenu=TitreMenu;
monTitre1=Titre1;
monTitre2=Titre2;
monTitre3=Titre3;
// This is for the buttons
BoutonSelect=BoutonS;
BoutonBas=BoutonB;
boutonRouge=BoutonR;
BoutonVert=BoutonV;
BoutonHaut=BoutonH;
}
void TestMenu::monSetup() {
Serial.begin(9600); // Initialisation de la communication serie avec le PC
lcd.begin(20,4);
pinMode(BoutonSelect, INPUT_PULLUP); // definition bouton select en pullup
// pinMode(Buzzer, OUTPUT);
lcd.createChar(1, FlecheHaut2);
lcd.createChar(2, FlecheBas2);
lcd.createChar(3, FlecheMenu2);
lcd.createChar(4, FlecheGauche2);
lcd.createChar(5, indic2);
}
void TestMenu::monMenuTest()
{
while(1) {
EtatBoutonHAUT = digitalRead(BoutonHaut);
EtatBoutonBAS = digitalRead(BoutonBas);
EtatBoutonSELECT = digitalRead(BoutonSelect);
if(EtatBoutonHAUT == HIGH && EtatBoutonSELECT == HIGH) { // redemarrage par appui sur boutons Haut et Select
resetFunc();
}
if(EtatBoutonHAUT == HIGH && EtatBoutonBAS == HIGH) { // affichage du menu principal par appui sur boutons Haut et Bas
loop(); // MenuPrincipal();
}
//---------------------------------------------
// début de mon programme ici
if(digitalRead(BoutonHaut) == HIGH) {
// tone(Buzzer, 200, 50);
ValMenu--;
}
if(digitalRead(BoutonBas) == HIGH) {
// tone(Buzzer, 200, 50);
ValMenu++;
}
if(ValMenu >=4) {ValMenu = 1;}
if(ValMenu <=0) {ValMenu = 3;}
switch (ValMenu) { // debut de la structure
case 1: // cas 1
lcd.clear();
lcd.setCursor(0,0);
//lcd.print(TitreMenu);
lcd.print(monTitreMenu);
lcd.setCursor(0,1);
lcd.write(3); // indicateur sur option 1
lcd.print("1:"); // option 1
lcd.print(monTitre1);
lcd.setCursor(1,2);
lcd.print("2:"); // option 2
lcd.print(monTitre2);
lcd.setCursor(1,3);
lcd.print("3:"); // option 3
lcd.print(monTitre3);
if(EtatBoutonSELECT ==1){
delay(50);
EtatBoutonSELECT = digitalRead(BoutonSelect);
if(EtatBoutonSELECT ==0){
action=1;
}
} else {delay(150);}
break;
//************************************************************************
case 2: // cas 2
lcd.clear();
lcd.setCursor(0,0);
//lcd.print(TitreMenu);
lcd.print(monTitreMenu);
lcd.setCursor(1,1);
lcd.print("1:"); // option 1
lcd.print(monTitre1);
lcd.setCursor(0,2);
lcd.write(3); // indicateur sur option 2
lcd.print("2:"); // option 2
lcd.print(monTitre2);
lcd.setCursor(1,3);
lcd.print("3:"); // option 3
lcd.print(monTitre3);
if(EtatBoutonSELECT ==1){
delay(50);
EtatBoutonSELECT = digitalRead(BoutonSelect);
if(EtatBoutonSELECT ==0){
action=2;
}
} else {delay(150);}
break;
//****************************************************************************
} // switch
// fin de mon programme
//---------------------------------------------
} // fin while
}
Maintenant dans mon croquis Arduino je fais appel à la fonction:
samaMenu.monMenuTest(); // creation par TestMenu samaMenu();
Après l'exécution de la fonction, je veux recupérer la valeur de la variable "action" qui dans mon fihier TestMenu.cpp pour démarer une action dans Arduino.
Par exemple, si action=1, j'allume la LED rouge.
si action=2, j'allume la LED verte.
Comment je dois procéder?
Merci d'avance.