Читать тач, писать/рисовать на нем я уже умею, нет проблем. А вот научиться программно управлять подсветкой - ну никак ((.
֑֖Поделитесь пожалуста библиотекой и скетчем, а то я уже 3 дня сижу и не могу запустить данный дисплей֭
Если я правильно понял вы запустили дисплей и благополучно залили стандартные скетчи. Что касается управления подсветкой, на данном шилде без скальпеля не получится. Подсветка питается от 5В ардуино через стабилизатор 3.3В.
4. подключаем собранную схему на контакты удаленного стабилизатора, базу ключа на PINOUT
Радуемся включая и отключая подсветку. Другого способа не вижу.
Немного поправил библиотеку, теперь при работе с ili9488 можно явно указывать чип, раньше надо было указывать ili9341, с целью избавления от мерцания, при инициализации ili9488 устанавливается частота фрэйма 100 Гц. Ну и добавил функции ухода в слип и отключения чипа, а такжк выхода из этих режимов. Это может пригодится при реализации отключения подсветки и для скрытия процесса отрисовки экрана. Правда при этом изображение будет исчезать на N time требуемое на отрисовку фрэйма. На stm32 72МГц это при 320х480 около 0.5 - 0.6 сек, очень заметно для глаза, буду дальше совершенствовать данную либу. Вижу один вариант, создавать фрэйм в буфере RAM а потом перегонять его в TFT. Но это совсем другая история.
Товарищи, кто-нить знает как перевернуть изображение вверх ногами? Просто у моего дисплея углы обзора такие, что при расположении на стене на уровне груди ничо видно не будет. Только если его на высоте двух метров поставить - будет нормально видно ;)
Товарищи, кто-нить знает как перевернуть изображение вверх ногами? Просто у моего дисплея углы обзора такие, что при расположении на стене на уровне груди ничо видно не будет. Только если его на высоте двух метров поставить - будет нормально видно ;)
Ищи в файле инициализации дисплея регистр Memory Access Control по адресу 0x36 (если про ILI9488 идет речь) старшие три бита MY, MX, MV отвечают за направление отрисовки графики из памяти на дисплей. Я сам не ардуинщик, но библиотеками не брезгую попользоваться. Возможно в библиотеке есть какая-нибудь функция Rotation, она наверняка эти биты меняет и в дальнейшем во всех функциях отрисовки графики учитываются все направления.
Друзья, товарищи помогите. Приобрел давно экранчик 3,5 от mcufriend (ILI9327 8 bit), подключил к arduino nano, скачал эту библиотеку https://github.com/dgolda/UTFT, тест отробатывает как надо. Sd слот пока не перепаял использую отдельный модуль. Искал как загружать изображения с sd карты нашел только одно решение http://blog.lincomatic.com/?p=1074 которое использует библиотеку sd, а не tiny_fat, взял у них библиотеку Utft от Uctronics, вытащил из нее кусок
Это пример работы с ili9341, мало отличается от ili9488. Надо только поменять в инциализации FSMC разрядность шины на 8 bit и добавить функцию записи пикселя. Пример написан для работы по 16 bit шине. Тут только основной файл иницыализации, дополнительные файлы не выложены. Прошу не пинать за примеры к stm, не знаю к сожалению или к радости, но stm портируют в среду arduino и все больше библиотек переносят на это ядро. Впрочем так же как и на ядро ARM Atmel.
Нет, распиновка не совподает. Надо подключать методом жгута, желательно использовать провода наименьшей длинны. Данный шилд отлично работает. запускал его на stm32.
картинка выводится но на i = 320 начинает выводить каринку с начала экрана.
В чем может быть проблема Arduino ide 1.6.7
Проблема в том, что не совпадает размер "окна" отрисовки и размер массива, который посылается в дисплей. Ищи в файле инициализации размер этого окна, и правь под свои 400 на 240, что-то типа этого
#define TFTWIDTH 240
#define TFTHEIGHT 400
получается, что, как только закончился 319-ый стобец, начиная с нулевого, оставшиеся элементы массива пишутся с начала "окна"
Я думаю этот вопрос тоже подходит в эту ветку, чем теперь конвертировать картинки в bmp 16bit, есть кортинка которая примером шла она открывается коректно, что то другое при конвертации с измененным цветом идет. Пробовал Gimp, Irfan.
Я думаю этот вопрос тоже подходит в эту ветку, чем теперь конвертировать картинки в bmp 16bit, есть кортинка которая примером шла она открывается коректно, что то другое при конвертации с измененным цветом идет. Пробовал Gimp, Irfan.
// UTFT_Read_BMP (C)2012 uCtronics
// web: http://www.uctronics.com
//
// This program is a demo for modified UTFT.library
// and illustrate how to read bmp file from SD card.
//
// This program requires the UTFT library (8bit mode)
// and the code is compatible with both UNO and Mega board.
// No code modification required.
//
// This program requires the modified UTFT library by electronics.lee
// The orignal UTFT library is written by Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
#include <UTFT.h>
#include <SD.h>
#include <Wire.h>
#define SD_CS 10
#define BMPIMAGEOFFSET 54
// Declare which fonts we will be using
extern uint8_t SmallFont[];
//UTFT(byte model, int RS, int WR,int CS,int RD)
UTFT myGLCD(NIC35WS,A5,A4,A3,A2);
void setup()
{
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
if (!SD.begin(SD_CS))
{
while (1);
}
}
void loop()
{
char VH,VL;
File inFile;
inFile = SD.open("input.bmp",FILE_READ);
if (! inFile)
{
while (1); //if file does not exsit, stop here.
}
myGLCD.dispBitmap(inFile);
inFile.close();
while(1);
}
// UTFT_Read_BMP (C)2012 uCtronics
// web: http://www.uctronics.com
//
// This program is a demo for modified UTFT.library
// and illustrate how to read bmp file from SD card.
//
// This program requires the UTFT library (8bit mode)
// and the code is compatible with both UNO and Mega board.
// No code modification required.
//
// This program requires the modified UTFT library by electronics.lee
// The orignal UTFT library is written by Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
#include <UTFT.h>
#include <SD.h>
#include <Wire.h>
#define SD_CS 10
#define BMPIMAGEOFFSET 54
// Declare which fonts we will be using
extern uint8_t SmallFont[];
//UTFT(byte model, int RS, int WR,int CS,int RD)
UTFT myGLCD(NIC35WS,A5,A4,A3,A2);
void setup()
{
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
if (!SD.begin(SD_CS))
{
while (1);
}
}
void loop()
{
char VH,VL;
File inFile;
inFile = SD.open("input.bmp",FILE_READ);
if (! inFile)
{
while (1); //if file does not exsit, stop here.
}
myGLCD.dispBitmap(inFile);
inFile.close();
while(1);
}
Улучшения, предложения?
Раз уж вы в этом разобрались, черкнули бы пояснения, коментирования
Объясните пожалуйста конструкцию
void UTFT::dispBitmap(File inFile)
{
char buff[120];
char VH,VL;
int i,j,a = 0;
inFile.seek(BMPIMAGEOFFSET);
cbi(P_CS, B_CS);
for(i = 0; i < 800; i++) {
for(j = 0; j < 2; j++)
{
inFile.read( buff, 120 );
for (a = 0; a < 120; a++){
VL = buff[a];
VH = buff[++a];
VL = ((VL & 0xE0) << 1) | (VL & 0x1F);
VH = (VH << 1) | ((VL & 0x80) >> 7);
LCD_Write_DATA(VH,VL);
}
}
}
sbi(P_CS, B_CS);
clrXY();
}
зачем такие сложности
VL = ((VL & 0xE0) << 1) | (VL & 0x1F);
VH = (VH << 1) | ((VL & 0x80) >> 7);
скорее всего, так конвертируется из кода BMP в код RGB для протокола 8бит 262к 65к дисплея?
как вы подключили дисплей? черкните чтоб лишний раз не разбираться, а то без пояснений народ бездумно пытается скопировать куски кода и не понимает почему в их случаях ничего не работает.
и раз уж не навешиваете на порт данных 8бит ничего кроме дисплея, то можно отказаться от CS ( sbi(P_CS, B_CS);,... ) ,замкнув этот вывод дисплея на GND, это может немного увеличить скорость.
тоесть 8 бит, ну и питание. В первонвачальном коде функцией inFile.read(); читалось по одному байту я добавил чтение блоками по 120 байт(эсли экран 400х240 то 2 буфера это столбик) что значительно ускоряет процесс, пробовал и 240 байт (тоесть один столбик за один раз, но визуально ни чего не поменялось). В библиотеке которую я использовал в файле UTFT\hardware\avr\HW_ATmega328P.h непосредственно за передачу информации контроллеру дисплея отвечает следующий кусок :
тоесть уменя не используется переменная VH. В одной из библиотек которую я брал с этой ветки использовался тот код что закоментирован тоесть используется и VH и VL , но у меня это приводило к не правильному отображению цвета. Так что возможно у кого то у кого она используется, код будет работать не коректно.
void UTFT::dispBitmap(File inFile)
{
char buff[120]; //Это буфер(массив char) на 120 байт, в него куски будем загружать изображение.
char VH,VL;
int i,j,a = 0;
inFile.seek(BMPIMAGEOFFSET); // это офсет он указывается в скетче, равен 54 байта там лежит различная информация о файле нам она не нужна. тоесть читать файл начинаем после него.
cbi(P_CS, B_CS);
for(i = 0; i < 800; i++) { //закрашивание экрана идет снизу вверх по столбцам, поскольку разрешение 400х240 и мы грузим буфер в 120 байт(это два раза на один столбик) то получается, это нужно сделать 800 раз.
for(j = 0; j < 2; j++) // 2 раза за один столбик
{
inFile.read( buff, 120 ); // считываем из файла 120 байт в буфер.
for (a = 0; a < 120; a++){ // проходим по буферу 120 раз.
VL = buff[a]; // присваеваем VL значение из массива.
// VH = buff[++a]; // у меня не используется и я не знаю привильно ли я сделал.
VL = ((VL & 0xE0) << 1) | (VL & 0x1F); //коректировка цвета пикселя, для моего уровня понимания это пока недоступно.
// VH = (VH << 1) | ((VL & 0x80) >> 7);
LCD_Write_DATA(VH,VL); // отаправка на контроллер дисплея
}
}
}
sbi(P_CS, B_CS);
clrXY();
}
Кто понимает что происходит в VL = ((VL & 0xE0) << 1) | (VL & 0x1F); обьясните пожалуйста.
если не используете аппаратный UART (пины D0 D1 ардуино , и сериал монитор), то чтобы не использовать тратящую время припарку от неправильного подключения
подключите правильно как в документации UTFT UTFT_Requirements.pdf
arduino <---> lcd
do-d8
d1-d9
d2-d10
d3-d11
d4-d12
d5-d13
d6-d14
d7-d15
используйте оригинальную UTFT . и вспомните в memorysaver.h оставить закоментированными только ваш ili9327 . Строчку инициализации с использовании его в 8ми битном режиме. Т.о. скорость вывода ещё вырастет, из-за того что ему не надо перераспределять байт по разным портам микроконтроллера , а кидает только в один аппаратный, - пины ардуино D0..7
в файле UTFT\hardware\avr\HW_ATmega328P.h уже будет
romeo_b , экран такой-же как увас , 3,95 .подскажите как подключали к акрдуно уно, какие библиотеки использовали. я новичок пока . научился выводить хело ворлд на двухстрочнике 1602. а этот купил сдуру из-за размера . вот теперь незнаю что с ним делать
Друзья, подскажите и мне... может что пропустил в своих шагах: 1. приобрел "3.95 inch LCD touch screen ili9488" тут . Соединил Мегу и Экран. Могу пины указать, но наверное тут как у всех, соединение без проводов - в впаянные мамы папы, ошибиться как би никак...
2. пробовал пример с UTFT, никак, белый экран...
3. почитал тут всю ветку, тут, пост 545 от diger67 повторил.
4. разрешение продавец на Али пишет 400*270 (!?), хотя в других источниках 480*320
5. в Adafruit_TFTLCD.cpp ставил:
и #define TFTWIDTH 240 #define TFTHEIGHT 400
и #define TFTWIDTH 320 #define TFTHEIGHT 480
6. В примере c:\Arduino\libraries\Adafruit_TFTLCD\examples\graphicstest
в 115 строку подставлял: //identifier = 0x9341; //identifier = 0x9488; identifier = 0x9327;
во всех попытках - нет результата - просто белый экран. В мониторе порта только вижу меняется: ...
Voltage:1.49 pH value: 5.96 Voltage:1.49 pH value: 5.96 Voltage:1.49 pH value: 5.97
...
7. Попробовал пример от diger67, LCD_ID_Reader, выдаёт:
Initializing LCD...
Reading ID...0x0404
Loading LCD registers...
Filling the screen...
Done filling...
If your screen filled red, you may be able to use the library at http://misc.ws
ID может быть 0x0404, а может 0x0C0C... Эти адреса тоже подставлял в 115строку, как то тоже ничего (((
Прошу помочь, штука очень интересная, первый TFT экран, но не ожидал что возникнут такие сложности...
Валерий, спасибо, тоже, буквально минуту назад, в ютубе нашел линк на нее, и читаю после этого ваш ответ с ней, сейчас попробую с этой библиотекой! Отпишу в случае положительного ответа сегодня, а не получится, уже на завтра оставлю опыты.
Нет, не работает, завтра буду пытаться снова, а пока из примера выдаёт вот что:
Paint_kbv !
Unknown LCD driver chip: 404
а из примера LCD_ID_Reader:
Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)
reg(0x0000) 04 04 ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 04 04 04 04 Manufacturer ID
reg(0x0009) 05 05 05 05 05 Status Register
reg(0x00BF) BF BF BF BF BF BF ILI9481, HX8357-B
reg(0x00D0) 54 54 Power Control
reg(0x00D2) 56 56 56 NVM Read
reg(0x00D3) 57 57 57 57 ILI9341, ILI9488
reg(0x00DA) 56 56 56 RDID1
reg(0x00DB) 57 57 57 RDID2
reg(0x00DC) 54 54 54 RDID3
reg(0x00EF) EF EF EF EF EF EF ILI9327
reg(0x00B0) B4 RGB Interface Signal Control
reg(0x00B4) B4 Inversion Control
reg(0x00B6) B6 B6 B6 B6 Display Control
reg(0x00B7) B7 Entry Mode Set
reg(0x00F2) F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 Adjust Control 2
reg(0x00F6) F6 F6 F6 Interface Control
Эх, похоже это не для Mega:
The library is designed for MCUFRIEND UNO shields.
ваш продаван пишет что там контроллер: R61581 а не ili9488
Валерий, спасибо за помощь!!! На самом экране написано ili9488, ну я и давай гуглить, да темы читать. Точно у продавца R61581. Взял сейчас пример UTFT_Demo_480x320 , ничего не правя, залил и заработало!!!!!!!!!!!
Есть правда косяки - текст из этой демки зеркальный, и на пикселей 20 смещенно всё, но это уже другие вопросы, буду читать и доходить!
Продавец кстати мегабыстрый!!! Смотрите, заказал 2 января, отправил он наверное 3го, письмо было почти сразу, 15го посылка была уже на местном моём почтампе (РФ, центр.часть)! Получил сегодня. Я подготовился ждать месяц, а тут за 2 недели! Причем, одновременно делал заказы - так эти параллельные заказы они только отправили мне из Китая на самый последний день - десятый. Ну это офтоп, по доставке прошу не отвечать, может просто кому то поможет. Аппараты у него проверенные, и самые дешевые (были на 2января точно) и приходят быстро до дома.
diger67, не могли бы вы опубликовать проект для STM32 полностью? Что-то я не врубаюсь)
Проектом это назвать сложно. Скорее это попытка портировать библиотеки от arduino на платформу stm32. При этом приходится трансформировать из C++ в С. Все это осложняется тем, что нет наследования классов, bool в чистом виде и многоо другого. Я не использую среду ардуино, использую Keil и CooCox. Соберу на досуге в архив и залью на свой серв, сможете скачать.
P.S. Дальнейшие экспирименты с DMA не дали положительных результатов. Возможности этой функции ограничены.
Сдесь сборка для работы с tft ili9341 + tuoch(xpt2046) процессор stm32f103vet, среда CooCox, в принципе создав проек в Keil и перенеся все файлы с и h должно собраться.. Для работы с stm32f4 надо подправить инициализацию перефирии в соответствии с библиотеками на эту серию.
Приветствую, уважаемые.
Прикупил TFT 3,5" с тач скрином для UNO. Вот тут покупал: http://www.ebay.com/itm/111687922300?_trksid=p2057872.m2749.l2649&ssPage...
В названии товара написано что должен был быть 3,6" (реально прислали 3,5"), но это не важно сейчас. В описании товара написано контроллер ili9488, ниже идет инициализация для ili9327. На присланной железяке написано ili9486. Продавец про контроллер ничего сказать не может, предлагает компенсировать четверть стОимости. Чтение регистра из дисплея дало C0C0 (или 0C0C, сейчас точно не помню). Вот фото моего экрана: http://s10.postimg.org/cqx93eezt/TFT.jpg
Я пробовал использовать инициализацию для всех трех перечисленных контроллеров. Ничего не меняется.
Вот то, что показывает экран: http://s10.postimg.org/ufozv0qqx/pictures.jpg
Изображение в формате BMP 24-бита, читается с SD-карты. Графический тест так же проходит, все рисуется, но с цветом полная лажа.
Использую IDE1.6.6, Adafruit GFX Library version=1.1.4 и TFTLCD-Library-master от этих же фруктов.
Игрался со значениями регистров 0xB4, 0x36 и 0x3A - лучше не стало.
Подключение дисплея к Arduino Nano:
LCD_D0 connects to digital pin 8
LCD_D1 connects to digital pin 9
LCD_D2 connects to digital pin 2
LCD_D3 connects to digital pin 3
LCD_D4 connects to digital pin 4
LCD_D5 connects to digital pin 5
LCD_D6 connects to digital pin 6
LCD_D7 connects to digital pin 7
LCD_CS A3
LCD_RS A2
LCD_WR A1
LCD_RD A0
LCD_RST A4
С библиотекой UTFT вообще ничего не получается, только белый экран и все.
Очень надеюсь на вашу помощь ибо мои изыскания в решении проблемы ни к чему не привели :(
Посмотрите в даташите какой регистр отвечает за иверсию цветов в контроллере установленном на шилде. Там же посмотрите регистр и комманду возвращающую ID. Комманда 0хD3, редактируем функцию readID, пробуем прочитать ID
uint16_t id = readReg(0xD3);
if (id == 0x9341) {
return 0x9341;
}
else if(id == 0x9486){
return 0x9486;
}
Можно добавить и 0x9488. Но просто добавить инициализацию недостаточно.
Я Закоментировал все эти проверки и принудительно прописывал id. А дальше уже запускается инициализация добавленная мной. За инверсию отвечает команда 0х20h-выключает, 0х21h-включает. Инициализацию для 9486 я брал из библиотеки utft и там передается еще один параметр. А по даташиту команда без параметров. И еще, в даташите я не нашел описние параметров отвечающих за positive gamma control (0хЕ0) и negative gamma correction (0хЕ1). Их аж 15 штук, а за что отвечают не понятно. Может в них дело?
Не могу найти таблицу регистров в даташите :( Ткните носом , пожалуйста.
[quote=Araris]
Задам-ка я свой вопрос в этой теме..
Суть вопроса : имеется LCD Display Module TFT 3.95 inch на контроллере ili9488, вот такой
Читать тач, писать/рисовать на нем я уже умею, нет проблем. А вот научиться программно управлять подсветкой - ну никак ((.
֑֖Поделитесь пожалуста библиотекой и скетчем, а то я уже 3 дня сижу и не могу запустить данный дисплей֭
на пятой вроде странице была сборка готовая под этот экран. У меня завелось.
Читать тач, писать/рисовать на нем я уже умею, нет проблем. А вот научиться программно управлять подсветкой - ну никак ((.
֑֖Поделитесь пожалуста библиотекой и скетчем, а то я уже 3 дня сижу и не могу запустить данный дисплей֭
Если я правильно понял вы запустили дисплей и благополучно залили стандартные скетчи. Что касается управления подсветкой, на данном шилде без скальпеля не получится. Подсветка питается от 5В ардуино через стабилизатор 3.3В.
romeo_b, у меня завелся вот с этими библиотеками : https://www.dropbox.com/s/5j2ned9tmfl7rhq/ILI9488_Libs.zip?dl=0
С подсветкой так ничего и не получилось.
Спасибо
счас попробую еще раз
кажись уже такую ставил
скорее всего не работает дисплей
Вижу единственное решение с подсветкой.
1. Выпаеввем на шилде стаб 3.3В
2. делаем платку на нем с ключем
3. добавляем в скетч PINOUT и функцию ON/OFF BL
4. подключаем собранную схему на контакты удаленного стабилизатора, базу ключа на PINOUT
Радуемся включая и отключая подсветку. Другого способа не вижу.
Немного поправил библиотеку, теперь при работе с ili9488 можно явно указывать чип, раньше надо было указывать ili9341, с целью избавления от мерцания, при инициализации ili9488 устанавливается частота фрэйма 100 Гц. Ну и добавил функции ухода в слип и отключения чипа, а такжк выхода из этих режимов. Это может пригодится при реализации отключения подсветки и для скрытия процесса отрисовки экрана. Правда при этом изображение будет исчезать на N time требуемое на отрисовку фрэйма. На stm32 72МГц это при 320х480 около 0.5 - 0.6 сек, очень заметно для глаза, буду дальше совершенствовать данную либу. Вижу один вариант, создавать фрэйм в буфере RAM а потом перегонять его в TFT. Но это совсем другая история.
http://178.130.34.198/adafruit/adafruit_correct.rar
Товарищи, кто-нить знает как перевернуть изображение вверх ногами? Просто у моего дисплея углы обзора такие, что при расположении на стене на уровне груди ничо видно не будет. Только если его на высоте двух метров поставить - будет нормально видно ;)
Товарищи, кто-нить знает как перевернуть изображение вверх ногами? Просто у моего дисплея углы обзора такие, что при расположении на стене на уровне груди ничо видно не будет. Только если его на высоте двух метров поставить - будет нормально видно ;)
Ищи в файле инициализации дисплея регистр Memory Access Control по адресу 0x36 (если про ILI9488 идет речь) старшие три бита MY, MX, MV отвечают за направление отрисовки графики из памяти на дисплей. Я сам не ардуинщик, но библиотеками не брезгую попользоваться. Возможно в библиотеке есть какая-нибудь функция Rotation, она наверняка эти биты меняет и в дальнейшем во всех функциях отрисовки графики учитываются все направления.
там картинка с регистра 36h
http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie
в используемой инициализации ищите LCD_Write_COM(0x36); и изменяете после него в DATA
и перебираете биты Mirror.. 0 и 1 по всякому , пока не получите как вы хотите.
Есть еще системный регистр, можно в нём, но в 36h проще
diger67, прошу помощи с STM32 и ILI9488 по FSMC. У Вас же есть код инициализации?)
alexmanson, slider Спасибо большое, я попробую!
Всем доброго времени суток.Подскажите невежде что за экран мне достался и можно ли его прикрутить к меге 2560?http://ru.aliexpress.com/item/free-shipping-3-2-TFT-LCD-Module-Display-Touch-Panel-PCB-adapter-wholesale-price/580034355.html
нормальный экран. прикрутить можно.
уже обсуждалось в этой ветке (1-2страницы ранее). далее продолжено в отдельной ветке http://arduino.ru/forum/apparatnye-voprosy/kak-podklyuchit-displei-32-lcd-module
У меня этот экран должен быть подключен через такой шилд http://ru.aliexpress.com/item/Free-shipping-TFT-3-2-inch-Mega-Touch-LCD-Expansion-Board-Shield-IC-partial-pressure-for/32263354417.html?spm=2114.10010208.100010.1.yvvgUF
Друзья, товарищи помогите. Приобрел давно экранчик 3,5 от mcufriend (ILI9327 8 bit), подключил к arduino nano, скачал эту библиотеку https://github.com/dgolda/UTFT, тест отробатывает как надо. Sd слот пока не перепаял использую отдельный модуль. Искал как загружать изображения с sd карты нашел только одно решение http://blog.lincomatic.com/?p=1074 которое использует библиотеку sd, а не tiny_fat, взял у них библиотеку Utft от Uctronics, вытащил из нее кусок
Так вот у них дисплей 320х240, а у меня 400х240 я сделал какртинку 400х240, пробовал менять цикл
for(i = 0; i < 320; i++) на for(i = 0; i < 400; i++),
а картинка выводится но на i = 320 начинает выводить каринку с начала экрана.
В чем может быть проблема Arduino ide 1.6.7
Это пример работы с ili9341, мало отличается от ili9488. Надо только поменять в инциализации FSMC разрядность шины на 8 bit и добавить функцию записи пикселя. Пример написан для работы по 16 bit шине. Тут только основной файл иницыализации, дополнительные файлы не выложены. Прошу не пинать за примеры к stm, не знаю к сожалению или к радости, но stm портируют в среду arduino и все больше библиотек переносят на это ядро. Впрочем так же как и на ядро ARM Atmel.
Нет, распиновка не совподает. Надо подключать методом жгута, желательно использовать провода наименьшей длинны. Данный шилд отлично работает. запускал его на stm32.
Спасибо, буду пробовать)
картинка выводится но на i = 320 начинает выводить каринку с начала экрана.
В чем может быть проблема Arduino ide 1.6.7
Проблема в том, что не совпадает размер "окна" отрисовки и размер массива, который посылается в дисплей. Ищи в файле инициализации размер этого окна, и правь под свои 400 на 240, что-то типа этого
получается, что, как только закончился 319-ый стобец, начиная с нулевого, оставшиеся элементы массива пишутся с начала "окна"
Открыл даташит прошел по инициализации:
нашел вчем проблема , закоментировал:
в UTFT.h проблема решилась. Спасибо.
Я думаю этот вопрос тоже подходит в эту ветку, чем теперь конвертировать картинки в bmp 16bit, есть кортинка которая примером шла она открывается коректно, что то другое при конвертации с измененным цветом идет. Пробовал Gimp, Irfan.
Я думаю этот вопрос тоже подходит в эту ветку, чем теперь конвертировать картинки в bmp 16bit, есть кортинка которая примером шла она открывается коректно, что то другое при конвертации с измененным цветом идет. Пробовал Gimp, Irfan.
Я обычным Paint-ом конвертил.
Попробывал увеличить скорость отрисовки может кому будет полезно, было 6558 ms, стало 1827 ms.
(Используется библиотека SD) В Utft.cpp
сам скетч
Улучшения, предложения?
Попробывал увеличить скорость отрисовки может кому будет полезно, было 6558 ms, стало 1827 ms.
(Используется библиотека SD) В Utft.cpp
сам скетч
Улучшения, предложения?
Раз уж вы в этом разобрались, черкнули бы пояснения, коментирования
Объясните пожалуйста конструкцию
Я использую дисплей от mcufriend вот такой:
он подключен к arduino nano.
arduino <---> lcd
d8-d8
d9-d9
d2-d10
d3-d11
d4-d12
d5-d13
d6-d14
d7-d15
a5-RS
a4-wr
a3-cs
a2-rst
тоесть 8 бит, ну и питание. В первонвачальном коде функцией inFile.read(); читалось по одному байту я добавил чтение блоками по 120 байт(эсли экран 400х240 то 2 буфера это столбик) что значительно ускоряет процесс, пробовал и 240 байт (тоесть один столбик за один раз, но визуально ни чего не поменялось). В библиотеке которую я использовал в файле UTFT\hardware\avr\HW_ATmega328P.h непосредственно за передачу информации контроллеру дисплея отвечает следующий кусок :
тоесть уменя не используется переменная VH. В одной из библиотек которую я брал с этой ветки использовался тот код что закоментирован тоесть используется и VH и VL , но у меня это приводило к не правильному отображению цвета. Так что возможно у кого то у кого она используется, код будет работать не коректно.
Кто понимает что происходит в VL = ((VL & 0xE0) << 1) | (VL & 0x1F); обьясните пожалуйста.
.............
он подключен к arduino nano.
arduino <---> lcd
d8-d8
d9-d9
d2-d10
d3-d11
d4-d12
d5-d13
d6-d14
d7-d15
...........
если не используете аппаратный UART (пины D0 D1 ардуино , и сериал монитор), то чтобы не использовать тратящую время припарку от неправильного подключения
подключите правильно как в документации UTFT UTFT_Requirements.pdf
arduino <---> lcd
do-d8
d1-d9
d2-d10
d3-d11
d4-d12
d5-d13
d6-d14
d7-d15
используйте оригинальную UTFT . и вспомните в memorysaver.h оставить закоментированными только ваш ili9327 . Строчку инициализации с использовании его в 8ми битном режиме. Т.о. скорость вывода ещё вырастет, из-за того что ему не надо перераспределять байт по разным портам микроконтроллера , а кидает только в один аппаратный, - пины ардуино D0..7
в файле UTFT\hardware\avr\HW_ATmega328P.h уже будет
romeo_b , экран такой-же как увас , 3,95 .подскажите как подключали к акрдуно уно, какие библиотеки использовали. я новичок пока . научился выводить хело ворлд на двухстрочнике 1602. а этот купил сдуру из-за размера . вот теперь незнаю что с ним делать
Друзья, подскажите и мне... может что пропустил в своих шагах:
1. приобрел "3.95 inch LCD touch screen ili9488" тут . Соединил Мегу и Экран. Могу пины указать, но наверное тут как у всех, соединение без проводов - в впаянные мамы папы, ошибиться как би никак...
2. пробовал пример с UTFT, никак, белый экран...
3. почитал тут всю ветку, тут, пост 545 от diger67 повторил.
4. разрешение продавец на Али пишет 400*270 (!?), хотя в других источниках 480*320
5. в Adafruit_TFTLCD.cpp ставил:
и
#define TFTWIDTH 240
#define TFTHEIGHT 400
и
#define TFTWIDTH 320
#define TFTHEIGHT 480
6. В примере c:\Arduino\libraries\Adafruit_TFTLCD\examples\graphicstest
в 115 строку подставлял:
//identifier = 0x9341;
//identifier = 0x9488;
identifier = 0x9327;
во всех попытках - нет результата - просто белый экран. В мониторе порта только вижу меняется:
...
Voltage:1.49 pH value: 5.96
Voltage:1.49 pH value: 5.96
Voltage:1.49 pH value: 5.97
...
7. Попробовал пример от diger67, LCD_ID_Reader, выдаёт:
ID может быть 0x0404, а может 0x0C0C... Эти адреса тоже подставлял в 115строку, как то тоже ничего (((
попробуйте эту библиотеку
http://forum.arduino.cc/index.php?action=dlattach;topic=366304.0;attach=150756
попробуйте эту библиотеку
http://forum.arduino.cc/index.php?action=dlattach;topic=366304.0;attach=150756
Валерий, спасибо, тоже, буквально минуту назад, в ютубе нашел линк на нее, и читаю после этого ваш ответ с ней, сейчас попробую с этой библиотекой! Отпишу в случае положительного ответа сегодня, а не получится, уже на завтра оставлю опыты.
http://www.youtube.com/watch?v=VnRVbxQESnY
Нет, не работает, завтра буду пытаться снова, а пока из примера выдаёт вот что:
Эх, похоже это не для Mega:
The library is designed for MCUFRIEND UNO shields.
ваш продаван пишет что там контроллер: R61581 а не ili9488
ваш продаван пишет что там контроллер: R61581 а не ili9488
Валерий, спасибо за помощь!!! На самом экране написано ili9488, ну я и давай гуглить, да темы читать. Точно у продавца R61581. Взял сейчас пример UTFT_Demo_480x320 , ничего не правя, залил и заработало!!!!!!!!!!!
Есть правда косяки - текст из этой демки зеркальный, и на пикселей 20 смещенно всё, но это уже другие вопросы, буду читать и доходить!
Продавец кстати мегабыстрый!!! Смотрите, заказал 2 января, отправил он наверное 3го, письмо было почти сразу, 15го посылка была уже на местном моём почтампе (РФ, центр.часть)! Получил сегодня. Я подготовился ждать месяц, а тут за 2 недели! Причем, одновременно делал заказы - так эти параллельные заказы они только отправили мне из Китая на самый последний день - десятый. Ну это офтоп, по доставке прошу не отвечать, может просто кому то поможет. Аппараты у него проверенные, и самые дешевые (были на 2января точно) и приходят быстро до дома.
Немного оффтоп, но думаю будет интересно! Посмотрите какой прирост производительности! http://gizmogarage.net/c-vs-assembler-performance-on-avr/
diger67, не могли бы вы опубликовать проект для STM32 полностью? Что-то я не врубаюсь)
diger67, не могли бы вы опубликовать проект для STM32 полностью? Что-то я не врубаюсь)
Проектом это назвать сложно. Скорее это попытка портировать библиотеки от arduino на платформу stm32. При этом приходится трансформировать из C++ в С. Все это осложняется тем, что нет наследования классов, bool в чистом виде и многоо другого. Я не использую среду ардуино, использую Keil и CooCox. Соберу на досуге в архив и залью на свой серв, сможете скачать.
P.S. Дальнейшие экспирименты с DMA не дали положительных результатов. Возможности этой функции ограничены.
Спасибо.
P.S. Для STM32 пользуюсь Keil-MDK 4.......
http://178.130.34.198/stm32/tft_fsmc.rar
Сдесь сборка для работы с tft ili9341 + tuoch(xpt2046) процессор stm32f103vet, среда CooCox, в принципе создав проек в Keil и перенеся все файлы с и h должно собраться.. Для работы с stm32f4 надо подправить инициализацию перефирии в соответствии с библиотеками на эту серию.
Приветствую, уважаемые.
Прикупил TFT 3,5" с тач скрином для UNO. Вот тут покупал: http://www.ebay.com/itm/111687922300?_trksid=p2057872.m2749.l2649&ssPage...
В названии товара написано что должен был быть 3,6" (реально прислали 3,5"), но это не важно сейчас. В описании товара написано контроллер ili9488, ниже идет инициализация для ili9327. На присланной железяке написано ili9486. Продавец про контроллер ничего сказать не может, предлагает компенсировать четверть стОимости. Чтение регистра из дисплея дало C0C0 (или 0C0C, сейчас точно не помню). Вот фото моего экрана: http://s10.postimg.org/cqx93eezt/TFT.jpg
Я пробовал использовать инициализацию для всех трех перечисленных контроллеров. Ничего не меняется.
Вот то, что показывает экран: http://s10.postimg.org/ufozv0qqx/pictures.jpg
Изображение в формате BMP 24-бита, читается с SD-карты. Графический тест так же проходит, все рисуется, но с цветом полная лажа.
Использую IDE1.6.6, Adafruit GFX Library version=1.1.4 и TFTLCD-Library-master от этих же фруктов.
Вот такие инициализации я использовал:
Игрался со значениями регистров 0xB4, 0x36 и 0x3A - лучше не стало.
Подключение дисплея к Arduino Nano:
LCD_D0 connects to digital pin 8
LCD_D1 connects to digital pin 9
LCD_D2 connects to digital pin 2
LCD_D3 connects to digital pin 3
LCD_D4 connects to digital pin 4
LCD_D5 connects to digital pin 5
LCD_D6 connects to digital pin 6
LCD_D7 connects to digital pin 7
LCD_CS A3
LCD_RS A2
LCD_WR A1
LCD_RD A0
LCD_RST A4
С библиотекой UTFT вообще ничего не получается, только белый экран и все.
Очень надеюсь на вашу помощь ибо мои изыскания в решении проблемы ни к чему не привели :(
Посмотрите в даташите какой регистр отвечает за иверсию цветов в контроллере установленном на шилде. Там же посмотрите регистр и комманду возвращающую ID. Комманда 0хD3, редактируем функцию readID, пробуем прочитать ID
Можно добавить и 0x9488. Но просто добавить инициализацию недостаточно.
Можно без if/else if, просто ретурнить значение id, не так ли?
Это врят ли, каждый чип возвращает свое значение.
Тогда так:
...
Можно и так, но думаю, что код в прошивке будет по размеру одинаков.
Но смотрится-то красивее:) хотя, на вкус и цвет все йломастеры разные.
Кстати, удалось запустить на STM32 экран на ST7735 1.44' . Аппаратный SPI1 и немного магии)
Я Закоментировал все эти проверки и принудительно прописывал id. А дальше уже запускается инициализация добавленная мной. За инверсию отвечает команда 0х20h-выключает, 0х21h-включает. Инициализацию для 9486 я брал из библиотеки utft и там передается еще один параметр. А по даташиту команда без параметров. И еще, в даташите я не нашел описние параметров отвечающих за positive gamma control (0хЕ0) и negative gamma correction (0хЕ1). Их аж 15 штук, а за что отвечают не понятно. Может в них дело?
Не могу найти таблицу регистров в даташите :( Ткните носом , пожалуйста.
Ойой...боюсь, на телефоне не откроют даташит) ищите что-то типа Register summary. В 9488'ском даташите легко находится)
Поздравляю. Один минус, уж больно медленно передается по SPI, даже при скорости 24 мбит. Самый реальный вариант это 16 bit 8080 протокол.
Есть даташит с разными вариантами инициализации 9486. Скину на свой серв выложу ссылку.
Полное заполнение экрана цветом -около 0.2 сек, наверное...это с прескалером 2.
Для 8080 нужен FSMC, а я с ним только начинаю)