TFT 3,5" и Ардуино

diger67
Offline
Зарегистрирован: 25.07.2015

Многие и много писали. Правим UTFT.ccp в массиве переход lдля ILI9341 на SPI на переход на 16 bit  и запускаем скетч для 320х240. Почитайте тему, здесь уже все обсудили и не раз.

makc014
makc014 аватар
Offline
Зарегистрирован: 18.01.2016

всю тему перечитал, так и не нашел способа работы с моим дисплеем.

Буду благодарен если скажите в каком сообщении описаны действия - перечитаю

slider
Offline
Зарегистрирован: 17.06.2014

ну раз всю тему прочитали, ... правильный подвиг,   ( бегло скорее всего прочитали )

makc014 пишет:

В библиотеке UTFT работает с ILI9141 только с serial, а это нам не подходит.

библиотека UTFT может работать  "вдоль и поперёк", и не только на то , что сделана.

makc014 пишет:

Чтобы устанить сдвиг (самый простой метод) необходимо отредактировать UTFT.cpp,  изменить disp_y_size = dsy[model]; на disp_y_size = dsy[model]-80; Это применительно только для примера 320х240!

ИМХО: Другие способы сводяться к корректировке скетча с +80 или в UTFT.cpp координат формирования фигур.

Если у кого-то есть другие методы, напишите)

Про методы сдвига, которые могут помочь http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov#comment-146701 //может помочь даташит

Про битность в UTFT :  раз вы утрудились изменить размер, так что вам мешает изменить там битность?  изменить в byte dtm[] = { чтоб не искать нужное 25 и 26 место, тупо все SERIAL.. на что нужно 8 или 16  ? ничего сложного, и незабудте сохранить файл после изменения.   * 

и потом можно будет  вызывать по любому :  UTFT myGLCD(25,38,39,40,41);   UTFT myGLCD(26,38,39,40,41);   UTFT myGLCD(ILI9341_S5P,38,39,40,41);   myGLCD(ILI9341_S4P,38,39,40,41);

именно так и запускал инит ili9341 на 16 бит (правда для другого дисплея 16бит). 

* бывают правда иногда оговорки по соответствию битности и цветности, это лечится изучением даташита, в частности подбора режима в регистре настроек - правильной передачи цветности для выбранной битности.

// это так, если не охота лазить по инету в поисках готовых решений.

// и ели что, только потом можно заглянуть сюда http://arduino.ru/forum/apparatnye-voprosy/kak-podklyuchit-displei-32-lcd-module?page=1#comment-155149

можно ещё в поиск по форуму  -   byte dtm[] 

makc014
makc014 аватар
Offline
Зарегистрирован: 18.01.2016

slider пишет:
Про битность в UTFT :  раз вы утрудились изменить размер, так что вам мешает изменить там битность?  изменить в byte dtm[] = { чтоб не искать нужное 25 и 26 место, тупо все SERIAL.. на что нужно 8 или 16  ? ничего сложного, и незабудте сохранить файл после изменения.   * 

Благодарю за информацию! Я не силен в таких тонкостях изменения библиотеки.

Может знаете как в библиотеке поменять распиновку в либе чтобы дисплей напрямую подключить к DUE?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Подскажите что подправить, что бы не мерцал дисплей, дисплей 3,95 ILI9486, подключен к ардуино Меге, мерцание не сильное но заметное, библиотека UTFT.

makc014
makc014 аватар
Offline
Зарегистрирован: 18.01.2016

Код программы покажите. Скорее всего мерцает из очистки экрана в цикле.

Roman2344
Offline
Зарегистрирован: 09.09.2015

makc014 пишет:

Код программы покажите. Скорее всего мерцает из очистки экрана в цикле.

Это при любом коде программы. Очистка она конечно есть в циклах но она то просто заливает экран чёрным а потом заново выводит то что мне нужно(это видно что очистка, а мерцает сама как бы подсветка что ли, питание хорошее 1,5А 5В стабилизированные, где - то читал что кто-то где - то какой - то регистр в библиотеке редактировал. Вот и хочу найти.

diger67
Offline
Зарегистрирован: 25.07.2015

На ili9488 тоже было заметное мерцание пикселей, победил изменением частоты обновления фрэма до 100 кГц в самом tft. посмотрите даташит на ваш чип. Найдите регистр в котором устанавливается частота tft и поменяйте на значение более высокойчастоты в init.c

Roman2344
Offline
Зарегистрирован: 09.09.2015

Возможно 96Гц? А не 100кГц, у меня тот же регистр что и для 9488 это B1.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Сделал 81Гц, и ничего не мерцает, изначально стояло 62Гц. в библиотеке

Roman2344
Offline
Зарегистрирован: 09.09.2015

Пытаюсь всё с микро СД вывести картинку

Нашёл образец в библиотеке UTFT_tinyFAT, интересует в этом примере мне нужно вывести картинку 220*176

и тут есть такое

 char* files220[]={"PIC501.RAW", "PIC502.RAW", "PIC503.RAW", "PIC504.RAW", "PIC505.RAW", "PIC506.RAW", "PIC507.RAW", "PIC508.RAW", "PIC509.RAW", "PIC510.RAW"};

Так вот понятно что картинку сжимаем на 220*176, далее конвертируем в .RAW, но не пойму почему десять картинок? Это мне что нужно сжать картинку на 220*176, потом эту картинку разрезать на 10 частей, потом каждую часть сконвертировать в .RAW?

 

// Demo_Portrait 
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: <a href="http://www.RinkyDinkElectronics.com/" title="http://www.RinkyDinkElectronics.com/" rel="nofollow">http://www.RinkyDinkElectronics.com/</a>
//
// This program is a demo of the loadBitmap()-function.
//
// This program requires UTFT_tinyFAT, UTFT v2.41 or higher, 
// as well as tinyFAT v3.0 or higher.
//
// The image files must be present in the root folder 
// of a FAT16 formatted SDcard in the module cardslot.
//
// Please note that this demo only supports the following
// display sizes:
//      176x220
//      240x320
//      240x400

#include <tinyFAT.h>
#include <UTFT.h>
#include <UTFT_tinyFAT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];

UTFT         myGLCD(ITDB32S, 38, 39, 40, 41);   // Remember to change the model parameter to suit your display module!
UTFT_tinyFAT myFiles(&myGLCD);

// List of filenames for pictures to display. 
char* files320[]={"PIC101.RAW", "PIC102.RAW", "PIC103.RAW", "PIC104.RAW", "PIC105.RAW", "PIC106.RAW", "PIC107.RAW", "PIC108.RAW", "PIC109.RAW", "PIC110.RAW"}; // 240x320
char* files400[]={"PIC201.RAW", "PIC202.RAW", "PIC203.RAW", "PIC204.RAW", "PIC205.RAW", "PIC206.RAW", "PIC207.RAW", "PIC208.RAW", "PIC209.RAW", "PIC210.RAW"}; // 240x400
char* files220[]={"PIC501.RAW", "PIC502.RAW", "PIC503.RAW", "PIC504.RAW", "PIC505.RAW", "PIC506.RAW", "PIC507.RAW", "PIC508.RAW", "PIC509.RAW", "PIC510.RAW"}; // 176x220
char* files[10];

int picsize_x, picsize_y;
boolean display_rendertime=false;  // Set this to true if you want the rendertime to be displayed after a picture is loaded
boolean display_filename=true;  // Set this to false to disable showing of filename

word res;
long sm, em;

void setup()
{
  myGLCD.InitLCD(PORTRAIT);
  myGLCD.clrScr();
  file.initFAT();
  myGLCD.setColor(255,255,255);
  myGLCD.setFont(SmallFont);
  picsize_x=myGLCD.getDisplayXSize();
  picsize_y=myGLCD.getDisplayYSize();
  switch (picsize_y)
  {
    case 220:
      for (int z=0; z<sizeof(files220)/sizeof(*files220);z++)
        files[z] = files220[z];
      break;
    case 320:
      for (int z=0; z<sizeof(files320)/sizeof(*files320);z++)
        files[z] = files320[z];
      break;
    case 400:
      for (int z=0; z<sizeof(files400)/sizeof(*files400);z++)
        files[z] = files400[z];
      break;
  }
}

void loop()
{
  
  for (int i=0; i<(sizeof(files)/sizeof(*files)); i++)
  {
    if (files[i]!="")
    {
      sm=millis();
      res=myFiles.loadBitmap(0, 0, picsize_x, picsize_y, files[i]);
      em=millis();
      if (res!=0)
      {
        if (res==0x10)
        {
          myGLCD.print("File not found...", 0, 0);
          myGLCD.print(files[i], 0, 14);
        }
        else
        {
          myGLCD.print("ERROR: ", 0, 0);
          myGLCD.printNumI(res, 56, 0);
        }
        delay(3000);
        myGLCD.clrScr();
      }
      else
      {
        if (display_rendertime==true)
        {
          myGLCD.print("Rendertime (secs):", 0, 0);
          myGLCD.printNumF(float((em-sm)/1000.0), 2, 160,0);
        }
        if (display_filename==true)
        {
           myGLCD.print(files[i], CENTER, myGLCD.getDisplayYSize()-12);
       }
        delay(3000);
      }
    }
  }
}

 

Roman2344
Offline
Зарегистрирован: 09.09.2015

Вопрос такой почему на дисплее 4дюйма ili9486 текст шрифтом SevenSegNumFont выводится как какая - то растягнутая ерунда, остальные шрифты BigFont, SmallFont нормально выводятся, библиотека UTFT.

slider
Offline
Зарегистрирован: 17.06.2014

Roman2344 пишет:

Вопрос такой почему на дисплее 4дюйма ili9486 текст шрифтом SevenSegNumFont выводится как какая - то растягнутая ерунда, остальные шрифты BigFont, SmallFont нормально выводятся, библиотека UTFT.

А почитать пдф к утфт ? в папке документы у него лежит (в последних версиях библиотеки).   там все возможности шрифтов описаны. и много еще мож полезного изучите к библиотеке, раз ею пользуетесь.

// "если ничего не помогает, прочтите наконец инструкцию!" И полезно во многих будущих вопросах еще разберетесь.

//// СевенСег... насколько помню выводит только цифры , типа как семисегментный индикатор. Причем по пробелу - ерунда - он не затирает символ под ним (надо добавлять в библиотеку видимо пустое затирание по коду пробела)

 

 

Roman2344
Offline
Зарегистрирован: 09.09.2015

Спасибо, а я буквы выводил, уже скачал себе другие шрифты и всё нормально

Sanya882
Offline
Зарегистрирован: 27.03.2016

Подскажите. Купил экран 3.5 r61581, подключил UTFT. Пишет англ буквы без проблем. Скачал файл с русскими символами. Выводит размытые буквы. В чем может быть дело?

pavel1979
Offline
Зарегистрирован: 08.02.2016

купил вот такой экран 3.5 дюймов цветной модуль экрана 320 X 480 ultra HD  для Arduino UNO  (ILI9481) не могу завести чтоб работал полноценно плата arduino uno . скиньте пожалуйста простенкий скейч у кого получилось

releyshic
Offline
Зарегистрирован: 20.11.2015

diger67 пишет:

На ili9488 тоже было заметное мерцание пикселей, победил изменением частоты обновления фрэма до 100 кГц в самом tft. посмотрите даташит на ваш чип. Найдите регистр в котором устанавливается частота tft и поменяйте на значение более высокойчастоты в init.c

Спасите помогите!

Как это сделать на Adafruite ? Не запусткается UTFT и переделывать уже нет смысла

Roman2344
Offline
Зарегистрирован: 09.09.2015

Инициализацию правильно прописал?

Какую библиотеку используешь, скетч, где?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Не запускается, это вообще ничего не выводит, только подсветка светит?

Дядя Вова
Дядя Вова аватар
Offline
Зарегистрирован: 31.07.2014

Sanya882 пишет:

Подскажите. Купил экран 3.5 r61581, подключил UTFT. Пишет англ буквы без проблем. Скачал файл с русскими символами. Выводит размытые буквы. В чем может быть дело?

Так, как бы в UTFT нет кириллицы. ну, раньше по крайней мере. А какой файл Вы скачали?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Кто где заказывает дисплеи? Мне нужно что бы дисплей был 3,5 или 3,95дюйма(использую в основном 3,95 дюйма и желательно его) тач всё равно есть или нет, я его не использую, драйвер желательно ili9486 - 9488, просто с ними работал(и в проге использую функции с библиотеки UTFT и не хотелось бы прогу редактировать под разные библиотеки), разрешение дисплея 480*320(так как всё по этому разрешению этим пикселям расставлено на дисплее), дисплей что бы был для ардуино Мега(с запаяными резиствными сборками делителями или микрухами преобразователями уровня что бы не нужно было плату переходник покупать или резисторы паять). С Китая с тао бао ждать по 2,5 месяца не выход, нужно что - то где быстрее прийдёт(может с Али экспресс быстрее идёт? Я там никогда не брал, и нужен проверенный продавец), лучше конечно что бы было в Украине, что бы не ждать.

Что-то в Украине никто под мегу дисплеи не хочет возить все везут под УНО, но УНО же для графических дисплеев не то, а вот на ммеге и проекты хорошие можно писать и дисплей нормальный 480*320 использовать, а никто не везёт их в магазины(((.

diger67
Offline
Зарегистрирован: 25.07.2015

А на ali или Ebay не судьба купить. Там и дешевле будет. Я только там и отавариваюсь. Бывают иногда заморочки, но все решаемо. Тут достал с полки шилд на R61581. До этого как то все сросталось, а тут биру инициализацию из UTFT и получаю белый экран. Фонарик одним словом. Оказалось кривой инит, т.е. там зачемто прописан регистр возвращающий значения разрядности записываемых данных, Ну и так по мелочи, гамма переврана, частота фрэйма такая, что экран мерцал как стробоскоп, кривая инитка. Всю ночь просидел. но добил эту тему. Завел маленького. Что касается самих шилдов, берете любой подхлдящий, даже без преобразователей уровня. В худшем случае лепите резистиное согласование, в лучшем на поливиках. Но это конечно если не используете пирог из шилда и ардуино.

diger67
Offline
Зарегистрирован: 25.07.2015

В Adafruit я давно уже все сделал. найдите в этой теме ссылку на библотеку, скачайте и будет вам счастье.

http://178.130.34.198/Adafruit/Adafruit.rar

Roman2344
Offline
Зарегистрирован: 09.09.2015

На Ebay Украина доставка дорогая, а на Али мне бы проверенного продавца, да и на Али сколько времени доставка занимает а то я никогда там не брал. И дисплеи в Украине на ili9486, у паря которого я брал стоит 330-350грн., на Али подобные цены, по крайней мере дешевле я не находил. 

Roman2344
Offline
Зарегистрирован: 09.09.2015

А кто нить такой дисплей (3,2дюйма на HX8357b)с библиотекой UTFT юзал?  http://olx.ua/obyavlenie/zhidkokristallicheskiy- displey-3-2-dyuyma-dlya-arduino-arduino-mega-mega-IDiIC1E.html#afee16c424  А то у меня в библиотеке UTFT только такие прописаны 

#ifndef DISABLE_HX8347A
	#include "tft_drivers/hx8347a/initlcd.h"
#endif
#ifndef DISABLE_ILI9327
	#include "tft_drivers/ili9327/initlcd.h"
#endif
#ifndef DISABLE_SSD1289
	#include "tft_drivers/ssd1289/initlcd.h"
#endif
#ifndef DISABLE_ILI9325C
	#include "tft_drivers/ili9325c/initlcd.h"
#endif
#ifndef DISABLE_ILI9325D
	#include "tft_drivers/ili9325d/default/initlcd.h"
#endif
#ifndef DISABLE_ILI9325D_ALT
	#include "tft_drivers/ili9325d/alt/initlcd.h"
#endif
#ifndef DISABLE_HX8340B_8
	#include "tft_drivers/hx8340b/8/initlcd.h"
#endif
#ifndef DISABLE_HX8340B_S
	#include "tft_drivers/hx8340b/s/initlcd.h"
#endif
#ifndef DISABLE_ST7735
	#include "tft_drivers/st7735/std/initlcd.h"
#endif
#ifndef DISABLE_ST7735_ALT
	#include "tft_drivers/st7735/alt/initlcd.h"
#endif
#ifndef DISABLE_PCF8833
	#include "tft_drivers/pcf8833/initlcd.h"
#endif
#ifndef DISABLE_S1D19122
	#include "tft_drivers/s1d19122/initlcd.h"
#endif
#ifndef DISABLE_HX8352A
	#include "tft_drivers/hx8352a/initlcd.h"
#endif
#ifndef DISABLE_SSD1963_480
	#include "tft_drivers/ssd1963/480/initlcd.h"
#endif
#ifndef DISABLE_SSD1963_800
	#include "tft_drivers/ssd1963/800/initlcd.h"
#endif
#ifndef DISABLE_SSD1963_800_ALT
	#include "tft_drivers/ssd1963/800alt/initlcd.h"
#endif
#ifndef DISABLE_S6D1121
	#include "tft_drivers/s6d1121/initlcd.h"
#endif
#ifndef DISABLE_ILI9481
	#include "tft_drivers/ili9481/initlcd.h"
#endif
#ifndef DISABLE_S6D0164
	#include "tft_drivers/s6d0164/initlcd.h"
#endif
#ifndef DISABLE_ST7735S
	#include "tft_drivers/st7735s/initlcd.h"
#endif
#ifndef DISABLE_ILI9341_S4P
	#include "tft_drivers/ili9341/s4p/initlcd.h"
#endif
#ifndef DISABLE_ILI9341_S5P
	#include "tft_drivers/ili9341/s5p/initlcd.h"
#endif
#ifndef DISABLE_R61581
	#include "tft_drivers/r61581/initlcd.h"
#endif
#ifndef DISABLE_ILI9486
	#include "tft_drivers/ili9486/initlcd.h"
#endif
#ifndef DISABLE_CPLD
	#include "tft_drivers/cpld/initlcd.h"
#endif
#ifndef DISABLE_HX8353C
	#include "tft_drivers/hx8353c/initlcd.h"
#endif
	}

	sbi (P_CS, B_CS); 

	setColor(255, 255, 255);
	setBackColor(0, 0, 0);
	cfont.font=0;
	_transparent = false;
}

void UTFT::setXY(word x1, word y1, word x2, word y2)
{
	if (orient==LANDSCAPE)
	{
		swap(word, x1, y1);
		swap(word, x2, y2)
		y1=disp_y_size-y1;
		y2=disp_y_size-y2;
		swap(word, y1, y2)
	}

	switch(display_model)
	{
#ifndef DISABLE_HX8347A
	#include "tft_drivers/hx8347a/setxy.h"
#endif
#ifndef DISABLE_HX8352A
	#include "tft_drivers/hx8352a/setxy.h"
#endif
#ifndef DISABLE_ILI9327
	#include "tft_drivers/ili9327/setxy.h"
#endif
#ifndef DISABLE_SSD1289
	#include "tft_drivers/ssd1289/setxy.h"
#endif
#ifndef DISABLE_ILI9325C
	#include "tft_drivers/ili9325c/setxy.h"
#endif
#ifndef DISABLE_ILI9325D
	#include "tft_drivers/ili9325d/default/setxy.h"
#endif
#ifndef DISABLE_ILI9325D_ALT
	#include "tft_drivers/ili9325d/alt/setxy.h"
#endif
#ifndef DISABLE_HX8340B_8
	#include "tft_drivers/hx8340b/8/setxy.h"
#endif
#ifndef DISABLE_HX8340B_S
	#include "tft_drivers/hx8340b/s/setxy.h"
#endif
#ifndef DISABLE_ST7735
	#include "tft_drivers/st7735/std/setxy.h"
#endif
#ifndef DISABLE_ST7735_ALT
	#include "tft_drivers/st7735/alt/setxy.h"
#endif
#ifndef DISABLE_S1D19122
	#include "tft_drivers/s1d19122/setxy.h"
#endif
#ifndef DISABLE_PCF8833
	#include "tft_drivers/pcf8833/setxy.h"
#endif
#ifndef DISABLE_SSD1963_480
	#include "tft_drivers/ssd1963/480/setxy.h"
#endif
#ifndef DISABLE_SSD1963_800
	#include "tft_drivers/ssd1963/800/setxy.h"
#endif
#ifndef DISABLE_SSD1963_800_ALT
	#include "tft_drivers/ssd1963/800alt/setxy.h"
#endif
#ifndef DISABLE_S6D1121
	#include "tft_drivers/s6d1121/setxy.h"
#endif
#ifndef DISABLE_ILI9481
	#include "tft_drivers/ili9481/setxy.h"
#endif
#ifndef DISABLE_S6D0164
	#include "tft_drivers/s6d0164/setxy.h"
#endif
#ifndef DISABLE_ST7735S
	#include "tft_drivers/st7735s/setxy.h"
#endif
#ifndef DISABLE_ILI9341_S4P
	#include "tft_drivers/ili9341/s4p/setxy.h"
#endif
#ifndef DISABLE_ILI9341_S5P
	#include "tft_drivers/ili9341/s5p/setxy.h"
#endif
#ifndef DISABLE_R61581
	#include "tft_drivers/r61581/setxy.h"
#endif
#ifndef DISABLE_ILI9486
	#include "tft_drivers/ili9486/setxy.h"
#endif
#ifndef DISABLE_CPLD
	#include "tft_drivers/cpld/setxy.h"
#endif
#ifndef DISABLE_HX8353C
	#include "tft_drivers/hx8353c/setxy.h"
#endif
	}

 

write2sd
Offline
Зарегистрирован: 14.10.2015

Доброго времени суток!

Хотел узнать какие пины нужно подключить к Arduino MEGA 2560 чтобы он только отоброжал текст? 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Только текст?

Громко скажите ему:"Отображай только текст, *****!". Может поможет.

А у вас не только текст отображает?

write2sd
Offline
Зарегистрирован: 14.10.2015

Рука-лицо... Во-первых я чайник... Во-вторых вопрос был какие конкретно пины отвечают за отображение текста... не нужен ни тач скрин ни сд карта...

Roman2344
Offline
Зарегистрирован: 09.09.2015

Уважаемый diger67, а можете скинуть нормальный инит под этот драйвер, а то на али заказал, такой же думаю вдруг прийдётся заморочиться, а времени не будет, кстати R61581 там везде разрешение пишут 400*270, а на ИЛИ9488 разрешение 480*320, это прийдётся всю прогу тогда сдвигать по экрану то что я вывожу, а если ещё и с гаммой и с регистром розрядности возиться то вообще. И кстати попадались ли вам нормальные дисплеии на R61581которые стали нормально без программной переделки( ну не считаю конечно частоту фрейма)? Ещё такой вопрос есть дисплеии на Ардуино УНО 3,95дюйма на ИЛИ9488, там нету задней фишки как на дисплее ардуино мега, если на мегу такой ставить нормально будет? Просто вот с логическими уровнями на Ардуино мега и на Ардуино УНО уровни же сигналов одинаковы лог1=5В, почему на дисплеях ардуино мега ставят резистивные делители или сборки? Или там обмен данными на дисплей идёт типа по SPI UART, и там уровни у меги 5В а у УНО 3В, просто никогда не мерял уровни на SPI и UART, у меги и у УНО?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Вопрос такой появился: вот я написал программу с дисплеем 3.95 дюйма  480*320 ili9486, и купил дисплей 3.95 дюйма на R61581 400*270, но так как в скетче большая часть того что выводится на дисплей выставлена по пикселям, могу ли я где-то в библиотеке поменять начальные координаты на -80 по Х и -50 по Y, дабы каждый раз при разном разрешении дисплея ни в скетче менять каждую точку координат, а просто в библиотеке UTFT изменять начальные координаты?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

write2sd, никакие пины за вывод текста не отвечают. Вообще.

Предвижу реакцию: "Я ж чайник, а вы никто ничего не объясняете, вообще уже"

За ввод данных отвечают все названные контакты с двухрядной гребёнки, кроме SD_IN, SD_CS, SD_OUT и SD_SCK.

diger67
Offline
Зарегистрирован: 25.07.2015

К сожалению все контроллеры имеют страничную память. Т.е. отображение ведется от 0 до N пикселя по строкам. Запись ведется пиксельно, что бы реализовать векторную графику придется создавать фрэйм(кадр) в ОЗУ. Но для этого нужеy контроллер с приличным объемом памяти, чего нет в AVR. Даже к STM приходится прикручивать или статическое ОЗУ или SDRAM. К кокому конкретно TFT нужен инит?

diger67
Offline
Зарегистрирован: 25.07.2015

По поводу инита R61581, после правки заработало с такими параметрами.

//---------------------------------------------------------------
//
//
//---------------------------------------------------------------
void Global_reset(void)
{
 /*GPIO_ResetBits(GPIOE, GPIO_Pin_1);
 delay(0x0FFFFF);
 GPIO_SetBits(GPIOE, GPIO_Pin_1 );
 delay(0x0FFFFF);*/
 RST_ON();
 //delay(0x0FFFFF);
 delay_ms(10);
 RST_OFF();
 //delay(0x0FFFFF);
 delay_ms(10);
}


//---------------------------------------------------------------
//
//
//---------------------------------------------------------------
void init_61581(void)
{
 
    Global_reset();

    LCD_Write_COM(0x01); //reset
    delay_ms(15);

    //LCD_Write_COM(0xB0);  
  //LCD_Write_DATA(0x1E);     

  LCD_Write_COM(0xB0);
  LCD_Write_DATA(0x00);

  LCD_Write_COM(0xB3);
  LCD_Write_DATA(0x02);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x10);

  LCD_Write_COM(0xB4);
  LCD_Write_DATA(0x00);//0X10

   //LCD_Write_COM(0xB9); //PWM Settings for Brightness Control
   //LCD_Write_DATA(0x01);// Disabled by default. 
   //LCD_Write_DATA(0x1F); //0xFF = Max brightness
   //LCD_Write_DATA(0x1F);
   //LCD_Write_DATA(0x18);

  LCD_Write_COM(0xC0);
  LCD_Write_DATA(0x10);//0x03
  LCD_Write_DATA(0x3B);//
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x01);
  LCD_Write_DATA(0x00);//NW
  LCD_Write_DATA(0x43);

  LCD_Write_COM(0xC1);
  LCD_Write_DATA(0x00);//0x08
  LCD_Write_DATA(0x0A);//CLOCK
  LCD_Write_DATA(0x08);
  //LCD_Write_DATA(0x08);

  //LCD_Write_COM(0xC4);
  //LCD_Write_DATA(0x15);
  //LCD_Write_DATA(0x03);
  //LCD_Write_DATA(0x03);
  //LCD_Write_DATA(0x01);

  LCD_Write_COM(0xC6);
  LCD_Write_DATA(0x02);

  LCD_Write_COM(0xC8);
  LCD_Write_DATA(0x00);//0x0C
  LCD_Write_DATA(0x44);//0x05
  LCD_Write_DATA(0x06);//0x0A 0x12
  LCD_Write_DATA(0x44);//0x6B0x7D
  LCD_Write_DATA(0x0A);//0x04
  LCD_Write_DATA(0x08);//0x06
  LCD_Write_DATA(0x17);//0x15 0x0A
  LCD_Write_DATA(0x33);//0x10
  LCD_Write_DATA(0x77);//0x00
  LCD_Write_DATA(0x44);//0x60 0x23
  LCD_Write_DATA(0x08);
  LCD_Write_DATA(0x0C);
 
  LCD_Write_COM(0x36);
  LCD_Write_DATA(0x0A);

  //LCD_Write_COM(0x0C); вот из за этой шняги индикатор выдавл белый экран.
  //LCD_Write_DATA(0x55);

  LCD_Write_COM(0x3A);
  LCD_Write_DATA(0x55);

  LCD_Write_COM(0x38);
 
  LCD_Write_COM(0xD0);
  LCD_Write_DATA(0x07);
  LCD_Write_DATA(0x07);//VCI1
  LCD_Write_DATA(0x14);//VRH 0x1D
  LCD_Write_DATA(0xA2);//BT 0x06

  LCD_Write_COM(0xD1);
  LCD_Write_DATA(0x03);
  LCD_Write_DATA(0x1F);//VCM  0x5A
  LCD_Write_DATA(0x10);//VDV

  LCD_Write_COM(0xD2);
  LCD_Write_DATA(0x01);
  LCD_Write_DATA(0x24);//0x24 0x04
  //LCD_Write_DATA(0x04);

  LCD_Write_COM(0x11);
  delay_ms(150);
  /*
  LCD_Write_COM(0x2A);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x01);
  LCD_Write_DATA(0xDF);//320

  LCD_Write_COM(0x2B);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x01);
  LCD_Write_DATA(0x3F);//480
  */
  LCD_Write_COM(0x20);
 
  delay_ms(100);

  LCD_Write_COM(0x29);
  delay_ms(30);

  LCD_Write_COM(0x2C);
  delay_ms(30);

      _width    = TFTWIDTH;
      _height   = TFTHEIGHT;
   
   Rotation(0);
}

Сразу уточняю писалось под STM, но думаю можно без особых изменений и в UTFT прикрутить

Roman2344
Offline
Зарегистрирован: 09.09.2015

diger67 спасибо, попробую, этот инит, то есть как я понял под другое разрешение экрана нужно только другие пиксели указывать а в библиотеки не здвинешь вё в минус. Ещё такой вопрос если у меня дисплей на R61581 и 8бит, он с этим инитом будет работать, розрядность шины где задаётся регистром в инит, или где - то в другом месте? Хотя у меня может и не R61581, так как работает с модефицированной библиотекой от китайского продавца которую Бублик подредактировал и выложил сюда, так там 8 бит. А дисплеи на R61581 все 8 бит или есть и на 16?

nemecida
Offline
Зарегистрирован: 23.11.2015

Здравствуйте, подогнали мне дисплей на 3.95" с на борту ili9488. Не подскажете как его подключить к Arduino DUE?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Там вроде всё как на меге только нужно закоротить резистивные делители(если у вас дисплей для меги)

nemecida
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Там вроде всё как на меге только нужно закоротить резистивные делители(если у вас дисплей для меги)

Да нет, с делителями то всё понятно. А програмно? Ниодин из примеров не подходит=(

З.Ы. Дисплей вот такой http://goo.gl/zhXifu

Roman2344
Offline
Зарегистрирован: 09.09.2015

А ну так это ж дисплей для ардуино УНО, в инициализации нужно прописать в скетче нужные выводы( ведь у дисплея для меги выводы идут UTFT myGLCD(ILI9488,38,39,40,41); а для УНО другие выводы, да и не факт что стоит там ili9488, для УНО вроде так нужно UTFT myGLCD(ILI9488,19,18,17,16); и то если у вас именно 9488

Roman2344
Offline
Зарегистрирован: 09.09.2015

Меня вот тоже интересует сможет ли этот дисплей работать не с УНО а с мегой, так как контактные площадки другие, может на мегу тоже брать такие, а не те что чисто под мегу. Кто что думает по этому поводу? Жду ответа от nemecida, если на Дуэ будет работать то и на меге тоже

nemecida
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Меня вот тоже интересует сможет ли этот дисплей работать не с УНО а с мегой

Дело в том, что с MEGA2560 работает, а вот с DUE шиш. 

Roman2344
Offline
Зарегистрирован: 09.09.2015

Спасибо. Буду знать

Roman2344
Offline
Зарегистрирован: 09.09.2015

А работает так (ILI9488,19,18,17,16) ?

nemecida
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

А работает так (ILI9488,19,18,17,16) ?

Я использую библиотеку Adafruit_TFTLCD и пример graphicstest, там подобного объявления контактов нету.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Ладно, спасибо, буду пробовать по приходу, может кто - то подскажет до того момента).

nemecida
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Ладно, спасибо, буду пробовать по приходу, может кто - то подскажет до того момента).

Кстати, а у вас мерцание экрана есть?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Было нужно менять в инит частоту фрейма в регистре.

nemecida
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Было нужно менять в инит частоту фрейма в регистре.

А можно по подробнее?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Пост 1005-1010

nemecida
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Пост 1005-1010

хоть убейте- не могу найти это в инит

Roman2344
Offline
Зарегистрирован: 09.09.2015

А кто нибудь отрывал дисплей от платы, там на микросхеме драйвере так и написано её название, или там просто каие - то цифры, просто планирую с Китая брать партию дисплеев 3.95 дюймов, для Ардуино Мега, что бы был контроль, мне нужно как - то проконтролировать такой дисплей(именно что там стоит ili9488 или ili9486), вот что проверить проверяющему? под дисплееи должен стоять чип с надписью ili9488 или ili9486, так же должно быть резисторных сборок 9 штук если это под 16бит, правильно? Просто хочу что бы нормально работало с UTFT , что бы я не ломал голову, а может там другой драйвер, а может 8 бит, а может распиновка не та.