Patrick Boa noite
Rapaz eu não entendo muito de programação , mas estava desenvolvendo a mesma situação que voce , queria ter um menu que se altera-se ao precionar um micro-switch.
Vi que voce usou a mesma programação que eu, só que usando um sensor como micro-switch.
Não sei se vai te ajudar mas segue parte do codigo que vai realizar o que voce pede...
Abraços e boa sorte!
Parte nas declarações ( veja o que significa e tente alterar para o seu sensor)
// === Variaveis Tela ===
int WhichScreen =0; // Essa variável armazena o número da tela atual
// === Variaveis Botão e Debouce ===
boolean hasChanged = true;
const int buttonPin = 4; // Define o pino do Arduino que será o pino ligado ao botão micro-switch
int buttonState; // Lê a situação atual do pino de entrada do botão (buttonPin)
int lastButtonState = LOW; / Lê a ultima posição do pino de entrada do botão (buttonPin)
unsigned long lastDebounceTime = 0; // A ultima vez que o pino de saida foi alterado
unsigned long debounceDelay = 100; // TEmpo de debounce ; aumentar se a saida variar (piscar)
void setup()
{
pinMode(buttonPin,INPUT_PULLUP); // Declarando o pino do botão (microswitch) com resistor pullup interno
void loop()
{
// === Definições Menu e Telas ===
if (hasChanged == true) {
switch(WhichScreen) {
case 1:
{
Tela1();
}
break;
case 2:
{
Tela2();
}
break;
case 3:
{
Tela3();
}
break;
case 4:
{
Tela4();
}
break;
}
}
// === Inic do código de depuração do botão ===
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
// redefinir o cronometro de depuração
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// seja qual for a leitura, ela será a mais antiga
// que o delay do debounce, considere como o estado atual do botão
// se o estado do botão mudou
if (reading != buttonState) {
buttonState = reading;
// apenas alterar o display se o estado do botão for HIGH
if (buttonState == HIGH) {
hasChanged = true;
WhichScreen++;
}
} else {
hasChanged = false;
}
}
lastButtonState = reading; // === Final do código de depuração do botão ===
// === Comandos para contagem de Menus ===
if (WhichScreen > 4){
WhichScreen = 1;
}
} // todos estes codigos estão dentro do void loop
// Codigo para criação das telas estão fora do loop
// ===== Programação Telas dos Menus ============
void firstScreen() // === TELA 1 === FUEL LEVEL
{
display.clearDisplay(); // Limpa a tela
display.fillRect (0, 0, 127, 16, WHITE); // Cria Box para Tela Temperatura Motor
display.setTextSize(2); // Configura Tamanho Fonte
display.setTextColor(BLACK); // Configura Cor da Fonte
display.setCursor(4,1); // configura Posição no Display da Fonte
display.println("FUEL LEVEL"); // Texto a ser Escrito no Diasplay
display.setTextSize(1); // Configura Tamanho Fonte
display.setTextColor(WHITE); // Configura Cor da Fonte
display.setCursor(8,50); // configura Posição no Display da Fonte
display.println("E"); // Texto a ser Escrito no Diasplay
display.setCursor(110,50); // configura Posição no Display da Fonte
display.println("F"); // Texto a ser Escrito no Diasplay
display.display(); // Carrega Tela Display Buffer
}
Com este codigo voce pade criar quantos menus quiser e aciona-los pelo seu sensor.
Espero ter lhe ajudado.
Abraços