#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
boolean backlight = true;
int contrast=50;
// item do menu, començando pelo primeiro da tela atual
int menuitem = 1;
// tela atual
int page = 1;
volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;
// Estado do botão para descer
int downButtonState = 0;
// Estado do botão para subir
int upButtonState = 0;
// Estado do botão para selecionar
int selectButtonState = 0;
// Último estado do botão para descer
int lastDownButtonState = 0;
// Último estado do botão para subir
int lastSelectButtonState = 0;
// Último estado do botão para selecionar
int lastUpButtonState = 0;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(0, INPUT_PULLUP);
pinMode(7,OUTPUT);
digitalWrite(7,LOW); //Turn Backlight ON
// Inicializando o display
Serial.begin(9600);
display.begin();
display.setContrast(contrast); //Set contrast to 50
display.clearDisplay();
display.display();
}
void loop() {
// Atualizando o menu / Desenhando o menu
drawMenu();
// Verificando cada botão para saber se ele pressionado
downButtonState = digitalRead(2);
selectButtonState = digitalRead(1);
upButtonState = digitalRead(0);
checkIfDownButtonIsPressed();
checkIfUpButtonIsPressed();
checkIfSelectButtonIsPressed();
// Se
if (up && page == 1 )
{
up = false;
menuitem--;
if (menuitem==0) {
menuitem=3;
}
}
else if (up && page == 2 )
{
up = false;
contrast--;
setContrast();
}
// Se estiver na página inicial
// e o primeiro item do menu estiver selecionado
if (down && page == 1)
{
down = false;
menuitem++;
if (menuitem==4) {
menuitem=1;
}
}
else if (down && page == 2 )
{
down = false;
contrast++;
setContrast();
}
if (middle)
{
middle = false;
if (page == 1 && menuitem==2)
{
if (backlight) {
backlight = false;
turnBacklightOff();
} else {
backlight = true;
turnBacklightOn();
}
}
if(page == 1 && menuitem ==3)
{
resetDefaults();
} else if (page == 1 && menuitem==1) {
page=2;
} else if (page == 2) {
page=1;
}
}
}