Skip to content

Instantly share code, notes, and snippets.

@macbedn
Last active January 25, 2026 19:08
Show Gist options
  • Select an option

  • Save macbedn/98a56d31d7e8ed64f4ed7fce8a33c11b to your computer and use it in GitHub Desktop.

Select an option

Save macbedn/98a56d31d7e8ed64f4ed7fce8a33c11b to your computer and use it in GitHub Desktop.
Własne bootlogo w yoRadio (ST7796 480x320)

Poradnik: Własne bootlogo w yoRadio (na przykładzie ST7796 480x320)

Wersja testowana: V-Tom 7.12 i 7.13 oraz niemodowana wersja 0.9.720 (github)

Poniższa instrukcja krok po kroku opisuje proces przygotowania i implementacji własnej grafiki startowej dla wyświetlaczy opartych o sterownik ST7796 (480x320).


Krok 1: Przygotowanie grafiki

  1. Przygotuj plik graficzny (np. .jpg, .png) o dowolnych wymiarach, ale nie większych niż rozdzielczość Twojego wyświetlacza.

    Przykład: moje logo dla ekranu 480x320 to plik o wymiarach 200x133 px.

Krok 2: Konwersja do formatu C (RGB565)

  1. Wejdź na stronę konwertera: MarlinFW Bitmap Converter.
  2. Wgraj swój plik graficzny.
  3. Po konwersji zwróć uwagę na dwie rzeczy w wygenerowanym kodzie:
    • wartość w nawiasie kwadratowym przy nazwie tablicy (rozmiar tablicy), np. [26600],
    • zawartość tablicy w nawiasach klamrowych {0x....}.

Krok 3: Utworzenie pliku nagłówkowego

Stwórz nowy plik o nazwie odpowiadającej wymiarom logo, np. bootlogo200x133.h. Wklej do niego poniższy szablon i uzupełnij danymi z konwertera:

#ifndef bootlogo_h
#define bootlogo_h
#include <stdint.h>

// 1. Ustaw wymiary swojego logo
#define LOGO_WIDTH    200 
#define LOGO_HEIGHT   133 

// 2. Wklej tutaj tablicę z konwertera. 
// UWAGA: Upewnij się, że liczba w [] zgadza się z tą wygenerowaną przez konwerter!
// W moim przypadku to 26600:
static const uint16_t logo[26600] PROGMEM = {
    // Tu wklej zawartość wygenerowaną przez stronę, zaczynającą się od 0x....
    0x0000, 0xFFFF, 0x0000, 
    // ... (reszta danych)
};

#endif

Krok 4: Podmiana pliku w projekcie

  1. Umieść utworzony plik bootlogo200x133.h w katalogu fonts/ (tam są już inne podobne pliki).
  2. Otwórz plik displayST7796.h.
  3. Znajdź linię importującą stare logo i podmień ją na nową:
// displayST7796.h

// #include "fonts/bootlogo.h"  <-- stara linia
#include "fonts/bootlogo200x133.h" // <-- nowa linia

Krok 5: Pozycjonowanie (centrowanie)

Aby logo wyświetlało się poprawnie (np. na środku w pionie), edytuj plik displayST7796conf:

  1. Znajdź definicję #define bootLogoTop.
  2. Dostosuj wartość wg wzoru: (WysokośćEkranu - WysokośćLogo) / 2.

    Przykład: Dla logo o wysokości 133px wartość 90 była optymalna.

// displayST7796conf
#define bootLogoTop 90

Krok 6: Wydłużenie czasu wyświetlania (opcjonalne)

Jeśli chcesz, aby logo było widoczne dłużej przy starcie (np. 3 sekundy), oraz aby móc wyłączać to opóźnienie w prosty sposób, wykonaj dwie zmiany:

A. W pliku myoptions.h dodaj:

#define BOOTLOGO_DELAY

B. W pliku commongfx.h dodaj obsługę opóźnienia: Znajdź sekcję odpowiedzialną za rysowanie logo i dodaj:

    #ifndef DSP_LCD
    inline void loop(bool force=false){}
    inline void drawLogo(uint16_t top){ drawRGBBitmap((width() - LOGO_WIDTH) / 2, top, logo, LOGO_WIDTH, LOGO_HEIGHT); 
      #ifdef BOOTLOGO_DELAY   // 3 sekundy na obejrzenie logo
      delay(3000);            // 3 sekundy na obejrzenie logo
      #endif                  // 3 sekundy na obejrzenie logo
      }
    #endif

*Uwaga: dla innych ekranów postępuje się analogicznie - zmiany do wprowadzenia w odpowiednich dla nich plikach displayXXXXXX.h oraz displayXXXXXXconf.h *

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment