#include <Arduino.h>
#include <Adafruit_SSD1306.h>
#define botonArriba 16
#define botonAbajo 23
#define botonEntrar 4
#define botonSalir 13
Adafruit_SSD1306 pantalla(128,64,&Wire,-1);
bool estadoBotonArriba = false;
bool estadoBotonAbajo = false;
bool estadoBotonEntrar = false;
bool estadoBotonSalir = false;
int seleccion = 0;
int menuAMostrar=0;
int menuAnterior=0;
//!Variable AC
int temperatura = 25;
bool ACEncendido = false;
//* Prototipos de funciones
void menu(void);
void leerBotones(void);
void dibujarSeleccion(void);
void menuAC(void);
void leerBotonesAC(void);
void menuProyector(void);
void leerBotonesProyector(void);
void menuLuces(void);
void leerBotonesLuces(void);
void setup()
{
Serial.begin(115200);
if(!pantalla.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println("Pantalla no encontrada");
}else
{
Serial.println("Pantalla iniciada exitosamente");
}
pantalla.clearDisplay();
pantalla.cp437(true);
pantalla.display();
pinMode(botonArriba, INPUT_PULLUP);
pinMode(botonAbajo, INPUT_PULLUP);
pinMode(botonEntrar, INPUT_PULLUP);
pinMode(botonSalir, INPUT_PULLUP);
pantalla.setTextColor(SSD1306_WHITE);
menu();
}
void loop()
{
if (menuAMostrar == 0)
{
menu();
leerBotones();
}
if (menuAMostrar == 1)
{
menuAC();
leerBotonesAC();
}
if (menuAMostrar == 2)
{
menuProyector();
leerBotonesProyector();
}
if (menuAMostrar == 3)
{
menuLuces();
leerBotonesLuces();
}
}
void menu()
{
pantalla.clearDisplay();
pantalla.setTextColor(SSD1306_WHITE);
pantalla.setTextSize(2);
pantalla.setCursor(15,2);
pantalla.print("A/C");
pantalla.setCursor(15,24);
pantalla.println("Proyector");
pantalla.setCursor(15,46);
pantalla.println("Luces");
pantalla.drawRoundRect(0, 0, 128, 20, 5, SSD1306_BLACK);
pantalla.drawRoundRect(0, 22, 128, 20, 5, SSD1306_BLACK);
pantalla.drawRoundRect(0, 44, 128, 20, 5, SSD1306_BLACK);
pantalla.drawRoundRect(0, seleccion*22, 128, 20, 5, SSD1306_WHITE);
pantalla.display();
}
void leerBotones()
{
if(!digitalRead(botonArriba))
{
estadoBotonArriba = true;
}
if(!digitalRead(botonAbajo))
{
estadoBotonAbajo = true;
}
if(!digitalRead(botonEntrar))
{
estadoBotonEntrar = true;
}
if (digitalRead(botonArriba) && estadoBotonArriba)
{
estadoBotonArriba = false;
seleccion--;
if(seleccion < 0)
{
seleccion = 2;
}
Serial.println(seleccion);
}
if (digitalRead(botonAbajo) && estadoBotonAbajo)
{
estadoBotonAbajo = false;
seleccion++;
if(seleccion > 2)
{
seleccion = 0;
}
Serial.println(seleccion);
}
if (digitalRead(botonEntrar) && estadoBotonEntrar)
{
estadoBotonEntrar = false;
switch(seleccion)
{
case 0:
Serial.println("A/C");
menuAMostrar = 1;
break;
case 1:
Serial.println("Proyector");
menuAMostrar = 2;
break;
case 2:
Serial.println("Luces");
menuAMostrar = 3;
break;
}
}
}
void dibujarSeleccion()
{
pantalla.drawRoundRect(0, 0, 128, 20, 5, SSD1306_BLACK);
pantalla.drawRoundRect(0, 22, 128, 20, 5, SSD1306_BLACK);
pantalla.drawRoundRect(0, 44, 128, 20, 5, SSD1306_BLACK);
pantalla.drawRoundRect(0, seleccion*22, 128, 20, 5, SSD1306_WHITE);
pantalla.display();
}
void menuAC()
{
pantalla.clearDisplay();
pantalla.setTextColor(SSD1306_WHITE);
pantalla.setTextSize(2);
pantalla.setCursor(15,2);
if (ACEncendido)
pantalla.print("Encendido");
else
pantalla.print("Apagado");
pantalla.setCursor(25,24);
pantalla.print(temperatura);
pantalla.println(" C");
pantalla.display();
}
void leerBotonesAC()
{
if(!digitalRead(botonArriba))
{
estadoBotonArriba = true;
}
if(!digitalRead(botonAbajo))
{
estadoBotonAbajo = true;
}
if(!digitalRead(botonEntrar))
{
estadoBotonEntrar = true;
}
if (!digitalRead(botonSalir))
{
estadoBotonSalir = true;
}
if (digitalRead(botonArriba) && estadoBotonArriba)
{
estadoBotonArriba = false;
temperatura++;
if (temperatura > 30)
{
temperatura = 30;
}
Serial.println(temperatura);
}
if (digitalRead(botonAbajo) && estadoBotonAbajo)
{
estadoBotonAbajo = false;
temperatura--;
if (temperatura < 16)
{
temperatura = 16;
}
Serial.println(temperatura);
}
if (digitalRead(botonEntrar) && estadoBotonEntrar)
{
estadoBotonEntrar = false;
ACEncendido = !ACEncendido;
Serial.println(ACEncendido);
}
if (digitalRead(botonSalir) && estadoBotonSalir)
{
estadoBotonSalir = false;
menuAMostrar = 0;
seleccion = 0;
Serial.println("Regresando al menu principal");
}
}
void menuProyector()
{
pantalla.clearDisplay();
pantalla.setTextColor(SSD1306_WHITE);
pantalla.setTextSize(2);
pantalla.setCursor(15,2);
pantalla.println("Proyector");
pantalla.setTextSize(1);
pantalla.setCursor(0,54);
pantalla.println("Aspecto|ON/OFF|Fuente");
pantalla.display();
}
void leerBotonesProyector()
{
if(!digitalRead(botonArriba))
{
estadoBotonArriba = true;
}
if(!digitalRead(botonAbajo))
{
estadoBotonAbajo = true;
}
if(!digitalRead(botonEntrar))
{
estadoBotonEntrar = true;
}
if (!digitalRead(botonSalir))
{
estadoBotonSalir = true;
}
if (digitalRead(botonArriba) && estadoBotonArriba)
{
estadoBotonArriba = false;
Serial.println("Aspecto");
}
if (digitalRead(botonAbajo) && estadoBotonAbajo)
{
estadoBotonAbajo = false;
Serial.println("Fuente");
}
if (digitalRead(botonEntrar) && estadoBotonEntrar)
{
estadoBotonEntrar = false;
Serial.println("ON/OFF");
}
if (digitalRead(botonSalir) && estadoBotonSalir)
{
estadoBotonSalir = false;
menuAMostrar = 0;
seleccion = 0;
Serial.println("Regresando al menu principal");
}
}
void menuLuces()
{
pantalla.clearDisplay();
pantalla.setTextColor(SSD1306_WHITE);
pantalla.setTextSize(2);
pantalla.setCursor(15,2);
pantalla.println("Luces");
pantalla.setTextSize(1);
pantalla.setCursor(0,54);
pantalla.println("Luz 1 Luz 2");
pantalla.display();
}
void leerBotonesLuces()
{
if(!digitalRead(botonArriba))
{
estadoBotonArriba = true;
}
if(!digitalRead(botonAbajo))
{
estadoBotonAbajo = true;
}
if(!digitalRead(botonEntrar))
{
estadoBotonEntrar = true;
}
if (!digitalRead(botonSalir))
{
estadoBotonSalir = true;
}
if (digitalRead(botonArriba) && estadoBotonArriba)
{
estadoBotonArriba = false;
Serial.println("Encender");
}
if (digitalRead(botonAbajo) && estadoBotonAbajo)
{
estadoBotonAbajo = false;
Serial.println("Apagar");
}
if (digitalRead(botonEntrar) && estadoBotonEntrar)
{
estadoBotonEntrar = false;
Serial.println("Brillo");
}
if (digitalRead(botonSalir) && estadoBotonSalir)
{
estadoBotonSalir = false;
menuAMostrar = 0;
seleccion = 0;
Serial.println("Regresando al menu principal");
}
}