MCUFRIEND_kbv и TFT LCD

Rankle
Offline
Зарегистрирован: 31.10.2020

Добрый день. Приобрел себе вот такую "головную боль" 

Перепробовал много библиотек и только одна начала с этим дисплеем работать: MCUFRIEND_kbv. Скачал последнюю версию 2.9.9.

Загрузил пример скетча GLUE DEMO 480 320. Выбросил рисование всех линий, прямоугольников. Оставил пока только текст, с которым и возникают уже вопросы. 

Запускал разные "читалки". Выдает чип ИД - 0хС0С4. Хотя работает и если поставить 0х9341, и 0х9388.

#include <Adafruit_GFX.h>
#include <UTFTGLUE.h>
UTFTGLUE myGLCD(0xC0C4,A2,A1,A3,A4,A0);

void setup()
{
  pinMode(A0, OUTPUT);       
  digitalWrite(A0, HIGH);
  
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);

  myGLCD.print("Hello, world!",CENTER,0);
    myGLCD.setFont(BigFont);
  myGLCD.print("Hello, world!",CENTER,100);
    myGLCD.setFont(SevenSegNumFont);
  myGLCD.print("Hello, world!",CENTER,200);
}

void loop()
{
 
}

Какой бы я не ставил шрифт, получаю одно и то же

Кстати сказать, запускал скетч Utouch_Calibr_kbv. Тоже работает.

Открыл файл самой библиотеки. Там написано:

 3. remove smallFont, BigFont, SeveSegNumFont declarations
 4. UTFTGLUE uses FreeFonts or NULL (System 5x7)
 5. knows FreeSmallFont, FreeBigFont and FreeSevenSegNumFont
Я так понимаю, что она должна работать с FreeSmallFont, FreeBigFont and FreeSevenSegNumFont.
 
Но ни с FreeSmallFont, FreeBigFont and FreeSevenSegNumFont ни с smallFont, BigFont, SeveSegNumFont не работает. Что их все в отдельный файл "выносить" (как там написано: any other Fonts just need to #include "FreeOtherXXX.h")?
 
Может кто ещё сталкивался с подобными проблемами? Что ещё вырезано из данной библиотеки? Или может есть какая-то другая библиотека которая работает с этой "сладкой парочкой" (Мега и LCD) и у которой не урезаны функции?
 

 

 

b707
Offline
Зарегистрирован: 26.05.2017

Фонты  не надо самому никуда выносить, они там уже есть, их надо только включить в скетч.

смотрите пример FontsSimple.ino

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Rankle пишет:

Добрый день. Приобрел себе вот такую "головную боль" 

 

Перепробовал много библиотек и только одна начала с этим дисплеем работать: MCUFRIEND_kbv. Скачал последнюю версию 2.9.9.

Насчет библиотек - если правильно описать марку дисплея, то все будет работать. Автоматически не определяется, надо ручками.

Rankle
Offline
Зарегистрирован: 31.10.2020

b707 вы уже не первый раз помогаете и даете полезные советы, я, вроде бы, понял где искать но видимо что то не доделываю или не так делаю. Объясните чуть подробнее:

Я нашел что  в файле "UTFTGLUE.h" который есть в архиве есть некоторые комментированные строки:

// void drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int deg, int rox, int roy);
// void lcdOff();
// void lcdOn();
// void setContrast(char c);
// void LCD_Write_DATA(char VH,char VL);
// void dispBitmap(File inFile);
 
А в файле "MCUFRIEND_kbv.h" есть следующее
//MCUFRIEND_kbv(int CS=A3, int RS=A2, int WR=A1, int RD=A0, int RST=A4); //shield wiring
 
Открыл файл Font_simple.ino
Мне не понятно следующее:
#include <MCUFRIEND_kbv.h>   // Hardware-specific library
MCUFRIEND_kbv tft;
Так не работает, а работает:
#include <UTFTGLUE.h>
UTFTGLUE tft(0xC0C4,A2,A1,A3,A4,A0);
 
и причем не важно (все три варианта):
UTFTGLUE tft(0xC0C4,A2,A1,A3,A4,A0);
UTFTGLUE tft(0x9341,A2,A1,A3,A4,A0);
UTFTGLUE tft(0x9388,A2,A1,A3,A4,A0);
Всё работает.
 
Но далее для (MCUFRIEND_kbv )  - tft.print("Hello") - не выдаёт ошибку НО и не делает ничего,
а для (UTFTGLUE) - tft.print("if background set") - выдает ошибку.
 
Я что то не могу всё в одну кучу собрать.
Что значит раскомментировать строки если я библиотеку добавлял как ZIP и в 
C:\Program Files (x86)\Arduino\libraries 
я эту библиотеку не вижу. 
 
Если надо что бы в папке с проектом была папка Font c всеми шрифтами из Font_simple.ino,
то ее нет в скачанном архиве.
Где брать
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeSans12pt7b.h>
#include <Fonts/FreeSerif12pt7b.h>
?
 
 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

У меня такой экран откликнулся на инициализацию как 61509 контроллер, работает правильно.  Посмотри в библиотеке, есть там такой контроллер? Или я по текстам пробегусь.

b707
Offline
Зарегистрирован: 26.05.2017

Rankle пишет:

Открыл файл Font_simple.ino Мне не понятно следующее:

#include <MCUFRIEND_kbv.h>   // Hardware-specific library MCUFRIEND_kbv tft;

Так не работает, а работает:

#include <UTFTGLUE.h>

UTFTGLUE tft(0xC0C4,A2,A1,A3,A4,A0);

не вижу в примере таких строк. Если вы удалили из примера библиотеку <MCUFRIEND_kbv.h> и вставили вместо нее <UTFTGLUE.h>, то очевидно, что еперь вы работает с библиотекой <UTFTGLUE.h> и искать, как добавить в нее фонты уже надо в другом месте

Я бы вам посоветовал для начала запустить свой дисплей именно на либе <MCUFRIEND_kbv.h>

 

 

Rankle
Offline
Зарегистрирован: 31.10.2020

нет, не работает с 61509

Rankle
Offline
Зарегистрирован: 31.10.2020

Итак, я может быть когда писал неправильно изложил все свои мысли. 

Я скачал файл: "MCUFRIEND_kbv-2.9.9-Release.zip". Установил библиотеку и из всех примеров подошёл скетч "GLUE_Demo_480x320",

который использует библиотеку UTFTGLUE.h, а не MCUFRIEND_kbv.h.

Рабочий пример я привел выше. Нашел инфу (https://arduinoplus.ru/arduino-tft-lcd-display/)  про MCUFRIEND_kbv.h. сделал как написано:

#include "Adafruit_GFX.h"
#include "MCUFRIEND_kbv.h"

#include "TouchScreen.h" // только если вы хотите использовать сенсорный экран 
#include "Fonts/FreeSans9pt7b.h"    // когда вам нужны другие шрифты
#include "Fonts/FreeSans12pt7b.h" // когда вам нужны другие шрифты
#include "Fonts/FreeSerif12pt7b.h" // когда вам нужны другие шрифты
#include "FreeDefaultFonts.h" // когда вам нужны другие шрифты 
#include "SPI.h"  // использование sdcard для отображения растрового изображения
#include "SD.h"

//(int CS=A3, int RS=A2, int WR=A1, int RD=A0, int RST=A4)
MCUFRIEND_kbv tft(A3, A2, A1, A0, A4); 

void setup() 
{
  uint16_t ID = tft.readID();
  tft.begin(ID); 
  
  Serial.begin (9600);
  Serial.println(ID);
 
  tft.fillScreen(0x001F ); 
}

void loop() { }

Ничего. fillScreen не работает, потому что, как мне кажется,  объект tft создан не корректно.

А "UTFTGLUE myGLCD(0xC0C4,A2,A1,A3,A4,A0)" - работает. 

Пробовал MCUFRIEND_kbv tft(A2,A1,A3,A4,A0) - тоже не работает.

Причем (из только что приведенного примера) в монитор порта выдает идентификатор TFT - 49348.

Таким образом надо работать дальше с UTFTGLUE.h 

Где мне что и как надо раскомментировать что бы шрифты подтянуть и получить доступ к другим функциям библиотеки, поскольку как я писал ранее (я открыл файл UTFTGLUE.h ) некоторые функции закомментированы и не работают, например:

// void drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int deg, int rox, int roy);
// void lcdOff();
// void lcdOn();
// void setContrast(char c);
// void LCD_Write_DATA(char VH,char VL);
// void dispBitmap(File inFile);