#include #include #include #define SCREEN_WIDTH 128 // Ancho de la pantalla OLED en píxeles #define SCREEN_HEIGHT 64 // Alto de la pantalla OLED en píxeles #define OLED_RESET -1 // No se usa el pin de reinicio del OLED Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define MESSAGE_SIZE 20 // Tamaño máximo del mensaje editable char line1[MESSAGE_SIZE + 1]; // Buffer para la primera línea del mensaje char line2[MESSAGE_SIZE + 1]; // Buffer para la segunda línea del mensaje void setup() { Serial.begin(9600); // Inicializar la comunicación I2C if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("No se pudo inicializar la pantalla OLED")); for(;;); } // Limpiar el buffer de la pantalla OLED display.clearDisplay(); display.display(); // Inicializar el mensaje predeterminado strcpy(line1, "We love chat gpt"); strcpy(line2, "F"); showMessage(); } void loop() { // Ejemplo: leer el mensaje desde el monitor serial y actualizar la pantalla if (Serial.available() > 0) { readMessageFromSerial(); showMessage(); } } void showMessage() { display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); // Posicionar en la primera línea display.cp437(true); display.println(line1); display.setCursor(0, 10); // Posicionar en la segunda línea display.println(line2); display.display(); } void readMessageFromSerial() { int index = 0; int line = 1; // Inicialmente, leer la primera línea while (Serial.available() > 0 && index < MESSAGE_SIZE) { char incomingChar = Serial.read(); if (incomingChar == '\n') { line = 2; // Cambiar a la segunda línea cuando se encuentre un salto de línea index = 0; // Reiniciar el índice para la segunda línea } else if (incomingChar == '\r') { // Ignorar el retorno de carro } else { if (line == 1) { line1[index++] = incomingChar; } else { line2[index++] = incomingChar; } } } if (line == 1) { line1[index] = '\0'; // Añadir el terminador de cadena a la primera línea } else { line2[index] = '\0'; // Añadir el terminador de cadena a la segunda línea } }