#include <Wire.h>
#include <Adafruit_GFX.h> //OLED
#include <Adafruit_SSD1306.h> //OLED
#include <LiquidCrystal_I2C.h> // LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); //LCD
// Configurações do OLED
#define LARGURA_TELA 128
#define ALTURA_TELA 64
#define OLED_RESET -1 // Reset compartilhado com o Arduino/ESP
Adafruit_SSD1306 display(128, 64, &Wire, -1);
//display(LARGURA_TELA, ALTURA_TELA, &Wire, OLED_RESET);
//
const int botaoAmarelo = 35;
const int ledAmarelo = 12;
const int botaoAzul = 27;
const int ledAzul = 13;
void setup() {
pinMode(botaoAmarelo, INPUT);
pinMode(botaoAzul, INPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledAzul, OUTPUT);
// Inicializa o OLED no endereço 0x3C (comum para SSD1306)
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
for(;;); // Trava se o display não for encontrado
}
display.clearDisplay();
display.setTextSize(1); // Fonte padrão
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Sistema Ta On!");
display.display(); // Envia para a tela
delay(1000);
// Configuração do LCD
// Inicializa o display LCD
lcd.init();
lcd.backlight();
lcd.print("Sistema Ta On!");
lcd.clear();
}
void loop() {
// Limpamos apenas a área de mensagens para evitar flicker (opcional, mas profissional)
// Ou limpamos a tela toda para simplificar:
display.clearDisplay();
display.setCursor(0, 0);
display.println("Sistema Ta On!");
if (digitalRead(botaoAmarelo) == HIGH) {
digitalWrite(ledAmarelo, HIGH);
display.setCursor(0, 20);
display.print("Botao AMARELO!");
// LCD
lcd.setCursor(0, 0);
lcd.clear();
lcd.print("Botao AZUL!");
delay(100);
} else {
digitalWrite(ledAmarelo, LOW);
}
if (digitalRead(botaoAzul) == HIGH) {
digitalWrite(ledAzul, HIGH);
display.setCursor(0, 40);
display.print("Botao AZUL!");
// LCD
lcd.setCursor(0, 0);
lcd.clear();
lcd.print("Botao AZUL!");
delay(100);
} else {
digitalWrite(ledAzul, LOW);
}
display.display(); // Atualiza o hardware com as mudanças acima
delay(50);
}