#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Bounce2.h>
// Definições do display OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Definições dos pinos dos botões
#define BUTTON_UP_PIN 2
#define BUTTON_DOWN_PIN 3
// Criação das instâncias da biblioteca Bounce2
Bounce buttonUp = Bounce();
Bounce buttonDown = Bounce();
// Variável para armazenar o banco atual
int currentBank = 1;
const int maxBank = 5;
void setup() {
// Inicializa o display
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Falha ao inicializar o display OLED"));
for(;;);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
// Configura os pinos dos botões como entrada
pinMode(BUTTON_UP_PIN, INPUT_PULLUP);
pinMode(BUTTON_DOWN_PIN, INPUT_PULLUP);
// Associa os botões às suas respectivas instâncias Bounce2
buttonUp.attach(BUTTON_UP_PIN);
buttonUp.interval(25); // debounce interval
buttonDown.attach(BUTTON_DOWN_PIN);
buttonDown.interval(25); // debounce interval
// Exibe o banco inicial
displayBank();
}
void loop() {
// Atualiza o estado dos botões
buttonUp.update();
buttonDown.update();
// Verifica se o botão de aumento foi pressionado
if (buttonUp.fell()) {
if (currentBank < maxBank) {
currentBank++;
displayBank();
}
}
// Verifica se o botão de diminuição foi pressionado
if (buttonDown.fell()) {
if (currentBank > 1) {
currentBank--;
displayBank();
}
}
}
void displayBank() {
display.clearDisplay();
display.setCursor(0,0);
display.print("Banco: ");
display.print(currentBank);
display.display();
}