#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Largura do display OLED, em pixels
#define SCREEN_HEIGHT 64 // Altura do display OLED, em pixels
// Declaração para o display I2C
#define OLED_RESET -1 // Pino de reset (não usado na maioria dos módulos I2C)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(115200);
// Inicializa o display com o endereço I2C correto (0x3C ou 0x3D)
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Tente 0x3C primeiro
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Loop infinito se a inicialização falhar
}
// Se o 0x3C falhar, tente 0x3D
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) {
Serial.println(F("SSD1306 allocation failed on 0x3C, trying 0x3D"));
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) {
Serial.println(F("SSD1306 allocation failed on 0x3D too!"));
for(;;);
}
}
display.clearDisplay(); // Limpa o display
display.setTextSize(1); // Define o tamanho do texto
display.setTextColor(WHITE); // Define a cor do texto
}
void loop() {
display.clearDisplay();
display.setCursor(0,0);
display.println("Ola do Pico W!");
display.setCursor(0,10);
display.println("Display OLED");
display.setCursor(0,20);
display.println("Arduino IDE");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0,0);
display.println("Contagem:");
for (int i = 0; i < 10; i++) {
display.fillRect(0, 10, 128, 10, BLACK); // Limpa a linha da contagem
display.setCursor(0,10);
display.println(i);
display.display();
delay(1000);
}
}