Skocz do zawartości

Funkcja zmieniająca czcionkę, z biblioteki Adafruit GFX nie działa.


Pomocna odpowiedź

Witam!

Mam problem ze zmianą czcionki wyświetlanej na ekranie LCD. Używam ekranu Nokii 5110.

Podczas kompilacji pojawia się błąd:

no matching function for call to 'Adafruit_PCD8544::setFont(const uint8_t (*)[844])'

Mój kod wygląda tak:

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

#include <Fonts\FreeMono9pt7b.h>

Adafruit_PCD8544 display = Adafruit_PCD8544(8, 6, 5, 4, 3);

void setup() {
  pinMode(7, OUTPUT); // 7 is backlight pin
  digitalWrite(7, LOW);

  display.begin();
  display.setContrast(60);
  display.setFont(&FreeMono9pt7bBitmaps);
  display.setTextSize(1);
  display.clearDisplay();
  
  display.print("Hello, 123.4");
  display.display();
}

void loop() {}

Kiedy używam funkcji setFont bez argumentów, program działa.

Liczę na waszą pomoc.
Pozdrawiam

Link to post
Share on other sites
1 godzinę temu, Nocti napisał:

display.setFont(&FreeMono9pt7bBitmaps);

 

Argumentem nie ma być jakaś dość abstrakcyjna bitmapa, ale struktura opisująca czcionkę. W tym przypadku:

display.setFont(&FreeMono9pt7b);

Do poczytania: https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts

 

  • Lubię! 1
  • Pomogłeś! 1
Link to post
Share on other sites

@ethanak Dzięki, teraz już wszystko działa :D
Tylko mam jeszcze jedno pytanie. Czcionkę chciałem zmienić ponieważ liczyłem na to, że po jej zmianie, będą obsługiwane polskie znaki. Dlatego pobrałem czcionkę DroidSansMono która zawiera polskie znaki. Niestety nie działają one w programie.

Do konwertowania czcionki użyłem załączonego w bibliotece narzędzia fontconvert.

Co jeszcze trzeba zrobić aby polskie znaki były wyświetlane?

Link to post
Share on other sites
11 godzin temu, Nocti napisał:

czcionkę DroidSansMono która zawiera polskie znaki. Niestety nie działają one w programie.

Problem jest w tym, że ta czcionka operuje 16-bitowym Unikodem, czyli zawiera czcionki polskie, ruskie, greckie i masę innych. Niestety - biblioteki Adafruit przystosowane są do czcionek jednobajtowych, a polskie znaczki z wyjątkiem 'ó' mają kody powyżej 255.

Możesz skonwertować czcionkę unikodową na ISO-8859-2 i w programie posługiwać się tym zestawem znaków.

Możesz poszukać unikodowej bibiioteki (jest taka, zamiennik Adafruit GFX ale gdzieś zgubiłem link),

Możesz wepchać palce w bibliotekę Adafruit i podmienić plik glcdfont.c np. na ten z załącznika glcdfont.zip (zawiera polskie znaczki na pozycjach poniżej spacji i kończy się na 0x7F), i używać w programie wbudowanej czcionki 7x5.

Do wyboru.

 

  • Lubię! 1
  • Pomogłeś! 1
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.