|
@ -14,6 +14,7 @@ |
|
|
#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_GRAPHS 3
|
|
|
#define MAX_GRAPHS 3
|
|
|
|
|
|
#define MAX_MODIFIERS 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
|
|
@ -80,7 +81,7 @@ class Option{ |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
class Menu{ //ContentType (1)
|
|
|
|
|
|
|
|
|
class Menu{ //ContentType (0)
|
|
|
private: |
|
|
private: |
|
|
|
|
|
|
|
|
int sizex; //X size for each option in the menu
|
|
|
int sizex; //X size for each option in the menu
|
|
@ -166,7 +167,7 @@ class Menu{ //ContentType (1) |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
class Graph{ |
|
|
|
|
|
|
|
|
class Graph{ //ContentType (1)
|
|
|
private: |
|
|
private: |
|
|
|
|
|
|
|
|
String title; |
|
|
String title; |
|
@ -411,14 +412,82 @@ class Graph{ |
|
|
|
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class Modifier{ //ContentType (2)
|
|
|
|
|
|
private: |
|
|
|
|
|
|
|
|
|
|
|
String title; |
|
|
|
|
|
int *value; |
|
|
|
|
|
int max; |
|
|
|
|
|
int min; |
|
|
|
|
|
int interval; |
|
|
|
|
|
|
|
|
|
|
|
int previousScreen = 0; |
|
|
|
|
|
int previousContentType = 0; |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
|
|
|
|
|
|
|
void configure(String title, int *value, int max, int min, int interval){ |
|
|
|
|
|
this->value = value; |
|
|
|
|
|
this->max = max; |
|
|
|
|
|
this->min = min; |
|
|
|
|
|
this->interval = interval; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void drawModifier(){ |
|
|
|
|
|
display.clearDisplay(); |
|
|
|
|
|
display.fillRect(0, 0, 127 , 16, SSD1306_WHITE); |
|
|
|
|
|
display.setTextColor(SSD1306_BLACK); |
|
|
|
|
|
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.println(*this->value); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void increaseValue(){ |
|
|
|
|
|
if((*this->value + interval) <= this->max){ |
|
|
|
|
|
*this->value += interval; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void decreaseValue(){ |
|
|
|
|
|
if((*this->value - interval) >= this->min){ |
|
|
|
|
|
*this->value -= interval; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void setPreviousScreen(int prev){ |
|
|
|
|
|
this->previousScreen = prev; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void setPreviousContentType(int prev){ |
|
|
|
|
|
this->previousContentType = prev; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int getPreviousScreen(){ |
|
|
|
|
|
int prev = this->previousScreen; |
|
|
|
|
|
return prev; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int getPreviousContentType(){ |
|
|
|
|
|
int prev = this->previousContentType; |
|
|
|
|
|
return prev; |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
class Screen{ |
|
|
class Screen{ |
|
|
private: |
|
|
private: |
|
|
|
|
|
|
|
|
Menu menu[MAX_MENUS]; //Array of menus to use
|
|
|
Menu menu[MAX_MENUS]; //Array of menus to use
|
|
|
Graph graph[MAX_GRAPHS]; //Array of graphs to use
|
|
|
Graph graph[MAX_GRAPHS]; //Array of graphs to use
|
|
|
|
|
|
Modifier modifier[MAX_MODIFIERS]; //Array of modifiers to use
|
|
|
|
|
|
|
|
|
int counterM = 0; //Number of menus created
|
|
|
int counterM = 0; //Number of menus created
|
|
|
int counterG = 0; //Number of graphs created
|
|
|
int counterG = 0; //Number of graphs created
|
|
|
|
|
|
int counterMod = 0; |
|
|
bool redraw = true; //Redraw interface for when there is a change of screen
|
|
|
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; |
|
@ -482,6 +551,11 @@ class Screen{ |
|
|
counterG++; |
|
|
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); |
|
|
|
|
|
this->counterMod++; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/*
|
|
|
/*
|
|
|
void redrawFlag(){ |
|
|
void redrawFlag(){ |
|
|
this->redraw = true; |
|
|
this->redraw = true; |
|
@ -489,6 +563,7 @@ class Screen{ |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
//The following method is used for assingning a value to a graph
|
|
|
//The following method is used for assingning a value to a graph
|
|
|
|
|
|
//This can be avoided using pointers to the variable to plot in the 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; |
|
|