test menu
Dependencies: Menu RPG SMARTGPU TextLCD Ton mbed
Fork of lcd_menu by
main.cpp
- Committer:
- jjcimon
- Date:
- 2015-05-13
- Revision:
- 4:05868e0f5d7e
- Parent:
- 2:202735df93cd
File content as of revision 4:05868e0f5d7e:
#include "mbed.h" // #include "TextLCD.h" #include "RPG.h" #include "Selection.h" #include "Menu.h" #include "Navigator.h" #include <vector> #include <string> #include "SMARTGPU.h" #include "Ton.h" Ton t1(11000); Ton t2(60000); Ton t3(840000); char Rtions[5]; char p; DigitalOut Out1(LED1); DigitalOut Out2(LED2); DigitalOut out3(LED3); DigitalOut Out4(LED4); InterruptIn pb(p24); InterruptIn bt1(p26); InterruptIn bt2(p28); int waiting=0; int n; //int MTR = 0; DigitalOut MTR(p19); int volatile countT=0; char counter = 0; //const char Cpass[10]= {0x00}; char Cpass[10]; //int volatile old=0; int old = 0; int bt1o = 1; int oldbt2=1; int Mn1 = 1; int Mn2 = 3; void pb_hit_interrupt (void) { countT++; if( (old==0 ) & (waiting == 0) &( oldbt2 == 0)&( bt1o == 0) ) { MTR = 1; Out4 = !Out4; Out1=1; old = 1; } } void bt1_hit_interrupt (void) { if( (bt1o==0 )& (old == 0) ) { bt1o = 1; } } void bt2_hit_interrupt (void) { if( (oldbt2==0 )& (old == 0) ) { oldbt2 =1; }} //#include "rpc.h" Serial pc(USBTX, USBRX); SMARTGPU lcd(p13,p14,p15); //(TX,RX,Reset); DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); //TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 RPG rpg(p21,p22,p23); int oldpass; int pass; int oldCons; int Cons; int oldcourbe; int courbe; int oldHor; int Hor; int oldJour; int Jour; using namespace std; int prevpass; char bufCons[3]; char oldbufCons[3]; char bufPass[1]; char oldbufpass[1]; char bufcourbe[1]; char oldbufcourbe[1]; char bufJour[1]; char oldbufJour[1]; char bufHor[1]; char oldbufHor[1]; // some functions to tie to selections void toggleLED1() { led1 = !led1; } void toggleLED2() { led2 = !led2; } void toggleLED3() { led3 = !led3; } void toggleLED4() { led4 = !led4; } void incpass() { oldpass = pass; pass++; sprintf(bufPass, "%d", pass); } void decpass() { oldpass = pass; pass--; sprintf(bufPass, "%d", pass); } void incCons() { oldCons = Cons; Cons++; sprintf(bufCons, "%d", Cons); } void decCons() { oldCons = Cons; Cons--; sprintf(bufCons, "%d", Cons); } // Horaire void incHor() { oldHor = Hor; Hor++; sprintf(bufHor, "%d", Hor); } void decHor() { oldHor = Hor; Hor--; sprintf(bufHor, "%d", Hor); } // Jour void incJour() { oldJour = Jour; Jour++; sprintf(bufJour, "%d", Jour); } void decJour() { oldJour = Jour; Jour--; sprintf(bufJour, "%d", Jour); } // Courbe void incCourbe() { oldcourbe = courbe; courbe++; sprintf(bufcourbe, "%d", courbe); } void decCourbe() { oldcourbe = courbe; courbe--; sprintf(bufcourbe, "%d", courbe); } void resetLED() { led1 = 0; led2 = 0; led3 = 0; led4 = 0; } int main() { Cons = 0; pass = 2; Hor = 1; courbe = 3; Jour = 7; lcd.reset(); //physically reset SMARTGPU lcd.start(); //initialize the SMARTGPU processor toggleLED2(); pass = 1; set_time(1309776930); pb.mode(PullUp); bt1.mode(PullUp); bt2.mode(PullUp); wait(1); pb.fall(&pb_hit_interrupt); bt1.rise(&bt1_hit_interrupt); bt2.rise(&bt2_hit_interrupt); Rtions[1]=11; Rtions[2]=12; Rtions[3]=13; Rtions[4]=14; time_t rawtime = time(NULL); // In using this library, the user declares "Menus", which are essentially arrays of "Selections". // Selections describe each individual selectable item. // Selections can be tied to functions. Functions must output void and take in no arguments. // Selections can also have references to child menus. // It makes sense to declare a root menu first, but you don't have to. // Menus should have an identifier (the argument in constructor). Menu rootMenu("Menu Principale"); // Selections are added to menus through the Menu's "add" method. // If a function is to be executed when the RPG is depressed, make a REFERENCE to it. Otherwise null. // The second argument is its position - the will be deprecated soon. // The last is the text to display. *INCLUDE A SPACE IN THE BEGINNING, this is where the cursor goes. // *This means the text is limited to 14 characters (not counting the space) with this display. // **It is 14 not 15 for reasons pertaining to the implementation of the TextLCD library. Menu ledMenu("Options"); ledMenu.add(Selection(&toggleLED1, 0, NULL," Toggle LED1")); // The function argument of selection can be added directly ledMenu.add(Selection(&toggleLED2, 1, NULL, " Toggle LED2")); ledMenu.add(Selection(&toggleLED3, 2, NULL, " Toggle LED3")); ledMenu.add(Selection(&resetLED, 3, &rootMenu, " Retour")); ledMenu.add(Selection(NULL, 4, NULL, "Options")); // always add a Selection at the end to point to the parent Menu AlimMenu("Alimenter"); // about menu crediting us :) AlimMenu.add(Selection(NULL, 0, NULL, " Voir Courbe")); AlimMenu.add(Selection(&incpass, 1, NULL, " Augmenter")); AlimMenu.add(Selection(&decpass, 2, NULL, " Diminuer")); AlimMenu.add(Selection(NULL, 3, &rootMenu, " Retour")); AlimMenu.add(Selection(NULL, 4, NULL, "Alimenter")); Menu ledCourbe("Courbe"); // about menu crediting us :) ledCourbe.add(Selection(&incCourbe, 1, NULL, " Augmenter")); ledCourbe.add(Selection(&decCourbe, 2, NULL, " Diminuer")); ledCourbe.add(Selection(NULL, 2, NULL, " ")); ledCourbe.add(Selection(NULL, 3, &rootMenu, " Retour")); ledCourbe.add(Selection(NULL, 4, NULL, "Courbe")); Menu ledHoraire("Horaire"); // about menu crediting us :) ledHoraire.add(Selection(&incHor, 1, NULL, " Augmenter")); ledHoraire.add(Selection(&decHor, 2, NULL, " Diminuer")); ledHoraire.add(Selection(NULL, 2, NULL, " ")); ledHoraire.add(Selection(NULL, 3, &rootMenu, " Retour")); ledHoraire.add(Selection(NULL, 4, NULL, "Horaire")); Menu ledJour("Jour"); // about menu crediting us :) ledJour.add(Selection(&incJour, 1, NULL, " Augmenter")); ledJour.add(Selection(&decJour, 2, NULL, " Diminuer")); ledJour.add(Selection(NULL, 2, NULL, " ")); ledJour.add(Selection(NULL, 3, &rootMenu, " Retour")); ledJour.add(Selection(NULL, 4, NULL, "Jour")); Menu GestMenu("Gestation"); // about menu crediting us :) GestMenu.add(Selection(NULL, 0,&ledCourbe, " Courbe")); GestMenu.add(Selection(NULL, 1, &ledHoraire, " Horaire")); GestMenu.add(Selection(NULL, 2, &ledJour, " Journee Depart")); GestMenu.add(Selection(NULL, 3, &rootMenu, " Retour")); GestMenu.add(Selection(NULL, 4, NULL, "Gestation")); Menu ledCons("Consom"); // about menu crediting us :) ledCons.add(Selection(&incCons, 1, NULL, " Augmenter")); ledCons.add(Selection(&decCons, 2, NULL, " Diminuer")); ledCons.add(Selection(NULL, 2, NULL, " ")); ledCons.add(Selection(NULL, 3, &rootMenu, " Retour")); ledCons.add(Selection(NULL, 4, NULL, "Consom")); Menu MBMenu("Mise Bas"); // about menu crediting us :) MBMenu.add(Selection(NULL, 0, NULL, " Courbe Parite")); MBMenu.add(Selection(NULL, 1, NULL, " Courbe Horaire")); MBMenu.add(Selection(NULL, 2, NULL, " Journee Depart")); MBMenu.add(Selection(NULL, 3, &rootMenu, " Retour")); MBMenu.add(Selection(NULL, 4, NULL, "Mise Bas")); rootMenu.add(Selection(NULL, 0, &AlimMenu, " Alimenter")); rootMenu.add(Selection(NULL, 1, &GestMenu, " Gestation")); // a dummy menu, doesn't do anything rootMenu.add(Selection(NULL, 2, &MBMenu, " Mise Bas ")); rootMenu.add(Selection(NULL, 3, &ledMenu, " Options ")); // rootMenu.add(Selection(NULL, 4, &ledCourbe, " Courbe ")); // rootMenu.add(Selection(NULL, 5, &ledHoraire, " Horaire ")); // rootMenu.add(Selection(NULL, 6, &ledJour, " Jour ")); // rootMenu.add(Selection(NULL, 7, &ledCons, " Consom ")); rootMenu.add(Selection(NULL, 4, NULL, "Menu Principale")); // Here is the heart of the system: the navigator. // The navigator takes in a reference to the root, an interface, and a reference to an lcd Navigator navigator(&rootMenu, rpg, &lcd); prevpass = 0; while(1){ // navigator.poll(); Out2=1; if ( bt1o == 1){ //++menu if menu > 4 then menu = 0; Mn1 = ++ Mn1 % 9; // Mn1 = Menu1(Mn1); wait(.1); bt1o = 0; } if ( oldbt2 == 1){ //++menu if menu2 > 4 then menu2 = 0; Mn2 = ++ Mn2 % 5; // Mn2=Menu2(Mn2); wait(.1); oldbt2 = 0; } // lcd.locate(0,1); // lcd.printf(" bp out5\n"); // wait(.5); if( (out3==1) & (waiting == 840) ){ Out1=0; // lcd.locate(0,1); lcd.printf("Out3-1\n"); wait(1); if( t3 ){ // navigator.poll(); t3=0; // lcd.locate(0,1); lcd.printf("Out3wa\n"); // wait(1); out3=0; waiting = 0; counter = 0; } } if((Out1==1) & (waiting ==11)){ // lcd.locate(0,1); // lcd.printf("Alimente \n"); wait(.1); if( t1 ){ Out1=0; t1=0; MTR=0; //lcd.locate(0,1); //lcd.printf("Out11wait11E \n"); wait(.1); waiting = 60; t2=1; old=0; counter ++; Rtions[p]--; } } if ( (old==1)&(MTR==1) & (waiting == 0) ) { // lcd.locate(0,1); // lcd.printf("alimente \n"); wait( 1); rawtime = time(NULL); waiting = 11; t1=1; // lcd.locate(0,1); // lcd.printf("nwait w1 \n"); wait( 1); if (counter >= 6) { out3=1; waiting = 840;t3=1; } } if((Out1==0) & (waiting ==60)){ out3=1; // lcd.locate(0,1); // lcd.printf("Attend 60 sec "); wait(61); if( t2 ){ out3=0; t2=0; // lcd.locate(0,1); // lcd.printf(" "); wait(1); waiting = 0; // old=0; // lcd.locate(0,1); lcd.printf("apres old-0 \n"); // wait(1); } } // lcd.string(100,200,300,220,WHITE,FONT6,TRANS," "); // // oldHor = Hor; oldJour = Jour; oldcourbe = courbe; if ( (oldpass != pass)| ( oldCons != Cons) | ( oldHor != Hor) | ( oldcourbe != courbe) | ( oldJour != Jour)){ n=sprintf (Cpass, "Pa:%d Cs:%d H:%d Cb:%d Jr:%d", pass,Cons,Hor,courbe,Jour); lcd.string(15,210,300,220,WHITE,FONT3,TRANS,Cpass); oldCons = Cons; oldpass = pass; oldHor = Hor; oldcourbe = courbe; oldJour = Jour; } // lcd.string(100,200,300,220,WHITE,FONT6,TRANS,bufPass); // // lcd.string(100,200,300,220,WHITE,FONT6,TRANS,bufPass); // // lcd.string(150,200,300,220,WHITE,FONT6,TRANS,bufPass); // navigator.poll(); // In a loop, call navigator's poll method to determine if the user is interacting with the rpg. } }