// nic moc
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// #include <Adafruit_SH1106.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4
//Adafruit_SH1106 display(OLED_RESET);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int num_stars = 20; // počet hvězd
int stars_x[20]; // pole pro uchování polohy hvězd na ose x
int stars_y[20]; // pole pro uchování polohy hvězd na ose y
int speed = 2; // rychlost pohybu hvězd
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x64)
display.clearDisplay(); // vymazání displeje
display.setTextSize(1);
display.setTextColor(WHITE);
display.display(); // aktualizace displeje
}
void loop() {
// vymazání předchozího obsahu displeje
display.clearDisplay();
// pohyb hvězd na displeji
for (int i = 0; i < num_stars; i++) {
// změna polohy hvězdy
if (stars_x[i] < SCREEN_WIDTH / 2) {
stars_x[i] -= speed;
} else {
stars_x[i] += speed;
}
if (stars_y[i] < SCREEN_HEIGHT / 2) {
stars_y[i] -= speed;
} else {
stars_y[i] += speed;
}
// kontrola, zda se hvězda nenachází mimo hranice displeje
if (stars_x[i] < 0 || stars_x[i] >= SCREEN_WIDTH || stars_y[i] < 0 || stars_y[i] >= SCREEN_HEIGHT) {
stars_x[i] = random(SCREEN_WIDTH);
stars_y[i] = random(SCREEN_HEIGHT);
}
// vykreslení hvězdy na displej
display.drawPixel(stars_x[i], stars_y[i], WHITE);
}
// aktualizace displeje
display.display();
delay(10);
}