• 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ć
#1
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


Załączone pliki Miniatury
           
 
Odpowiedź
#2
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.
 
Odpowiedź
#3
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/librar...friend_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.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#4
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


Załączone pliki Miniatury
   
 
Odpowiedź
#5
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);
}
 
Odpowiedź
#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ź
  


Skocz do:


Przeglądający: 1 gości