@ -13,13 +13,13 @@  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																# define MAX_OPTIONS 10       //Maximum number of options for each menu
  
																 
																 
																# define MAX_OPTIONS 10       //Maximum number of options for each menu
  
															
														 
														
													
														
															
																 
																 
																# define MAX_MENUS 3 
  
																 
																 
																# define MAX_MENUS 3 
  
															
														 
														
													
														
															
																 
																 
																# define MAX_GRAPH 3 
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																# define MAX_GRAPHS  3 
  
															
														 
														
													
														
															
																 
																 
																# define DISP_WIDTH 128       // OLED display width
  
																 
																 
																# define DISP_WIDTH 128       // OLED display width
  
															
														 
														
													
														
															
																 
																 
																# define DISP_HEIGHT 64       // OLED display height
  
																 
																 
																# define DISP_HEIGHT 64       // OLED display height
  
															
														 
														
													
														
															
																 
																 
																# define REFRESH 10           //Refresh time in ms
  
																 
																 
																# define REFRESH 10           //Refresh time in ms
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																# define ADDRESS 0x3C             //I2C address of the display
  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																Adafruit_SSD1306  display ( DISP_WIDTH ,  DISP_HEIGHT ,  & Wire ,  - 1 ) ;  
																 
																 
																Adafruit_SSD1306  display ( DISP_WIDTH ,  DISP_HEIGHT ,  & Wire ,  - 1 ) ;  
															
														 
														
													
														
															
																 
																 
																int  i  =  0 ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																class   Option {  
																 
																 
																class   Option {  
															
														 
														
													
														
															
																 
																 
																  private :   
																 
																 
																  private :   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -80,7 +80,7 @@ class Option{  
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																} ;  
																 
																 
																} ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																class   Menu {     //ContentTypeMenu true, it is a menu 
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																class   Menu {     //ContentType (1) 
  
															
														 
														
													
														
															
																 
																 
																  private :   
																 
																 
																  private :   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  int  sizex ;                   //X size for each option in the menu
   
																 
																 
																  int  sizex ;                   //X size for each option in the menu
   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -118,31 +118,34 @@ class Menu{    //ContentTypeMenu true, it is a menu  
															
														 
														
													
														
															
																 
																 
																    return  destinationIndex ;   
																 
																 
																    return  destinationIndex ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//The following method draws the whole menu by drawing every option configured within it
  
															
														 
														
													
														
															
																 
																 
																  void  drawMenu ( ) {   
																 
																 
																  void  drawMenu ( ) {   
															
														 
														
													
														
															
																 
																 
																    display . clearDisplay ( ) ;   
																 
																 
																    display . clearDisplay ( ) ;   
															
														 
														
													
														
															
																 
																 
																    this - > page  =  pos / this - > optPPage ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    this - > page  =  pos / this - > optPPage ;   //The current page is obtained by dividing the position by the number of options per page (only integer)
    
															
														 
														
													
														
															
																 
																 
																    for ( int  i  =  0 ;  i  <  options ;  i + + ) {   
																 
																 
																    for ( int  i  =  0 ;  i  <  options ;  i + + ) {   
															
														 
														
													
														
															
																 
																 
																      this - > opt [ i ] . drawopt ( this - > page ,  this - > pos ,  this - > optPPage ) ;   
																 
																 
																      this - > opt [ i ] . drawopt ( this - > page ,  this - > pos ,  this - > optPPage ) ;   
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																    display . display ( ) ;   
																 
																 
																    display . display ( ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																    
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  int  extractPos ( ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  //Methods used by Screen
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  int  extractPos ( ) {  //Gets the current position of the cursor
    
															
														 
														
													
														
															
																 
																 
																    return ( this - > pos ) ;   
																 
																 
																    return ( this - > pos ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  int  extractOptNumber ( ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  int  extractOptNumber ( ) {   //Gets the number of options in the menu
    
															
														 
														
													
														
															
																 
																 
																    return ( this - > options ) ;   
																 
																 
																    return ( this - > options ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  increasePos ( ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  void  increasePos ( ) {   //Increases the position of the cursor
    
															
														 
														
													
														
															
																 
																 
																    this - > pos + + ;   
																 
																 
																    this - > pos + + ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  decreasePos ( ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  void  decreasePos ( ) {    //Decreases the position of the cursor
    
															
														 
														
													
														
															
																 
																 
																    this - > pos - - ;   
																 
																 
																    this - > pos - - ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//Both of the following methods store the values of the previous screen passed as parameters by Screen
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  setPreviousScreen ( int  prev ) {   
																 
																 
																  void  setPreviousScreen ( int  prev ) {   
															
														 
														
													
														
															
																 
																 
																    this - > previousScreen  =  prev ;   
																 
																 
																    this - > previousScreen  =  prev ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -151,6 +154,7 @@ class Menu{    //ContentTypeMenu true, it is a menu  
															
														 
														
													
														
															
																 
																 
																    this - > previousContentType  =  prev ;   
																 
																 
																    this - > previousContentType  =  prev ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//Both of the following methods retrieve the values of the screen previous to the menu containing these data.
  
															
														 
														
													
														
															
																 
																 
																  int  getPreviousScreen ( ) {   
																 
																 
																  int  getPreviousScreen ( ) {   
															
														 
														
													
														
															
																 
																 
																    int  prev  =  this - > previousScreen ;   
																 
																 
																    int  prev  =  this - > previousScreen ;   
															
														 
														
													
														
															
																 
																 
																    return  prev ;   
																 
																 
																    return  prev ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -162,7 +166,7 @@ class Menu{    //ContentTypeMenu true, it is a menu  
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																} ;  
																 
																 
																} ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																class   Graph {     //ContentTypeMenu false, it is not a menu
   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																class   Graph {  
															
														 
														
													
														
															
																 
																 
																  private :   
																 
																 
																  private :   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  String  title ;   
																 
																 
																  String  title ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -181,7 +185,7 @@ class Graph{    //ContentTypeMenu false, it is not a menu  
															
														 
														
													
														
															
																 
																 
																  double  xmaximum ;       //For:               Horizontal Bar  Cartesian
   
																 
																 
																  double  xmaximum ;       //For:               Horizontal Bar  Cartesian
   
															
														 
														
													
														
															
																 
																 
																  double  yStepSize ;      //For: Vertical Bar                  Cartesian
   
																 
																 
																  double  yStepSize ;      //For: Vertical Bar                  Cartesian
   
															
														 
														
													
														
															
																 
																 
																  double  xStepSize ;      //For:               Horizontal Bar  Cartesian
   
																 
																 
																  double  xStepSize ;      //For:               Horizontal Bar  Cartesian
   
															
														 
														
													
														
															
																 
																 
																  double   digit ;          //For: Vertical Bar  Horizontal Bar  Cartesian
   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  int   digit ;          //For: Vertical Bar  Horizontal Bar  Cartesian
   
															
														 
														
													
														
															
																 
																 
																  double  x ;   
																 
																 
																  double  x ;   
															
														 
														
													
														
															
																 
																 
																  double  yrange ;   
																 
																 
																  double  yrange ;   
															
														 
														
													
														
															
																 
																 
																  double  xrange ;   
																 
																 
																  double  xrange ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -196,8 +200,9 @@ class Graph{    //ContentTypeMenu false, it is not a menu  
															
														 
														
													
														
															
																 
																 
																    
																 
																 
																    
															
														 
														
													
														
															
																 
																 
																  public :   
																 
																 
																  public :   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//This method configures the graph created, defines its parameters according the type of graph selected.
  
															
														 
														
													
														
															
																 
																 
																  void  configure ( String  title ,  char  graphType ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,   
																 
																 
																  void  configure ( String  title ,  char  graphType ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,   
															
														 
														
													
														
															
																 
																 
																  double  yminimum ,  double  ymaximum ,  double  xminimum ,  double  xmaximum ,  double  yStepSize ,  double  xStepSize ,  double   digit ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  double  yminimum ,  double  ymaximum ,  double  xminimum ,  double  xmaximum ,  double  yStepSize ,  double  xStepSize ,  int   digit ) {   
															
														 
														
													
														
															
																 
																 
																    this - > title  =  title ;   
																 
																 
																    this - > title  =  title ;   
															
														 
														
													
														
															
																 
																 
																    this - > graphType  =  graphType ;   
																 
																 
																    this - > graphType  =  graphType ;   
															
														 
														
													
														
															
																 
																 
																    this - > yminimum  =  yminimum ;   
																 
																 
																    this - > yminimum  =  yminimum ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -236,7 +241,7 @@ class Graph{    //ContentTypeMenu false, it is not a menu  
															
														 
														
													
														
															
																 
																 
																      case  ' a ' :   
																 
																 
																      case  ' a ' :   
															
														 
														
													
														
															
																 
																 
																      double  my ;   
																 
																 
																      double  my ;   
															
														 
														
													
														
															
																 
																 
																    
																 
																 
																    
															
														 
														
													
														
															
																 
																 
																      if  ( this - > redraw )  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																      if  ( this - > redraw )  {   //Prints the labels
    
															
														 
														
													
														
															
																 
																 
																        display . clearDisplay ( ) ;   
																 
																 
																        display . clearDisplay ( ) ;   
															
														 
														
													
														
															
																 
																 
																        this - > redraw  =  false ;   
																 
																 
																        this - > redraw  =  false ;   
															
														 
														
													
														
															
																 
																 
																        display . fillRect ( 0 ,  0 ,   127  ,  14 ,  SSD1306_WHITE ) ;   
																 
																 
																        display . fillRect ( 0 ,  0 ,   127  ,  14 ,  SSD1306_WHITE ) ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -374,7 +379,7 @@ class Graph{    //ContentTypeMenu false, it is not a menu  
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  redrawFlag ( ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  void  redrawFlag ( ) {  // Activates the redraw bool to get the graph printed correctly
    
															
														 
														
													
														
															
																 
																 
																    this - > redraw  =  true ;   
																 
																 
																    this - > redraw  =  true ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -410,21 +415,22 @@ class Graph{    //ContentTypeMenu false, it is not a menu  
															
														 
														
													
														
															
																 
																 
																class   Screen {  
																 
																 
																class   Screen {  
															
														 
														
													
														
															
																 
																 
																  private :   
																 
																 
																  private :   
															
														 
														
													
														
															
																 
																 
																    
																 
																 
																    
															
														 
														
													
														
															
																 
																 
																  Menu  menu [ MAX_MENUS ] ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  Graph  graph [ MAX_GRAPH ] ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  int  counterM  =  0 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  int  counterG  =  0 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  bool  redraw  =  true ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  Menu  menu [ MAX_MENUS ] ;   //Array of menus to use
    
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  Graph  graph [ MAX_GRAPHS  ] ;   //Array of graphs to use
    
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  int  counterM  =  0 ;         //Number of menus created
    
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  int  counterG  =  0 ;         //Number of graphs created
    
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  bool  redraw  =  true ;       //Redraw interface for when there is a change of screen
    
															
														 
														
													
														
															
																 
																 
																  int  currentScreen  =  0 ;   
																 
																 
																  int  currentScreen  =  0 ;   
															
														 
														
													
														
															
																 
																 
																  int  contentType  =  0 ;   
																 
																 
																  int  contentType  =  0 ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  public :   
																 
																 
																  public :   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  configure ( bool  fullsetting ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  void  configure ( bool  fullsetting ) {   //This method allows the configuration of the display when the parameter is true. Otherwise only prints a greeting message.
   
															
														 
														
													
														
															
																 
																 
																    if ( fullsetting ) {   
																 
																 
																    if ( fullsetting ) {   
															
														 
														
													
														
															
																 
																 
																      //Adafruit_SSD1306 display(DISP_WIDTH, DISP_HEIGHT, &Wire, -1);
   
																 
																 
																      //Adafruit_SSD1306 display(DISP_WIDTH, DISP_HEIGHT, &Wire, -1);
   
															
														 
														
													
														
															
																 
																 
																      Serial . begin ( 115200 ) ;   
																 
																 
																      Serial . begin ( 115200 ) ;   
															
														 
														
													
														
															
																 
																 
																      if  ( ! display . begin ( SSD1306_SWITCHCAPVCC ,  0x3C ) )  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																      if  ( ! display . begin ( SSD1306_SWITCHCAPVCC ,  ADDRESS ) )  {   
															
														 
														
													
														
															
																 
																 
																  # ifdef __DEBUG__ 
   
																 
																 
																  # ifdef __DEBUG__ 
   
															
														 
														
													
														
															
																 
																 
																        Serial . println ( " Display not found! " ) ;   
																 
																 
																        Serial . println ( " Display not found! " ) ;   
															
														 
														
													
														
															
																 
																 
																  # endif 
   
																 
																 
																  # endif 
   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -449,29 +455,29 @@ class Screen{  
															
														 
														
													
														
															
																 
																 
																    delay ( 5000 ) ;   
																 
																 
																    delay ( 5000 ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  createMenu ( int  sizex ,  int  sizey ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  void  createMenu ( int  sizex ,  int  sizey ) {    //This method is used for the creation of a menu
    
															
														 
														
													
														
															
																 
																 
																    this - > menu [ counterM ] . configure ( sizex ,  sizey ) ;   
																 
																 
																    this - > menu [ counterM ] . configure ( sizex ,  sizey ) ;   
															
														 
														
													
														
															
																 
																 
																    this - > counterM + + ;   
																 
																 
																    this - > counterM + + ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  createOption ( int  menuIndex ,  String  content ,  bool  destinationTypeMenu ,  int  destinationIndex ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  void  createOption ( int  menuIndex ,  String  content ,  bool  destinationTypeMenu ,  int  destinationIndex ) {   //this method should be used for creating an option in a menu
    
															
														 
														
													
														
															
																 
																 
																    this - > menu [ menuIndex ] . createOption ( content ,  destinationTypeMenu ,  destinationIndex ) ;   
																 
																 
																    this - > menu [ menuIndex ] . createOption ( content ,  destinationTypeMenu ,  destinationIndex ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  createVGraph ( String  title ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,   
																 
																 
																  void  createVGraph ( String  title ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,   
															
														 
														
													
														
															
																 
																 
																  double  yminimum ,  double  ymaximum ,  double  yStepSize ,  double   digit ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  double  yminimum ,  double  ymaximum ,  double  yStepSize ,  int   digit ) {    //this method calls the configure() of graph for a vertical graph
    
															
														 
														
													
														
															
																 
																 
																    this - > graph [ counterG ] . configure ( title ,  ' a ' ,  xpos ,  ypos ,  width ,  height ,  yminimum ,  ymaximum ,  0 ,  0 ,  yStepSize ,  0 ,  digit ) ;   
																 
																 
																    this - > graph [ counterG ] . configure ( title ,  ' a ' ,  xpos ,  ypos ,  width ,  height ,  yminimum ,  ymaximum ,  0 ,  0 ,  yStepSize ,  0 ,  digit ) ;   
															
														 
														
													
														
															
																 
																 
																    this - > counterG + + ;   
																 
																 
																    this - > counterG + + ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  createHGraph ( String  title ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,    
																 
																 
																  void  createHGraph ( String  title ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,    
															
														 
														
													
														
															
																 
																 
																  double  xminimum ,  double  xmaximum ,  double  xStepSize ,  double   digit ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  double  xminimum ,  double  xmaximum ,  double  xStepSize ,  int   digit ) {   //this method calls the configure() of graph for a horizontal graph
    
															
														 
														
													
														
															
																 
																 
																    this - > graph [ counterG ] . configure ( title ,  ' b ' ,  xpos ,  ypos ,  width ,  height ,  0 ,  0 ,  xminimum ,  xmaximum ,  0 ,  xStepSize ,  digit ) ;   
																 
																 
																    this - > graph [ counterG ] . configure ( title ,  ' b ' ,  xpos ,  ypos ,  width ,  height ,  0 ,  0 ,  xminimum ,  xmaximum ,  0 ,  xStepSize ,  digit ) ;   
															
														 
														
													
														
															
																 
																 
																    counterG + + ;   
																 
																 
																    counterG + + ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  void  createCGraph ( String  title ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,   
																 
																 
																  void  createCGraph ( String  title ,  double  xpos ,  double  ypos ,  double  width ,  double  height ,   
															
														 
														
													
														
															
																 
																 
																  double  yminimum ,  double  ymaximum ,  double  xminimum ,  double  xmaximum ,  double  yStepSize ,  double  xStepSize ,  double   digit ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  double  yminimum ,  double  ymaximum ,  double  xminimum ,  double  xmaximum ,  double  yStepSize ,  double  xStepSize ,  int   digit ) {   //this method calls the configure() of graph for a cartesian chart
    
															
														 
														
													
														
															
																 
																 
																    this - > graph [ counterG ] . configure ( title ,  ' c ' ,  xpos ,  ypos ,  width ,  height ,  yminimum ,  ymaximum ,  xminimum ,  xmaximum ,  yStepSize ,  xStepSize ,  digit ) ;   
																 
																 
																    this - > graph [ counterG ] . configure ( title ,  ' c ' ,  xpos ,  ypos ,  width ,  height ,  yminimum ,  ymaximum ,  xminimum ,  xmaximum ,  yStepSize ,  xStepSize ,  digit ) ;   
															
														 
														
													
														
															
																 
																 
																    counterG + + ;   
																 
																 
																    counterG + + ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -482,11 +488,13 @@ class Screen{  
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																*/  
																 
																 
																*/  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//The following method is used for assingning a value to a graph
  
															
														 
														
													
														
															
																 
																 
																  void  graphAssignValue ( int  graphIndex ,  double  value ) {   
																 
																 
																  void  graphAssignValue ( int  graphIndex ,  double  value ) {   
															
														 
														
													
														
															
																 
																 
																    this - > graph [ graphIndex ] . assignValue ( value ) ;   
																 
																 
																    this - > graph [ graphIndex ] . assignValue ( value ) ;   
															
														 
														
													
														
															
																 
																 
																    this - > redraw  =  true ;   
																 
																 
																    this - > redraw  =  true ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//This method controls the whole interface, it needs to be called within a loop
  
															
														 
														
													
														
															
																 
																 
																  void  control ( ) {   
																 
																 
																  void  control ( ) {   
															
														 
														
													
														
															
																 
																 
																    if  ( redraw ) {   
																 
																 
																    if  ( redraw ) {   
															
														 
														
													
														
															
																 
																 
																      if  ( contentType  = =  0 ) {   
																 
																 
																      if  ( contentType  = =  0 ) {   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -499,6 +507,7 @@ class Screen{  
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//The following two methods allow the change in position of the cursor
  
															
														 
														
													
														
															
																 
																 
																  void  increasePos ( ) {   
																 
																 
																  void  increasePos ( ) {   
															
														 
														
													
														
															
																 
																 
																    if ( this - > menu [ this - > currentScreen ] . extractPos ( )  <  this - > menu [ this - > currentScreen ] . extractOptNumber ( )  -  1 )   
																 
																 
																    if ( this - > menu [ this - > currentScreen ] . extractPos ( )  <  this - > menu [ this - > currentScreen ] . extractOptNumber ( )  -  1 )   
															
														 
														
													
														
															
																 
																 
																      this - > menu [ this - > currentScreen ] . increasePos ( ) ;   
																 
																 
																      this - > menu [ this - > currentScreen ] . increasePos ( ) ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -509,6 +518,7 @@ class Screen{  
															
														 
														
													
														
															
																 
																 
																      this - > menu [ this - > currentScreen ] . decreasePos ( ) ;   
																 
																 
																      this - > menu [ this - > currentScreen ] . decreasePos ( ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																    
																 
																 
																    
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//This method lets the user go into another screen by selecting an option
  
															
														 
														
													
														
															
																 
																 
																  void  goTo ( ) {   
																 
																 
																  void  goTo ( ) {   
															
														 
														
													
														
															
																 
																 
																    if ( this - > contentType  = =  0 ) {   
																 
																 
																    if ( this - > contentType  = =  0 ) {   
															
														 
														
													
														
															
																 
																 
																      int  newScreen  =  this - > menu [ this - > currentScreen ] . extractDestinationIndex ( ) ;   
																 
																 
																      int  newScreen  =  this - > menu [ this - > currentScreen ] . extractDestinationIndex ( ) ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -545,6 +555,7 @@ class Screen{  
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//These methods control the plus and minus button actions
  
															
														 
														
													
														
															
																 
																 
																  void  plusAction ( ) {   
																 
																 
																  void  plusAction ( ) {   
															
														 
														
													
														
															
																 
																 
																    if ( contentType  = =  0 ) {   
																 
																 
																    if ( contentType  = =  0 ) {   
															
														 
														
													
														
															
																 
																 
																      increasePos ( ) ;   
																 
																 
																      increasePos ( ) ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -572,6 +583,7 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  public :   
																 
																 
																  public :   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//Keyboard constructor
  
															
														 
														
													
														
															
																 
																 
																  Keyboard ( byte  goTo ,  byte  goBack ,  byte  plus ,  byte  minus ,  byte  debounceTime ,  Screen  *  screen ) {   
																 
																 
																  Keyboard ( byte  goTo ,  byte  goBack ,  byte  plus ,  byte  minus ,  byte  debounceTime ,  Screen  *  screen ) {   
															
														 
														
													
														
															
																 
																 
																    this - > goTo  =  goTo ;   
																 
																 
																    this - > goTo  =  goTo ;   
															
														 
														
													
														
															
																 
																 
																    this - > goBack  =  goBack ;   
																 
																 
																    this - > goBack  =  goBack ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -586,7 +598,7 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																    pinMode ( plus ,  INPUT_PULLUP ) ;   
																 
																 
																    pinMode ( plus ,  INPUT_PULLUP ) ;   
															
														 
														
													
														
															
																 
																 
																    pinMode ( minus ,  INPUT_PULLUP ) ;   
																 
																 
																    pinMode ( minus ,  INPUT_PULLUP ) ;   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																//Debouncing functions 
 
															
														 
														
													
														
															
																 
																 
																  void  checkGoTo ( ) {   
																 
																 
																  void  checkGoTo ( ) {   
															
														 
														
													
														
															
																 
																 
																    static  char  cont ;   
																 
																 
																    static  char  cont ;   
															
														 
														
													
														
															
																 
																 
																    if ( digitalRead ( this - > goTo )  = =  LOW )   
																 
																 
																    if ( digitalRead ( this - > goTo )  = =  LOW )   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -594,10 +606,7 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																    else   
																 
																 
																    else   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																      cont  =  0 ;   
															
														 
														
													
														
															
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      this - > screen - > goTo ( ) ;   
																 
																 
																      this - > screen - > goTo ( ) ;   
															
														 
														
													
														
															
																 
																 
																      while ( digitalRead ( this - > goTo )  = =  LOW ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      }   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																    
																 
																 
																    
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -609,10 +618,7 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																    else   
																 
																 
																    else   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																      cont  =  0 ;   
															
														 
														
													
														
															
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      this - > screen - > goBack ( ) ;   
																 
																 
																      this - > screen - > goBack ( ) ;   
															
														 
														
													
														
															
																 
																 
																      while ( digitalRead ( this - > goBack )  = =  LOW ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      }   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -623,10 +629,7 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																    else   
																 
																 
																    else   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																      cont  =  0 ;   
															
														 
														
													
														
															
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      this - > screen - > plusAction ( ) ;   
																 
																 
																      this - > screen - > plusAction ( ) ;   
															
														 
														
													
														
															
																 
																 
																      while ( digitalRead ( this - > plus )  = =  LOW ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      }   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -637,13 +640,11 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																    else   
																 
																 
																    else   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																      cont  =  0 ;   
															
														 
														
													
														
															
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
																 
																 
																    if ( cont  = =  debounceTime / REFRESH ) {   
															
														 
														
													
														
															
																 
																 
																      cont  =  0 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      this - > screen - > minusAction ( ) ;   
																 
																 
																      this - > screen - > minusAction ( ) ;   
															
														 
														
													
														
															
																 
																 
																      while ( digitalRead ( this - > minus )  = =  LOW ) {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																      }   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																    }   
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																// All buttons are checked with this method
  
															
														 
														
													
														
															
																 
																 
																  void  control ( ) {   
																 
																 
																  void  control ( ) {   
															
														 
														
													
														
															
																 
																 
																    this - > checkGoTo ( ) ;   
																 
																 
																    this - > checkGoTo ( ) ;   
															
														 
														
													
														
															
																 
																 
																    this - > checkGoBack ( ) ;   
																 
																 
																    this - > checkGoBack ( ) ;   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -652,6 +653,8 @@ class Keyboard{  
															
														 
														
													
														
															
																 
																 
																  }   
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																} ;  
																 
																 
																} ;  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																int  i  =  0 ;  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																Screen  screen ;  
																 
																 
																Screen  screen ;  
															
														 
														
													
														
															
																 
																 
																Keyboard  keyboard ( 13 ,  12 ,  14 ,  27 ,  30 ,  & screen ) ;  
																 
																 
																Keyboard  keyboard ( 13 ,  12 ,  14 ,  27 ,  30 ,  & screen ) ;