Browse Source

Documentation expanded

master
parent
commit
a94bf33ee6
1 changed files with 26 additions and 14 deletions
  1. +26
    -14
      DisplayESP32.ino

+ 26
- 14
DisplayESP32.ino View File

@ -4,6 +4,13 @@
#include <Adafruit_SSD1306.h> #include <Adafruit_SSD1306.h>
#define __DEBUG__ #define __DEBUG__
//The following constants are used to configure the behaviour of the interface
// MAX_OPTIONS defines the maximum number of options a menu can hold
// MAX_MENUS declares the maximum number of menu screens in the interface
// MAX_GRAPHS is the maximum number of graphs to create
// DISP_WIDTH and DISP_HEIGHT are hardware specific (SSD1306)
// REFRESH: is the time in miliseconds the interface will take in refreshing (this time affects the loop, keep that in mind)
#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_GRAPH 3
@ -17,20 +24,21 @@ int i = 0;
class Option{ class Option{
private: private:
int sizex;
int sizey;
String content;
int pos;
int textSpacing;
bool fill = false;
bool disp = false;
int destinationType;
int destinationIndex;
int sizex; //Defines the size it will occupy in the x axis (width), this value is gotten from the menu
int sizey; //Defines the height of the option (this value is gotten from the menu it belongs to)
String content; //Text of the option
int pos; //Defines the position it has in the menu
int textSpacing; //According to the height, defines the space for the text, so that it's vertically centered
bool fill = false; //In case an option is not selected this should be false
bool disp = false; //In case an option is not configured, it should be false and, thus hidden
int destinationType; //Defines what the option leads to (another menu, graph, something else)
int destinationIndex; //Defines where the option leads to (index of the destination)
public: public:
//Option(){} //Option(){}
//Method to configure an option, all attributes are assigned, and disp is true, so the option can be displayed
void configure(String content, int sizex, int sizey, int pos, int destinationType, int destinationIndex){ void configure(String content, int sizex, int sizey, int pos, int destinationType, int destinationIndex){
this->sizex = sizex; this->sizex = sizex;
this->sizey = sizey; this->sizey = sizey;
@ -52,16 +60,18 @@ class Option{
return destinationIndex; return destinationIndex;
} }
//This method draws each option
void drawopt(int page, int pos, int optPPage){ void drawopt(int page, int pos, int optPPage){
if(this->disp){
if(this->pos == pos){
if(this->disp){ //Checks if the option was configured and, as a result, is displayable
if(this->pos == pos){ //If the position of the option corresponds to the position passed to the function, then it should be selected
display.fillRect(0, (this->sizey)*(this->pos) + 1 - (page*optPPage*this->sizey), this->sizex, this->sizey, WHITE); display.fillRect(0, (this->sizey)*(this->pos) + 1 - (page*optPPage*this->sizey), this->sizex, this->sizey, WHITE);
display.setTextColor(SSD1306_BLACK); display.setTextColor(SSD1306_BLACK);
display.setCursor(5, (this->sizey)*(this->pos + 1) - (page*optPPage*this->sizey) - this->textSpacing); display.setCursor(5, (this->sizey)*(this->pos + 1) - (page*optPPage*this->sizey) - this->textSpacing);
display.print(this->content); display.print(this->content);
display.setTextColor(SSD1306_WHITE); display.setTextColor(SSD1306_WHITE);
} }
else{
else{ //If the option is not selected, the rectangle containing it shouldn't be filled
display.drawRect(0, (this->sizey)*(this->pos) + 1 - (page*optPPage*this->sizey), this->sizex, this->sizey, WHITE); display.drawRect(0, (this->sizey)*(this->pos) + 1 - (page*optPPage*this->sizey), this->sizex, this->sizey, WHITE);
display.setCursor(5, (this->sizey)*(this->pos + 1) - (page*optPPage*this->sizey) - this->textSpacing); display.setCursor(5, (this->sizey)*(this->pos + 1) - (page*optPPage*this->sizey) - this->textSpacing);
display.print(this->content); display.print(this->content);
@ -73,7 +83,7 @@ class Option{
class Menu{ //ContentTypeMenu true, it is a menu class Menu{ //ContentTypeMenu true, it is a menu
private: private:
int sizex;
int sizex; //X size for each option in the menu
int sizey; //Y size of each option in the menu int sizey; //Y size of each option in the menu
int options = 0; //This indicates the number of options created int options = 0; //This indicates the number of options created
int pos = 0; //This indicates the position of the cursor int pos = 0; //This indicates the position of the cursor
@ -86,13 +96,15 @@ class Menu{ //ContentTypeMenu true, it is a menu
public: public:
void configure(int sizex, int sizey){
void configure(int sizex, int sizey){ //This method configures the menu created from Screen
this->sizex = sizex; this->sizex = sizex;
this->sizey = sizey; this->sizey = sizey;
this->optPPage = DISP_HEIGHT / this->sizey; this->optPPage = DISP_HEIGHT / this->sizey;
} }
//The following method is used to created an option for the menu
void createOption(String content, bool destinationTypeMenu, int destinationIndex){ void createOption(String content, bool destinationTypeMenu, 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++, destinationTypeMenu, destinationIndex);
} }


Loading…
Cancel
Save