TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - OMK - 15-02-2018
Mam taki wyświetlacz jak na zdjęciach i nie mogę go uruchomić. Setki postów i różne ustawienia i cały czas biały. Może już ktoś miał podobny i udało mu się dobrać ustawienia, aby go ożywić? Pomóżcie. Brak mi już pomysłów. Pozdrawiam
RE: TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - krn78 - 16-02-2018
Jeśli próbowałeś wielu rzeczy, może zerknij na jakość lutów. Może gdzieś któryś jest zimny. Możesz spróbować sprawdzić (omomierzem) przejścia z jednej strony płytki na drugą? Może się czepiam, ale kto wie.
RE: TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - kaczakat - 16-02-2018
Jest niby do UNO, więc radzę od tego zacząć. Piny w UNO i MEGA nie do końca się pokrywają (np. piny ISP a są wykorzystywane w bibliotekach). Miałem podobny z dotykiem od MCU Friend. Nawet kilka. Jedne działały od strzału, inne nie. Nawet tak samo wyglądające, od różnych Chińczyków miały inne numerki chipu sterującego i wymagały innych procedur/funkcji do inicjalizacji, sterowania wyświetlaczem - innych bibliotek. Najwięcej działa mi na bibliotekach kbv, https://www.arduinolibraries.info/libraries/mcufriend_kbv, czasami trzeba wymusić jakiś chip bo go nie ma w bibliotece, a działa tak samo jak taki, który już jest opracowany, czasami odwrócić kolory. Moje działają OK na UNO, na Mega wolniej, na DUE OK. Jeśli kupiony w Chinach (lub można znaleźć taki na Ali) to można poczytać komentarze, czasami ludzie się chwalą, że odpalili na takich a takich lib.
RE: TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - OMK - 20-02-2018
Dzięki !!!! Odpaliłem na MCUFRIEND_kbv ale trzeba było wybrać odpowiedni ( UTFTGLUE myGLCD(0x9488,A2,A1,A3,A4,A0); ).
Musiało być 9488. Pomożesz mi jak można zmieniać czcionki bo czy robię Small czy Big to po powiększeniu np. myGLCD.setTextSize(6); jest brzydka tzn. duże piksele. A może jest jakiś sposób podpiąć jakiś inny krój. Jestem za cienki aby to zrobić.
Pozdrawiam
RE: TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - OMK - 20-02-2018
Teraz mam coś takiego i czcionka beznadziejna.
Kod: #include <SimpleDHT.h>
#include <UTFTGLUE.h>
#include <RTClib.h>
RTC_DS3231 rtc;
UTFTGLUE myGLCD(0x9488,A2,A1,A3,A4,A0); // Wyświetlacz 320x480 i Mega 2560
int pinDHT22 = 53;
SimpleDHT22 dht22;
//char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// static const char *daysOfTheWeek[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
char daysOfTheWeek[7][14] = {" NIEDZIELA", "PONIEDZIALEK", " WTOREK", " SRODA", " CZWARTEK", " PIATEK", " SOBOTA"};
#if !defined(BigFont)
extern uint8_t BigFont[];
#endif
void setup()
{
rtc.begin();
randomSeed(analogRead(5));
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
myGLCD.InitLCD();
myGLCD.clrScr();
// ================= RAMKI ==========================
myGLCD.setColor(25, 25, 255);
myGLCD.drawLine(20, 45, 220, 45); myGLCD.drawLine(220, 45, 220, 170); myGLCD.drawLine(20, 170, 220, 170); myGLCD.drawLine(20, 170, 20, 45);
myGLCD.drawLine(240, 45, 460, 45); myGLCD.drawLine(240, 45, 240, 170); myGLCD.drawLine(460, 45, 460, 170); myGLCD.drawLine(460, 170, 240, 170);
myGLCD.drawLine(20, 200, 460, 200); myGLCD.drawLine(460, 200, 460, 300); myGLCD.drawLine(20, 300, 460, 300); myGLCD.drawLine(20, 200, 20, 300);
myGLCD.setColor(255, 255, 255);
myGLCD.setTextSize(0);
myGLCD.print("` `", 170, 184);
myGLCD.setTextSize(2);
// myGLCD.setFont(BigFont);
myGLCD.print(" WILGOTNOSC ", 60, 191);
myGLCD.print(" TEMPERATURA ", 275, 191);
myGLCD.print(" GODZINA ", 66, 37);
myGLCD.print(" DATA ", 310, 37);
myGLCD.setColor(25, 25, 255);
myGLCD.drawLine(20, 15, 460, 15);
myGLCD.setColor(255, 50, 75);
// myGLCD.setTextSize(0);
myGLCD.setFont(BigFont);
myGLCD.print(" KRZYSZTOF MADZIAR ", CENTER, 12);
//================= ZNAKI DATY CZASU ========================
myGLCD.setTextSize(2);
myGLCD.setColor(250, 0, 255);
myGLCD.print("o",385,235);
myGLCD.setTextSize(4);
myGLCD.print("C",402,240);
myGLCD.setTextSize(2);
myGLCD.setColor(0, 250, 255);
myGLCD.print("%",180,235);
myGLCD.print("RH",175,258);
myGLCD.setTextSize(5);
// myGLCD.setColor(25, 255, 0);
// myGLCD.print(":",103,76);
myGLCD.setColor(25, 255, 0);
myGLCD.print(("/"), 335, 80);
}
void loop()
{
DateTime now = rtc.now();
String nazwa;
float temperature = 0;
float humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht22.read2(pinDHT22, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
return;
}
myGLCD.setTextSize(5);
myGLCD.setColor(25, 255, 0);
myGLCD.print(":",105,80);
//================== Temperatura =========================
myGLCD.setColor(250, 0, 255);
myGLCD.setTextSize(4);
myGLCD.printNumF((temperature), 1, 280, 240);
//=================== Wilgotność ==========================
myGLCD.setColor(0, 250, 255);
myGLCD.setTextSize(4);
myGLCD.printNumF((humidity),1, 65, 240);
//==================== DATA ===========================
myGLCD.setColor(25, 255, 0);
myGLCD.setFont(BigFont);
myGLCD.setTextSize(6);
if ((now.month())<=9){
myGLCD.print("0", 370, 76);
myGLCD.printNumF((now.month()),0, 405, 76);
}else{
myGLCD.printNumF((now.month()),0, 365, 76);}
if ((now.day())<=9){
myGLCD.print("0",260,76);
myGLCD.printNumF((now.day()),0, 295, 76);
}else{
myGLCD.printNumF((now.day()),0, 260, 76);}
myGLCD.setTextSize(2);
myGLCD.setColor(250, 255, 0);
nazwa = (daysOfTheWeek[(now.dayOfTheWeek())]);
myGLCD.printNumF((now.year()),0, 322, 139);
myGLCD.print((nazwa), 50, 139);
//===================== CZAS ==========================
myGLCD.setTextSize(6);
myGLCD.setColor(25, 255, 0);
if ((now.hour())<=9){
myGLCD.print("0",38,76);
myGLCD.printNumF((now.hour()),0, 73, 76);
}else{
myGLCD.printNumF((now.hour()),0, 38, 76);}
if ((now.minute())<=9) {
myGLCD.print("0",135,76);
myGLCD.printNumF((now.minute()),0, 170, 76);
}else{
myGLCD.printNumF((now.minute()),0, 135, 76);}
/* myGLCD.setTextSize(3);
myGLCD.setColor(250, 255, 0);
if ((now.second())<=9) {
myGLCD.print("0",167,135);
myGLCD.printNumI((now.second()), 185, 135);
}else{
myGLCD.printNumI((now.second()), 167, 135);}
*/
delay(450);
myGLCD.setTextSize(5);
myGLCD.setColor(25, 255, 0);
myGLCD.print(" ",105,80);
delay(550);
}
RE: TFT 3.5 cala z Chin i Mega 2650 nie mogę uruchomić - kaczakat - 21-02-2018
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-graphics-library/using-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);
}
|