• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sygnał z zegara DS1302 na wyświetlacz LCD 128x64
#1
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.
 
Odpowiedź
#2
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.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości