// Librererías
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
// Instancias
Adafruit_SSD1306 OLED(128,64,&Wire,-1);
tm reloj;
// Variables
int i = 0;
// Configuraciones
void setup() {
// Configuración serial
Serial.begin(115200);
// Configuración pantalla OLED
if(!OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C)) Serial.println("SSD1306 asignación fallida");
OLED.clearDisplay();
OLED.setTextSize(1);
OLED.setTextColor(SSD1306_WHITE); // Draw 'inverse' text
OLED.cp437(true);
escribir("Hola, Profe", 28, 0);
// Configuración de Wi-Fi
i = 1;
escribir("Conectando Wifi",19,9);
WiFi.begin("Wokwi-GUEST", "", 6);
while(WiFi.status() != WL_CONNECTED and i < 128){
OLED.drawLine(0, 18, i, 18, SSD1306_WHITE);
OLED.display();
i++;
delay(500);
}
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());
if(i < 128) escribir("Conectado a Wi-Fi",0,20);
else escribir("Wifi no conectado",13,20);
// Configuración RTC
escribir("Configurando Reloj",10, 29);
configTime(-21600, 0, "pool.ntp.org");
}
// Bucle principal
void loop() {
OLED.clearDisplay();
OLED.setTextSize(1);
OLED.setCursor(0,0);
if (getLocalTime(&reloj)) {
OLED.setCursor(24,15);
OLED.println(&reloj, "%A");
OLED.setCursor(39,41);
OLED.println(&reloj, "%d/%m/%y");
OLED.setCursor(84,24);
OLED.println(&reloj, "%p");
OLED.setCursor(84,32);
OLED.println(&reloj, "%S");
OLED.setTextSize(2);
OLED.setCursor(24,24);
OLED.println(&reloj, "%I:%M");
}
else OLED.println("Error en Reloj");
OLED.display();
delay(500);
}
void escribir(String mensaje, int x, int y){
OLED.setCursor(x,y);
OLED.println(mensaje);
OLED.display();
delay(10);
}