#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset pin (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void open_eyes(void) {
for (int a = 21, b = 31, c = 21; a >= 2 && b <= 51 && c >= 2; b += 1, a -= 1, c -= 1)
{
display.clearDisplay();
display.fillRect(71, 8, 33, 42, 0xFFFF);
display.fillRect(23, 8, 33, 42, 0xFFFF);
display.fillRect(23, b, 33, a, 0x0);
display.fillRect(23, 8, 33, c, 0x0);
display.fillRect(71, b, 33, a, 0x0);
display.fillRect(71, 8, 33, c, 0x0);
delay(2);
display.display();
}
}
void close_eyes(void) {
for (int a = 2, b = 51, c = 2; a <= 21 && b >= 31 && c <= 21; b -= 1, a += 1, c += 1)
{
display.clearDisplay();
display.fillRect(71, 8, 33, 42, 0xFFFF);
display.fillRect(23, 8, 33, 42, 0xFFFF);
display.fillRect(23, b, 33, a, 0x0);
display.fillRect(23, 8, 33, c, 0x0);
display.fillRect(71, b, 33, a, 0x0);
display.fillRect(71, 8, 33, c, 0x0);
delay(2);
display.display();
}
}
void intro(void) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(32, 18);
display.print("Temperature");
display.setCursor(37, 33);
display.print("Indicator");
delay(2000);
display.display();
}
void setup() {
// Initialize the display
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.clearDisplay();
}
void loop() {
intro();
delay(1000);
open_eyes();
delay(5);
close_eyes();
delay(5);
}