#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
int tempActual = 40;
int arriba = 31;
int abajo = 35;
int set = 33;
int p; //contador de pagina
int p1; //contador pagina1
int p2; //contador pagina2
int p3; //contador pagina3
int p4; //contador pagina4
int p6;
void menuIni(); //pagina1
void menuTemp(); //pagina2
void menuDes(); //pagina3
void menuAjustes(); //pagina4
void temp(); //pagina5
void des(); //pagina6
//void ajustes(); //pagina7
void (*pages[])() = { menuIni, menuTemp, menuDes, menuAjustes, temp, des } ; //, ajustes
void setup() {
u8g.setFont(u8g_font_unifont);
u8g.setColorIndex(1);
p = 0;
p1 = 0;
p2 = 0;
p3 = 0;
p4 = 0;
p6 = 0;
Serial.begin(9600);
}
void loop() {
u8g.firstPage();
do {
(*pages[p])();
} while( u8g.nextPage());
Serial.println(p);
}
void moverseMenu(int &cont, int cant){
if(digitalRead(arriba)==HIGH){
if(cont>0){
cont = cont - 1;
delay(300);
}
}else if(digitalRead(abajo)==HIGH){
if(cont<cant){
cont = cont + 1;
delay(300);
}
}
return cont;
}
void temp(){
int textWidth1 = u8g.getStrWidth("Temperatura"); // Obtener la longitud del texto
int textWidth2 = u8g.getStrWidth(String(tempActual).c_str()); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 30, "Temperatura"); // Imprimir el texto centrado
u8g.drawStr(xPos, 55, String(tempActual).c_str()); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 1;
delay(200);
}
if(digitalRead(arriba)==HIGH){
tempActual = tempActual + 1;
delay(200);
}else if(digitalRead(abajo)==HIGH){
tempActual = tempActual - 1;
delay(200);
}
return 0;
}
void des(){
moverseMenu(p6, 1);
int textWidth1 = u8g.getStrWidth("Activar?"); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 30, "Activar?"); // Imprimir el texto centrado
if(p6==0){
int textWidth = u8g.getStrWidth("No"); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 55, " ");
u8g.drawStr(xPos, 55, "No"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 2;
delay(200);
}
}else if(p6==1){
int textWidth1 = u8g.getStrWidth("Si"); // Obtener la longitud del texto
int xPos1 = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos1, 55, " ");
u8g.drawStr(xPos1, 55, "Si"); // Imprimir el texto centrado
}
return 0;
}
void menuAjustes(){
moverseMenu(p4, 3);
if(p4==0){
int textWidth = u8g.getStrWidth("Config. Term."); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 50, "Config. Term."); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 1;
delay(200);
}
}else if(p4==1){
int textWidth1 = u8g.getStrWidth("Fecha y Hora"); // Obtener la longitud del texto
int xPos1 = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos1, 50, "Fecha y Hora"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 2;
delay(200);
}
}else if(p4==2){
int textWidth2 = u8g.getStrWidth("Config. Wi-Fi"); // Obtener la longitud del texto
int xPos2 = (u8g.getWidth() - textWidth2) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos2, 50, "Config. Wi-Fi"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 3;
delay(200);
}
}else if(p4==3){
int textWidth1 = u8g.getStrWidth("Volver"); // Obtener la longitud del texto
int xPos1 = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos1, 50, "Volver"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 0;
delay(200);
}
}
return 0;
}
void menuDes(){
moverseMenu(p3, 1);
if(p3==0){
int textWidth = u8g.getStrWidth("Activar?"); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 50, "Activar?"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 5;
delay(200);
}
}else if(p3==1){
int textWidth1 = u8g.getStrWidth("Volver"); // Obtener la longitud del texto
int xPos1 = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos1, 50, "Volver"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 0;
delay(200);
}
}
return 0;
}
void menuTemp(){
moverseMenu(p2, 1);
if(p2==0){
String txtTemp = "T. Actual: ";
txtTemp.concat(tempActual);
int textWidth = u8g.getStrWidth(String(txtTemp).c_str()); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 50, String(txtTemp).c_str()); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 4;
delay(200);
}
}else if(p2==1){
int textWidth1 = u8g.getStrWidth("Volver"); // Obtener la longitud del texto
int xPos1 = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos1, 50, "Volver"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 0;
delay(200);
}
}
return 0;
}
void menuIni(){
moverseMenu(p1, 2);
if(p1==0){
int textWidth = u8g.getStrWidth("MENU1"); // Obtener la longitud del texto
int xPos = (u8g.getWidth() - textWidth) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos, 50, "MENU1"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 1;
delay(200);
}
}else if(p1==1){
int textWidth1 = u8g.getStrWidth("MENU2"); // Obtener la longitud del texto
int xPos1 = (u8g.getWidth() - textWidth1) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos1, 50, "MENU2"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 2;
delay(200);
}
}else if(p1==2){
int textWidth2 = u8g.getStrWidth("MENU3"); // Obtener la longitud del texto
int xPos2 = (u8g.getWidth() - textWidth2) / 2; // Calcular la posición horizontal centrada
u8g.drawStr(xPos2, 50, "MENU3"); // Imprimir el texto centrado
if(digitalRead(set)==HIGH){
p = 3;
delay(200);
}
}
return 0;
}
//https://github.com/olikraus/u8glib/wiki/userreference#begin