Arduino Polska Forum

Pełna wersja: Sygnał z zegara DS1302 na wyświetlacz LCD 128x64
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Mam wyświetlacz 128x64 mono obsługiwany biblioteką u8g2 i zegar DS1302 z biblioteką RtcDS1302

Zastosowałem przykład z biblioteki i zegar działa i wyświetla na monitorze portu poprawne wyniki.

Ale gdy chcę aby ten wynik pojawiał się na wyświetlaczu to pojawiają się krzaczki, tak jakby był problem z kodowaniem znaków. Jak to naprawić?? Jestem NOOB z C++

Kod do wyświetlania daty i czasu na porcie jest następujący:
Kod:
#define countof(a) (sizeof(a) / sizeof(a[0]))

void printDateTime(const RtcDateTime& dt)
{
    char datestring[20];

    snprintf_P(datestring,
            countof(datestring),
            PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
            dt.Month(),
            dt.Day(),
            dt.Year(),
            dt.Hour(),
            dt.Minute(),
            dt.Second() );
    Serial.print(datestring);
no więc wywołałem go tak:
Kod:
char datestring [20];  //to inna pętla
u8g2.drawStr(50,30,datestring);
no i w efekcie we wskazanym miejscu pojawiają się krzaczki
próbowałem wyświetlić poprzez u8g2.drawUTF8 albo u8g2.printf ale jest to samo.
Ale jak zrobiłeś kolejną linijkę "char datestring [20]; //to inna pętla" to jest to już inna tablica z innym zestawem znaków z losowego miejsca w pamięci uC, gdzie pewnie rosły sobie te krzaki wcześniej.
Możesz sobie zrobić globalną tablicę, na samym początku programu, wykasować w setup/loop/funkcjach ich tworzenie na nowo i wtedy każde użycie datestring będzie odwołaniem do tej globalnej, do niej będzie zapisywać i jej używać do wypisywania raz na ekran, a raz na serialport.