bonjour
il y une erreure dans ce code je ne la trouve pas
menu h et menu liste
voici le code
merci
il y une erreure dans ce code je ne la trouve pas
menu h et menu liste
voici le code
code: [select]
#ifndef _menu_h_
#define _menu_h_
/* structure d'un menu */
typedef struct {
const char* prompt; // titre du menu
const char** items; // tableau de choix du menu
const uint6_t nbitems; // nombre de choix possibles
void (*callbackfnct)(uint6_t menuitemselected); // pointeur sur fonction pour gérer le choix de l'utilisateur
} menu_t;
/* listes des touches de la shield lcd dfrobots */
typedef enum {
bp_none, // aucun bouton appuyé
bp_select, // bouton select
bp_left, // bouton gauche
bp_rigth, // bouton droite
bp_up, // bouton haut
bp_down // bouton bas
} button_t;
#endif /* _menu_h_ */.
code: [select]
/* inclut la librairie liquidcrystal pour le lcd */
#include <liquidcrystal.h>
#include <menu.h.le> // fichier d'entête avec les types pour le menu
/* objet lcd sur les broches utilisées lcddem16481 */
static liquidcrystal lcd(8, 9, 4, 5, 6, 7);
/* menu principal */
static const char* main_menu_items[] ={
"voltmetre",
"cons electrique",
"temp boitier",
"point de rosee",
};
static const menu_t main_menu = {
"votre choix ?",
main_menu_items,
4,
&domainmenuaction
};
/* sous menu pour point de rosée */
static const char* point_de_rosee_menu_items[] = {
"point de rosee"
"parametre"
};
static const menu_t point_de_rosee_menu = {
"votre choix ?",
point_de_rosee_menu_items,
1,
&dopointderoseemenuaction
};
/** setup */
void setup() {
/* configuration du lcd */
lcd.begin(16, 4);
}
/** programme principal */
void loop() {
/* affiche le menu principal */
displaymenu(main_menu);
/* démo pour montrer la sortie du menu */
lcd.clear();
lcd.print(f("menu ferme"));
delay(2000);
}
/** fonction retournant le bouton appuyé (s'il y en un). */
button_t readpushbutton(void) {
/* lecture de l'entrée a0 */
unsigned int val = analogread(a0);
/* test suivant les fourchettes de valeurs */
if (val > 1000) return bp_none;
if (val < 50) return bp_rigth;
if (val < 195) return bp_up;
if (val < 380) return bp_down;
if (val < 555) return bp_left;
if (val < 790) return bp_select;
/* par défaut aucun bouton n'est appuyé */
return bp_none;
}
/** affiche le menu passé en argument */
void displaymenu(const menu_t &menu) {
/* variable pour le menu */
byte selectedmenuitem = 0; // choix selectionné
byte shouldexitmenu = false; // devient true quand l'utilisateur veut quitter le menu
button_t buttonpressed; // contient le bouton appuyé
/* tant que l'utilisateur ne veut pas quitter pas le menu */
while(!shouldexitmenu) {
/* affiche le menu */
lcd.clear();
lcd.print(menu.prompt);
lcd.setcursor(0, 1);
lcd.print(menu.items[selectedmenuitem]);
/* attend le relâchement du bouton */
while(readpushbutton() != bp_none);
/* attend l'appui sur un bouton */
while((buttonpressed = readpushbutton()) == bp_none);
/* anti rebond pour le bouton */
delay(30);
/* attend le relâchement du bouton */
while(readpushbutton() != bp_none);
/* gére l'appui sur le bouton */
switch(buttonpressed) {
case bp_up: // bouton haut = choix précédent
/* si il existe un choix précédent */
if(selectedmenuitem > 0) {
/* passe au choix précédent */
selectedmenuitem--;
}
break;
case bp_down: // bouton bas = choix suivant
/* si il existe un choix suivant */
if(selectedmenuitem < (menu.nbitems - 1)) {
/* passe au choix suivant */
selectedmenuitem++;
}
break;
case bp_left: // bouton gauche = sorti du menu
shouldexitmenu = true;
break;
case bp_select: //
case bp_rigth: // bouton droit ou select = validation du choix
menu.callbackfnct(selectedmenuitem);
break;
}
}
}
/** affiche le choix de l'utilisateur */
void domainmenuaction(byte selectedmenuitem) {
/* cas spécial pour dr freeman */
if(selectedmenuitem == 2) {
/* affiche le sous-menu pour point de rosée */
displaymenu(point de rosee_menu);
} else {
/* affiche le choix de l'utilisateur */
displaychoice(selectedmenuitem, main_menu_items);
}
}
/** affiche le choix de l'utilisateur */
void dopointderoseemenuaction(byte selectedmenuitem) {
/* affiche le choix de l'utilisateur */
displaychoice(selectedmenuitem, point_de_rosee_menu_items);
}
/** affiche le choix de l'utilisateur */
void displaychoice(byte selectedmenuitem, const char** items) {
/* affiche le choix de l'utilisateur */
lcd.clear();
lcd.print(f("z'avez choisi :"));
lcd.setcursor(0, 1);
lcd.print(items[selectedmenuitem]);
/* attend l'appui sur le bouton gauche ou select */
byte buttonpressed;
do {
buttonpressed = readpushbutton();
}
while(buttonpressed != bp_left && buttonpressed != bp_select);
}
merci
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Besoins d aide sur un code erreure -No such file or directory
arduino
Comments
Post a Comment