#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Szerokość wyświetlacza OLED
#define SCREEN_HEIGHT 64 // Wysokość wyświetlacza OLED
#define OLED_RESET -1 // Reset OLED nie jest używany
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("Nie mozna zainicjowac OLED");
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
randomSeed(analogRead(0)); // Inicjalizacja generatora liczb losowych
}
void drawSunIcon(int x, int y) {
display.drawCircle(x, y, 8, WHITE); // Słońce
// Promienie słoneczne
for(int i = 0; i < 360; i+=30) {
float rad = i * DEG_TO_RAD;
display.drawLine(x, y, x + cos(rad) * 12, y + sin(rad) * 12, WHITE);
}
}
void drawSnowflakeIcon(int x, int y) {
display.drawCircle(x, y, 3, WHITE); // Centralna część płatka śniegu
// Ramiona płatka śniegu
for(int i = 0; i < 360; i += 60) {
float rad = i * DEG_TO_RAD;
int endX = x + cos(rad) * 8;
int endY = y + sin(rad) * 8;
display.drawLine(x, y, endX, endY, WHITE);
// Dodatkowe ozdoby na ramionach
display.drawLine(endX, endY, endX - 2, endY - 2, WHITE);
display.drawLine(endX, endY, endX + 2, endY + 2, WHITE);
}
}
void loop() {
float h = random(20, 80); // Losowa wilgotność między 20% a 80%
float t = random(10, 30); // Losowa temperatura między 10 a 30 stopni C
display.clearDisplay();
display.setCursor(40,0);
display.print("Temp: ");
display.print(t);
display.print(" C");
display.setCursor(40, 16);
display.print("Wilg: ");
display.print(h);
display.print(" %");
if (t >= 20) {
drawSunIcon(10, 10); // Rysowanie słońca
} else {
drawSnowflakeIcon(10, 10); // Rysowanie płatka śniegu
}
display.display();
delay(3000); // Aktualizacja co 3 sekundy
}