/* https://github.com/ThingPulse/esp8266-oled-ssd1306 */
#include <SPI.h>
#include <Wire.h>
#include <SSD1306Wire.h>
#include "images.h"
#define SCREEN_ADDRESS 0x3C
#define OLED_SDA_PIN 4
#define OLED_SCL_PIN 15
#define OLED_RST 16
#define INTERDELAY 2000
SSD1306Wire display(SCREEN_ADDRESS, OLED_SDA_PIN, OLED_SCL_PIN);
void setup() {
Serial.begin(115200);
delay(100);
Serial.println("Iniciando pantalla OLED");
Serial.println(display.getStringWidth("¡¡¡FELIZ CUMPLE!!!"));
// reset OLED (para placa Heltec)
pinMode(OLED_RST, OUTPUT);
digitalWrite(OLED_RST, LOW);
delay(50);
digitalWrite(OLED_RST, HIGH);
display.init();
//display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
display.flipScreenVertically();
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setColor(WHITE);
display.drawString(64, 18, "Cargando...");
for (int i = 0; i < 101; i++) {
display.drawProgressBar(10, 40, 108, 10, i);
display.display();
delay(50);
}
display.clear();
display.drawString(64, 20, "Porque eres la mejor");
display.drawString(64, 32, "y cumples...");
display.display();
delay(INTERDELAY);
display.clear();
display.drawXbm(0, 0, 128, 64, bitmap_tarta_50);
display.display();
delay(INTERDELAY);
display.clear();
display.drawString(64, 28, "Te mereces un...");
display.display();
delay(INTERDELAY);
display.clear();
display.drawXbm(32, 0, 64, 64, bitmap_beso);
display.display();
delay(INTERDELAY);
display.clear();
display.drawString(64, 28, "Y muchos...");
display.display();
delay(INTERDELAY);
display.clear();
display.drawXbm(32, 0, 64, 64, bitmap_regalo);
display.display();
delay(INTERDELAY);
display.clear();
display.drawStringMaxWidth(64, 5, 120, friki);
display.display();
delay(INTERDELAY * 3);
}
#define XMIN 56
#define XMAX 75
#define YMIN 0
#define YMAX 54
void loop() {
// texto en scroll diagonal
static int16_t x = 64, y = 32, x_dir = 1, y_dir = 1, inc = 1;
display.clear();
display.drawString(x, y, "¡¡¡FELIZ CUMPLE!!!");
display.display();
x = x + x_dir * inc;
if (x >= XMAX) {
x = XMAX;
x_dir = -1;
} else if (x <= XMIN) {
x = XMIN;
x_dir = 1;
}
y = y + y_dir * inc;
if (y >= YMAX) {
y = YMAX;
y_dir = -1;
} else if (y <= YMIN) {
y = YMIN;
y_dir = 1;
}
delay(50);
}