• 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
TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić
#6
Zainstaluj sobie pakiet adafruit - biblioteki do jakiegoś ekranu + Adafruit_GFX_Library gdzie jest mnóstwo czcionek. Te tutaj to po prostu powiększone i pogrubione najmniejsze fonty, tak po prostu mają wyglądać, za to mniej pamięci zabierają. Tu jest tutorial: https://learn.adafruit.com/adafruit-gfx-...sing-fonts
Ja teraz nie sprawdzę, sam nie zmieniałem. Nie wiem czy to będzie działać z bibliotekami kbv (kojarzę, że jest to wymóg biblioteki kbv, by był gfx, także pewnie działa), miałem ekran działający na bibliotekach adafruit i tam to działa jak w tutorialu - includujesz, ustawiasz, używasz, resetujesz do podstawowego.
EDIT:
Autor KBV dał taki przykład ze przewijaniem tekstu i użyciem fontów TTF. Generalnie zauważyłem, że ładne czcionki TTF rozwalają wizualnie ekran, ciężko nad nimi zapanować. Bawiłem się przykładem ze skrolowaniem pionowym i robi sieczkę na TTF - inaczej się je rysuje, mają różne szerokości, itp. A te duże zjadają kilkadziesiąt kb flash - tylko jak się bawisz MEGA czy DUE. Statyczny napis wygląda oczywiście super na FreeSans18pt7b.
Kod:
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;

#include <fonts/FreeSans9pt7b.h>
#include <fonts/FreeSans12pt7b.h>
#include <fonts/FreeSans18pt7b.h>
#include <fonts/FreeSans24pt7b.h>

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

void setup()
{
   uint16_t ID = tft.readID();
   tft.begin(ID);
   tft.setRotation(1);
}

void scrolltext(int x, int y, const char *s, uint8_t dw = 1, const GFXfont *f = NULL, int sz = 1)
{
   int16_t x1, y1, wid = tft.width(), inview = 1;
   uint16_t w, h;
   tft.setFont(f);
   tft.setTextColor(YELLOW, BLACK);
   tft.setTextSize(sz);
   tft.setTextWrap(false);
   tft.getTextBounds((char*)s, x, y, &x1, &y1, &w, &h);
   //    w = strlen(s) * 6 * sz;

   for (int steps = wid + w; steps >= 0; steps -= dw) {
       x = steps - w;
       if (f != NULL) {
           inview = wid - x;
           if (inview > wid) inview = wid;
           if (inview > w) inview = w;
           tft.fillRect(x > 0 ? x : 0, y1, inview + dw, h, BLACK);
       }
       x -= dw;
       tft.setCursor(x, y);
       tft.print(s);
       if (f == NULL) tft.print("  "); //rubout trailing chars
       delay(5);
   }
}


void loop()
{
   tft.fillScreen(BLACK);
   tft.setTextColor(WHITE);
   tft.setFont(NULL);   //System Font
   tft.setTextSize(1);
   tft.setCursor(0, 0);
   tft.println("Here are some scrolling examples");
   tft.println("System Font can be drawn in rubout mode");
   scrolltext(0, 30, "Default 100 pixels/s.  System Font.  sz = 1", 1, NULL, 1);
   scrolltext(0, 30, "David Prentice is a jolly good chap.  1000 pixels/s.  System Font",
              10, NULL, 1);
   scrolltext(0, 30, "200 pixels/s. System. sz=2", 2, NULL, 2);
   scrolltext(0, 30, "200 pixels/s. System. sz=3", 2, NULL, 3);
   scrolltext(0, 30, "500 pixels/s. System. sz=4", 5, NULL, 4);
   scrolltext(0, 30, "Saturday 30 September 2017", 2, NULL, 3);
   scrolltext(0, 60, "Saturday 30 September 2017", 10, NULL, 3);
   tft.setTextColor(WHITE);
   tft.setFont(&FreeSans9pt7b);   //Free Font
   tft.setTextSize(1);
   tft.setCursor(0, 40);
   tft.println("Free Fonts look nicer, only transparent");
   tft.println("re-painting background for rubout is nasty");

   scrolltext(0, 100, "200 pixels/s. FreeSans9pt7b. sz=1", 2, &FreeSans9pt7b, 1);
   scrolltext(0, 100, "Saturday 30 September 2017", 5, &FreeSans12pt7b);
   scrolltext(0, 200, "David", 10, &FreeSans18pt7b);
   delay(2000);
}
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - przez kaczakat - 21-02-2018, 01:55

Skocz do:


Przeglądający: 1 gości