Browse Source

First keyboard implementation added, tests pending. Still needs variable adjustment screen.

master
parent
commit
29bb87a2c1
1 changed files with 126 additions and 14 deletions
  1. +126
    -14
      DisplayESP32.ino

+ 126
- 14
DisplayESP32.ino View File

@ -1,16 +1,15 @@
#define MAX_OPTIONS 10 //Maximum number of options for each menu
#define MAX_MENUS 3
#define MAX_GRAPH 3
#define __DEBUG__
#include <Arduino.h>
#include <SPI.h> #include <SPI.h>
#include <Wire.h> #include <Wire.h>
#include <Adafruit_GFX.h> #include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h> #include <Adafruit_SSD1306.h>
#define __DEBUG__
#define DISP_WIDTH 128 // OLED display width
#define DISP_HEIGHT 64 // OLED display height
#define MAX_OPTIONS 10 //Maximum number of options for each menu
#define MAX_MENUS 3
#define MAX_GRAPH 3
#define DISP_WIDTH 128 // OLED display width
#define DISP_HEIGHT 64 // OLED display height
#define REFRESH 10 //Refresh time in ms
Adafruit_SSD1306 display(DISP_WIDTH, DISP_HEIGHT, &Wire, -1); Adafruit_SSD1306 display(DISP_WIDTH, DISP_HEIGHT, &Wire, -1);
int i = 0; int i = 0;
@ -83,7 +82,7 @@ class Menu{ //ContentTypeMenu true, it is a menu
int optPPage; int optPPage;
int previousScreen = 0; int previousScreen = 0;
int previousContentType = true;
int previousContentType = 0;
public: public:
@ -116,6 +115,14 @@ class Menu{ //ContentTypeMenu true, it is a menu
display.display(); display.display();
} }
int extractPos(){
return(this->pos);
}
int extractOptNumber(){
return(this->options);
}
void increasePos(){ void increasePos(){
this->pos++; this->pos++;
} }
@ -481,11 +488,13 @@ class Screen{
} }
void increasePos(){ void increasePos(){
this->menu[this->currentScreen].increasePos();
if(this->menu[this->currentScreen].extractPos() < this->menu[this->currentScreen].extractOptNumber() - 1)
this->menu[this->currentScreen].increasePos();
} }
void decreasePos(){ void decreasePos(){
this->menu[this->currentScreen].decreasePos();
if(this->menu[this->currentScreen].extractPos() > 0)
this->menu[this->currentScreen].decreasePos();
} }
void goTo(){ void goTo(){
@ -525,19 +534,120 @@ class Screen{
} }
void plusAction(){ void plusAction(){
if(contentType == 0){
increasePos();
}
} }
void minusAction(){ void minusAction(){
if(contentType == 0){
decreasePos();
}
}
};
class Keyboard{
private:
byte goTo;
byte goBack;
byte plus;
byte minus;
byte debounceTime;
Screen * screen;
public:
Keyboard(byte goTo, byte goBack, byte plus, byte minus, byte debounceTime, Screen * screen){
this->goTo = goTo;
this->goBack = goBack;
this->plus = plus;
this->minus = minus;
this->debounceTime = debounceTime;
this->screen = screen;
pinMode(goTo, INPUT_PULLUP);
pinMode(goBack, INPUT_PULLUP);
pinMode(plus, INPUT_PULLUP);
pinMode(minus, INPUT_PULLUP);
}
void checkGoTo(){
static char cont;
if(digitalRead(this->goTo) == LOW)
cont++;
else
cont = 0;
if(cont == debounceTime/REFRESH){
cont = 0;
this->screen->goTo();
while(digitalRead(this->goTo) == LOW){
}
}
} }
void checkGoBack(){
static char cont;
if(digitalRead(this->goBack) == LOW){
cont++;
Serial.println("Ayudaaaaa");
}
else
cont = 0;
if(cont == debounceTime/REFRESH){
cont = 0;
this->screen->goBack();
Serial.println("Ayudaaaaant");
while(digitalRead(this->goBack) == LOW){
}
}
}
void checkPlus(){
static char cont;
if(digitalRead(this->plus) == LOW)
cont++;
else
cont = 0;
if(cont == debounceTime/REFRESH){
cont = 0;
this->screen->plusAction();
while(digitalRead(this->plus) == LOW){
}
}
}
void checkMinus(){
static char cont;
if(digitalRead(this->minus) == LOW)
cont++;
else
cont = 0;
if(cont == debounceTime/REFRESH){
cont = 0;
this->screen->minusAction();
while(digitalRead(this->minus) == LOW){
}
}
}
void control(){
this->checkGoTo();
this->checkGoBack();
this->checkPlus();
this->checkMinus();
}
}; };
Screen screen;
Screen screen, * disp = &screen;
Keyboard keyboard(14, 4, 12, 13, 40, disp);
void setup(){ void setup(){
screen.configure(true); screen.configure(true);
Serial.println("Screen created");
screen.createMenu(128, 13); //Menu 0 screen.createMenu(128, 13); //Menu 0
screen.createMenu(128, 13); //Menu 1 screen.createMenu(128, 13); //Menu 1
@ -571,7 +681,7 @@ void setup(){
void loop(){ void loop(){
screen.control(); //Controls the screen and redraws if needed screen.control(); //Controls the screen and redraws if needed
delay(10);
keyboard.control();
if(i <= 100){ if(i <= 100){
screen.graphAssignValue(1, i); //Assigning a demo value to Graph 1 screen.graphAssignValue(1, i); //Assigning a demo value to Graph 1
@ -580,4 +690,6 @@ void loop(){
} }
else else
i = 0; i = 0;
delay(REFRESH); //Refresh time (approx)
} }

Loading…
Cancel
Save