#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <U8g2_for_Adafruit_GFX.h>
#//include "Climacons30pt7b.h"
#include "Climacons20pt7b.h"
// ===== piny =====
#define TFT_CS 15
#define TFT_DC 2
#define TFT_RST 4
// ===== obiekty =====
Adafruit_ILI9341 tft(TFT_CS, TFT_DC, TFT_RST);
U8G2_FOR_ADAFRUIT_GFX u8g2;
void setup() {
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_WHITE);
// start U8g2
u8g2.begin(tft);
}
int currentPage = 0;
const int iconsPerPage = 20; // Siatka 5x4
const char firstIcon = 33; // '!'
const char lastIcon = 106; // 'j'
void loop() {
tft.fillScreen(ILI9341_WHITE);
tft.setTextColor(ILI9341_BLACK);
// Skorygowane marginesy: yStart musi uwzględniać wysokość fontu (ok. 40-50px)
int xStart = 20;
int yStart = 45;
int spacingX = 60; // Odstęp w poziomie
int spacingY = 50; // Odstęp w pionie
int iconsPerRow = 5;
// Obliczamy zakres ikon dla bieżącej strony
int startAt = firstIcon + (currentPage * iconsPerPage);
for (int i = 0; i < iconsPerPage; i++) {
char c = startAt + i;
// Jeśli przekroczymy ostatnią ikonę 'j', przerywamy rysowanie
if (c > lastIcon) break;
int col = i % iconsPerRow;
int row = i / iconsPerRow;
int x = xStart + (col * spacingX);
int y = yStart + (row * spacingY);
// 1. Rysujemy ikonę pogodową
///tft.setFont(&Climacons30pt7b);
tft.setFont(&Climacons20pt7b);
tft.setCursor(x, y);
tft.write(c);
// 2. Rysujemy podpis (znak/kod) małym fontem
tft.setFont(); // Domyślny systemowy
tft.setCursor(x, y + 5); // Lekko pod ikoną
// Opcjonalnie kod liczbowy
tft.print(c);
tft.print(" (");\
tft.print((int)c);
tft.print(")");
}
// numer strony na dole
tft.setFont();
tft.setCursor(100, 230);
tft.print("Strona: ");
tft.print(currentPage + 1);
tft.print("/4");
// Logika zmiany stron
currentPage++;
if (currentPage >= 4) {
currentPage = 0; // Powrót do pierwszej strony
}
delay(5000); // Czekaj 5 sekund przed zmianą strony
}