| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -104,9 +104,9 @@ class Menu{    //ContentType (0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  //The following method is used to created an option for the menu
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void createOption(String content, bool destinationTypeMenu, int destinationIndex){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void createOption(String content, int destinationType, int destinationIndex){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    //The option takes the place in the array defined by the options number variable (options), which is later increased.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->opt[this->options].configure(content, this->sizex, this->sizey, this->options++, destinationTypeMenu, destinationIndex); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->opt[this->options].configure(content, this->sizex, this->sizey, this->options++, destinationType, destinationIndex); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  int extractDestinationType(){ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -426,7 +426,8 @@ class Modifier{       //ContentType (2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void configure(String title, int *value, int max, int min, int interval){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void configure(String title, int *value, int max, int min, int step){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->title = title; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->value = value; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->max = max; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->min = min; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -436,26 +437,30 @@ class Modifier{       //ContentType (2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void drawModifier(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.clearDisplay(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.fillRect(0, 0,  127 , 16, SSD1306_WHITE); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setTextColor(SSD1306_BLACK); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setTextSize(1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setCursor(2, 4); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.println(this->title); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setTextColor(SSD1306_WHITE); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setTextSize(3); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setCursor(2, ((DISP_HEIGHT - 16 - 20)/2) + 20); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setCursor(2, ((DISP_HEIGHT - 16 - 15)/2) + 16); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.println(*this->value); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.display(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    display.setTextSize(1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void increaseValue(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if((*this->value + step) <= this->max){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      *this->value += step; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if((*this->value + this->step) <= this->max){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      *this->value += this->step; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void decreaseValue(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if((*this->value - step) >= this->min){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      *this->value -= step; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if((*this->value - this->step) >= this->min){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      *this->value -= this->step; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -529,8 +534,8 @@ class Screen{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->counterM++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  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); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void createOption(int menuIndex, String content, int destinationType, int destinationIndex){  //this method should be used for creating an option in a menu
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->menu[menuIndex].createOption(content, destinationType, destinationIndex); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void createVGraph(String title, double xpos, double ypos, double width, double height, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -551,8 +556,8 @@ class Screen{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    counterG++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void createModifier(String title, int *value, int max, int min, int interval){   //This method is used for the creation of a menu
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->modifier[counterMod].configure(title, value, max, min, interval); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void createModifier(String title, int *value, int max, int min, int step){   //This method is used for the creation of a menu
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->modifier[counterMod].configure(title, value, max, min, step); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this->counterMod++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -578,6 +583,9 @@ class Screen{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      else if (contentType == 1){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        graph[currentScreen].drawGraph(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      else if (contentType == 2){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        modifier[currentScreen].drawModifier(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->redraw = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -609,7 +617,8 @@ class Screen{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this->graph[newScreen].redrawFlag(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      else if(newContentType == 2){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this->modifier[newScreen].setPreviousScreen(this->currentScreen); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        this->modifier[newScreen].setPreviousContentType(this->contentType); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->contentType = newContentType; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->currentScreen = newScreen; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -628,6 +637,10 @@ class Screen{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->currentScreen = this->graph[this->currentScreen].getPreviousScreen(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->contentType = this->graph[this->currentScreen].getPreviousContentType(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    else if(contentType == 2){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->currentScreen = this->modifier[this->currentScreen].getPreviousScreen(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->contentType = this->modifier[this->currentScreen].getPreviousContentType(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//These methods control the plus and minus button actions
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -635,12 +648,18 @@ class Screen{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if(contentType == 0){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      increasePos(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    else if(contentType == 2){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->modifier[currentScreen].increaseValue(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  void minusAction(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if(contentType == 0){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      decreasePos(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    else if(contentType == 2){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this->modifier[currentScreen].decreaseValue(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					}; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -729,6 +748,7 @@ class Keyboard{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					}; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					int i = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					int multiplier = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					Screen screen; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					Keyboard keyboard(13, 12, 14, 27, 30, &screen); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -745,6 +765,8 @@ void setup(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createVGraph("Grafica 1", 25, 60, 40, 40, 0, 100, 10, 0);               //Graph 0
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createHGraph("Grafica 2", 10, 40, 100, 20, 0, 100, 10, 0);              //Graph 1
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createCGraph("Grafica 3", 30, 50, 75, 30, 0, 100, 0, 1000, 25, 250, 0);   //Graph 2
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createModifier("Modify variable", &multiplier, 5, 1, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					   | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createOption(0, "Vertical graph", 1, 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  //Creates the first option in Menu 0, directing to a graph (contentType = 1 (Graph)), 0 (Graph 0)
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -753,7 +775,8 @@ void setup(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createOption(0, "Extra option", 0, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createOption(1, "Test", 1, 3); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createOption(1, "Working?", 1, 4); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createOption(1, "Working?", 2, 2); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  screen.createOption(1, "Modify variable", 2, 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//  screen.increasePos();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//  screen.increasePos();
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -773,7 +796,7 @@ void loop(){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  if(i <= 100){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    screen.graphAssignValue(1, i);    //Assigning a demo value to Graph 1
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    screen.graphAssignValue(2, i);    //Assigning a demo value to Graph 2
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    i++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    i += multiplier; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    i = 0; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |