#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_I2C_ADDR 0x3c // or 0x3C
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RST_PIN -1 // Reset pin (-1 if not available)
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST_PIN);
// OLED Animation: gear
// Code auto-generated by https://wokwi.com/animator, graphics by icons8.com
//==============================================================================
#define FRAME_DELAY (42)
#define FRAME_WIDTH (32)
#define FRAME_HEIGHT (32)
#define FRAME_COUNT (sizeof(frames) / sizeof(frames[0]))
const byte PROGMEM frames[][128] = {
{0, 0, 0, 0, 0, 3, 192, 0, 0, 2, 64, 0, 0, 6, 96, 0, 1, 4, 32, 128, 3, 132, 33, 192, 4, 124, 62, 32, 12, 32, 12, 48, 4, 0, 0, 32, 2, 0, 0, 64, 3, 0, 0, 192, 3, 3, 192, 192, 2, 12, 48, 64, 30, 8, 16, 124, 96, 16, 8, 14, 64, 16, 8, 6, 64, 16, 8, 6, 112, 16, 8, 14, 30, 8, 16, 120, 2, 4, 48, 64, 3, 3, 192, 192, 3, 0, 0, 192, 2, 0, 0, 64, 4, 0, 0, 32, 12, 48, 4, 48, 4, 124, 62, 32, 3, 132, 33, 192, 1, 4, 32, 128, 0, 6, 96, 0, 0, 2, 64, 0, 0, 3, 192, 0, 0, 0, 0, 0},
};
//==============================================================================
void displayStartScreen()
{
display.clearDisplay();
display.drawBitmap(40, 16, frames[0], FRAME_WIDTH, FRAME_HEIGHT, 1);
display.display();
delay(FRAME_DELAY);
}
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_I2C_ADDR);
displayStartScreen();
display.display();
delay(1000);
}
// update data on oled display
void updateDataOnDisplay(int piece)
{
display.setTextColor(SSD1306_WHITE);
if (piece == 1)
{
display.clearDisplay();
display.setCursor(0, 0);
display.print("Temp: ");
display.println(random(0, 100));
display.drawFastHLine(0, 8, display.width(), SSD1306_WHITE);
display.setCursor(0, 10);
display.print("Humi: ");
display.print(random(0, 100));
display.drawFastHLine(0, 18, display.width(), SSD1306_WHITE);
display.setCursor(0, 20);
display.print("ph: ");
display.print(random(0, 100));
display.drawFastHLine(0, 28, display.width(), SSD1306_WHITE);
display.setCursor(0, 30);
display.print("sHum: ");
display.print(random(0, 100));
display.drawFastHLine(0, 38, display.width(), SSD1306_WHITE);
display.setCursor(0, 40);
display.print("sTemp: ");
display.print(random(0, 100));
display.drawFastHLine(0, 48, display.width(), SSD1306_WHITE);
display.setCursor(0, 50);
}
else if (piece == 2)
{
display.drawFastVLine(display.width() / 2, 0, 48, SSD1306_WHITE);
display.setCursor(70, 0);
display.print("n: ");
display.print(random(0, 100));
display.setCursor(70, 10);
display.print("p: ");
display.print(random(0, 100));
display.setCursor(70, 20);
display.print("k: ");
display.print(random(0, 100));
display.setCursor(70, 30);
display.print("EC: ");
display.print(random(0, 100));
display.setCursor(70, 40);
}
}
int frame = 0;
void loop() {
// display.clearDisplay();
// display.drawBitmap(40, 8, frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
// frame = (frame + 1) % FRAME_COUNT;
// delay(FRAME_DELAY);
updateDataOnDisplay(1);
updateDataOnDisplay(2);
display.display();
delay(100);
}