прошу прощения первый опыт, нашел в интернете нечто подобное .... что за индикатор... хотя бы на одном примере показали... пытаюсь из него переделать под tft
#include <Wire.h> // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
dht11 DHT; // Объявление переменной класса dht11
#define DHT11_PIN 4 // Датчик DHT11 подключен к цифровому пину номер 4
byte degree[8] = // Битовая маска символа градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея
void setup()
{
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
lcd.createChar(1, degree); // Создаем символ под номером 1
}
void loop()
{
// Выводим показания влажности и температуры
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
lcd.print("Humidity = % "); // Выводим текст
lcd.setCursor(11, 0);
lcd.print(DHT.humidity, 1);
lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
lcd.print("Temp = \1C "); // Выводим текст, \1 - значок градуса
lcd.setCursor(11, 1);
lcd.print(DHT.temperature,1);
int chk;
; // Мониторинг ошибок
chk = DHT.read(DHT11_PIN); // Чтение данных
switch (chk){
case DHTLIB_OK:
break;
case DHTLIB_ERROR_CHECKSUM:
lcd.clear();
lcd.print("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
lcd.clear();
lcd.print("Time out error");
break;
default:
lcd.clear();
lcd.print("Unknown error");
break;
}
delay(1000);
}
Первое, надо знать какой чип управляет матрицей TFT. Второе, правильно опредилить протокол обмена, SPI, 16 бит, 8 бит, I2C. Правильно инициализировать индикаор. После этих действий все просто, смотрим функции библиотеки, получаем желаемый рзультат. Смотрите предыдущий...
http://arduinolab.pw/index.php/2015/12/01/meteostanciya-na-arduino/ Стандартная задача решенная в 1000 различных вариантов. Писать надо подробно,что есть,что делал,а не дайте мне готовое решение. Даже в стандартных примерах ардуино ,есть вывод на TFTдисплей (и не только) в нескольких вариантах. Всю тему замусорили,какое отночение это имеет к данной теме,а никакого. Вот берите и делайте. Люди которые хотят вам помочь, вынуждены из вас все тянуть.
У меня такойже. Особо разбираться времени нет, месяц уже лежит :-( Проверял когда получил. Работает и с uno и с due, но либы adafruitgfx. (due подключать проводками по распиновке из примера) определяется как ili9488.
Она дает возможность не сидеть с калькулятором высчитывая позицию первого символо, если надо расположить строку ровно по середине. Проверено пока под C. Будет время добавлю в библиотеку Adafruit С++.
А так для не большой скорости вывода, но с огромным количеством пикселей, для большого количества графиков и инфы, как-то думал сделать "народный" вариант (просто,дёшево,повторяемо),
(cut....)
Ещё видел в инете фабричную платку, сделан видеоконтроллер сразу LVDS на ПЛИС ( Spartan 3E 250K FPGA ) и обычной памяти SRAM . Т.к. амеровский , то будет стоить невероятно дорого. Разрешение 1366x768 , что гораздо лучше шилда Gameduino .
(cut..)
Видел предложение использовать в качестве дисплея планшет под Андроид, инфу с Ардуино гнать через Serial.
Цена 7'' в районе 2000 руб. Ну так там все есть.
Большое спасибо за помощь, дисплей запустился, подошло вот это:
Не могли бы Вы более подробно описать чего надо редактировать , а то у меня точно такой же дисплей( один в один) и ни как не могу запустить. Редактирую файл UTFT\hardware\avr\HW_ATmega1280.h - все равно белый экран. Видимо чего то не доделываю.
Доброго времени суток. На новизну функции вывода строки ориентированной по центру строки TFT не претендую, к томуже это рыба, ее нужно дописывать под ратацию разных чипов. Немного доработал функцию drawChar. Теперь можно переписывать символ в указанной позиции без предварительного зарисовывания его прямоугольникомю Очень удобно при выводе показаний в заданную область, например секунды, вольтметер, частотомер и т.д.. Для Adafruit выглядит это так
void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size)
{
int8_t i, j;
if((x >= _width) || // Clip right
(y >= _height) || // Clip bottom
((x + 6 * size - 1) < 0) || // Clip left
((y + 8 * size - 1) < 0)) // Clip top
return;
if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior
for (i=0; i<6; i++ )
{
uint8_t line;
if (i == 5)
line = 0x0;
else
line = pgm_read_byte(font+(c*5)+i);
for (j = 0; j<8; j++)
{
if (line & 0x1)
{
if (size == 1) // default size
drawPixel(x+i, y+j, color);
else { // big size
fillRect(x+(i*size), y+(j*size), size, size, color);
}
} else if (bg != color) {
if (size == 1) // default size
drawPixel(x+i, y+j, bg);
else { // big size
fillRect(x+i*size, y+j*size, size, size, bg);
}
}//добавленный кусок функции позволяющий напрямую переписывать символ
if (line & 0)
{
if (size == 1)
drawPixel(x+i, y+j, bg);
else { // big size
fillRect(x+(i*size), y+(j*size), size, size, bg);
}
}
line >>= 1;
}
}
}
При этом практически незаметно мерцание текста, естественно перед этим нужно использовать функцию установки цвета текста и фона, так как в библиотеке Adafruit их две. С одним и двумя аргументами.
void Adafruit_GFX::setTextColor(uint16_t c) {
// For 'transparent' background, we'll set the bg
// to the same as fg instead of using a flag
textcolor = textbgcolor = c;
}
void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) {
textcolor = c;
textbgcolor = b;
}
Отчаянное сообщение!!!Купил таких http://ru.aliexpress.com/item/3-5-inch-TFT-Touch-LCD-Screen-Display-Modu... вот два дисплея. Повелся на отзыв одного из покупателей,о том, что купленные им дисплеи прекрасно работат с библиотекой MCUFRIEND_kbv У меня оба дисплея не работают,пепепробовал все разрешения которые есть в вышеупомянутой библиотке,со всеми примерно одно и то-же.Пробовал кучу других библиотек,ничего не работает блин ((( Мужики,может кто-то как и я стал счастливым обладателем таких дисплеев и смог в них разобраться?Помогите а?Я пробую пока их на ардуино uno
В первую очередь я бы задал такой вопрос продавцу.
Естественно, не по версии конкретной библиотеки для конкретного дисплея, а вообще насчет любой библиотеки, с котоой бы работал дисплей.
Обычно это приводит к желаемому результату. Правда, помнится, продавец дал мне такой линк, который я Файрфоксом за ~15-20 попыток выкачать так и не смог, пришлось прибегнуть к wget'у.
Здравствуйте.Спасибо!Да я писал продавцу,он прислал мне вот такой код
Пытался подредактировать сообщение,но что то не получилось.В общем с его кодом дисплей заливает красным и вверху маленькая строка в несколько пикселей,в которой видно выполнение остальной части программы.Написал продавцу,что код мол не тот,а он пишет что так и должно быть,что заливает все красным а если дальше хотите чтоб дисплей работал пишите свой код.Вот такая печаль беда...Мужики,кто поможет подобрать подходящую рабочую библиотеку,тому отправлю почтой за свой счет один дисплей!
varvik85 , впримере продовца есть основеое массив инициализации. Если вы дружите с програмированием, то все абсолютно просто. Попробуйте из Loop удалить записанную там строку и записать туда что то типа
H_line(160, 0, 480, 0x0000);
V_line(0, 240, 320, 0x0000);
//это отрисует крест белого цвета
Rect(135, 215, 50, 50, 0xFFE0);
//должен отрисоваться квадрат по середине экрана.
Если эти функции сделают то что описано в комментарии, останеться только добавить файл инициализации в UTFT подредактировать некоторые строки в файле UTFT.c и UTFT.h. Вуаля......
P.S. Сам то откуда, если все срастется с выше предложенным примером то и с библой решим.
Вообще-то код должен не заливать красным, а рисовать 1000 прямоугольнико случайных размеров и цвета.
Снимите видео, вышлите продавцу и потребуйте обратно деньги.
Воспользоваться вашим предложением можно только в случае если товар неисправен или не соответствует описанию. Продован предоставил все что необходимо для запуска данных TFT. А то что человек не силен в програмировании это не его проблема.
Воспользоваться вашим предложением можно только в случае если товар неисправен или не соответствует описанию. Продован предоставил все что необходимо для запуска данных TFT. А то что человек не силен в програмировании это не его проблема.
По словам varvik85 экран заливается красным, а согласно коду должны рисоваться разноцветные прямоугольники. Не думаю, что это одно и то же. Но если на экране у varvik85 действительно рисуются цветные прямоугольники, то продавец прав.
По словам varvik85 экран заливается красным........
Правильно, так и должно быть. Об этом говорит строчка
LCD_Clear(0xf800);
Если посмотреть тело данной функции, то видно что она закрашивает экран красным. Просто автор назвал ее Clear , а не FillScreen.... Вот небольшой список дефайнов основных цветов.
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
//#define ROZ 0xFD20
#define ROZ 0xFBE0
#define GRI 0xBDF7
#define NAVY 0x000F
#define DGREEN 0x03E0
#define DCYAN 0x03EF
#define MAROON 0x7800
#define PURPLE 0x780F
#define OLIVE 0x7BE0
#define GREY 0xF7DE
#define LGRAY 0xC618
#define DGRAY 0x7BEF
По словам varvik85 экран заливается красным........
Правильно, так и должно быть. Об этом говорит строчка
LCD_Clear(0xf800);
Я так понимаю вы не глубоко знаете работу TFT.
Я так понимаю, что кто-то невнимательно смотрит на код. В приведённом коде строчка LCD_Clear(0xf800); закомментирована. Т.е. заливать красным ничего не должно, и andriano тут абсолютно прав.
Но я знаю, что если на экран 480х320 вывести 1000 прямоугольников по случайным координатам, то от цвета заливки там уже мало что останется. И, кстати, я сильно сомневаюсь, чтобы этот факт мог как-то измениться от того, если вместо TFT была бы, скажем, CRT.
Я так понимаю, что кто-то невнимательно смотрит на код. В приведённом коде строчка LCD_Clear(0xf800); закомментирована. Т.е. заливать красным ничего не должно, и andriano тут абсолютно прав.
Ну если этой функции нет в секции setup, тогда да. А так Вам надо текст скетча внимательней читать. Специально для пользователей библиотек привел как пример соответствие цветов к 16 бит значению. Там четко видно что 0хF800 - это RЕD т.е. красный.
Ну если этой функции нет в секции setup, тогда да.
Так оттуда она исполняется 1 раз. А из loop - каждый проход по 1000 раз. Останется после этого на экране красный?
Цитата:
Специально для пользователей библиотек привел как пример соответствие цветов к 16 бит значению. Там четко видно что 0хF800 - это RЕD т.е. красный.
Как раз это можно было бы не приводить:
- известно, что обычно такие дисплеи работают с 16-18 битным цветом (с Ардуино, понятное дело, предпочтительнее 16),
- если глубина цвета 16, значит, на красный (равно как и на синой) должно приходиться 5 разрядов,
- 0xF800 - это как раз 5 разрядов с краю, т.е. либо красный, либо синий.
В такой ситуации, мне кажется, уже вполне можно поверть на слово, что это именно красный. Тем более, что альтернативных предположений никто не высказывал.
Проблема в другом: я уже давно просил вопрошающего снять видео. Если бы он это сделал и выложи его где-нибудь в доступном месте, мы бы сейчас не гадали, что там на самом деле твориться на экране, а точно бы знали. Обсуждать далее, не видя, что именно твориться на экране, считаю бесперспективным.
Я так понимаю, что кто-то невнимательно смотрит на код. В приведённом коде строчка LCD_Clear(0xf800); закомментирована. Т.е. заливать красным ничего не должно, и andriano тут абсолютно прав.
Ну если этой функции нет в секции setup, тогда да. А так Вам надо текст скетча внимательней читать. Специально для пользователей библиотек привел как пример соответствие цветов к 16 бит значению. Там четко видно что 0хF800 - это RЕD т.е. красный.
Точняк, в setup вызов проглядел. А за определение цветов - не надо так волноваться, 0xF800 - это не красный, чисто красный - это 0xFF0000, если что. Я знаю, как кодируется RGB, а также, как кодируется ARGB, CMYK и прочие хрени. Вопрос-то поднят не про красный цвет, однако ;)
Включаем логику, если экран заливает красным фоном, значит он проинициализирован правильно, а следовательно исправен. То что рисует 1000 мелких прямоугольников гдето в углу, тоже говорит в пользу исправности TFT. Вывод, читаем даташит на чип TFT, разбираемся с работой библиотек, корректируем под свои нужды. Вот я действительно прилип с последним экранчиком, мало того что пришол с трещиной на таче. так еще и припаяли экран а разводка на шиде через одно место сделана. Продован обещал в течении недели выслать новый. Буду перепаивать на макетку для TFT и запускать от STM , без буфферов. Благо что не привязан к библиотекам и понимаю протокол обмена камня с экранчиком.
Включаем логику, если экран заливает красным фоном, значит он проинициализирован правильно, а следовательно исправен.
Отнюдь.
Возможности заливки экрана одним цветом совершенно недостаточно, чтобы считать его исправным. Проходит инициализацию - да, согласен, но об исправности говорить преждевремемнно.
Цитата:
То что рисует 1000 мелких прямоугольников гдето в углу, тоже говорит в пользу исправности TFT.
Отнюдь.
Прямоугольники согласно коду должны рисоваться в пределах координат от 0 до 598 по каждой из осей, что для экрана 480х320 покрывает всю площадь экрана.
Если все изменения происходят в одном углу, это, наоборот, говорит о неисправности.
andriano, ну не полинитесь, откройте даташит на ili9481. Или просто прочитайте ветку. При неправильной инициализации или несоответствии битов в шине данных он будет работать как фонарик или криво выводить графику. TFT это не OLED. Думаю varvik85 уже разобрался и тихонько молчит, боясь выглядеть нубом. Но это не так, всего знать невозможно. По поводу цветов, вы говорите о кодировке 888, но есть еще и 565 и много других. К стати, если в UTFT добавитьфункцию записи цвета без преобразования 888 в 565 можно немного ускорить вывод скрина, ведь такое преобразование нужно только при выводе BMP.
andriano, ну не полинитесь, откройте даташит на ili9481. Или просто прочитайте ветку. При неправильной инициализации или несоответствии битов в шине данных он будет работать как фонарик или криво выводить графику.
То, что описывает вопрошающий, похоже именно на "криво выводить графику". Т.е. что-то рисовать на маленьком кусочке тогда, как изображение должно охватывать весь экран.
И, не забываем: кроме кривой инициализации есть еще вероятность аппаратной неисправности.
Цитата:
Думаю varvik85 уже разобрался и тихонько молчит, боясь выглядеть нубом.
Вот это прохоже на правду.
Цитата:
По поводу цветов, вы говорите о кодировке 888, но есть еще и 565 и много других.
Вы перед тем, как что-то утверждать, перечитали бы сообщения.
Я прекрасно понял, что Вы говорите о 565 (rrrrrggggggbbbbb), и из моего ответного поста также прекратно видно, что я говорю о ней же. О 888 упомянул DIYMan.
А вы ожидали чего то другого. На этом шилде стоит TFT с ili9488 , а он полностью соместим по регистрам и инициализации с ili9341. Только у первого больше разрешение 320х480.
Привет, вот и пришло время печали. Получил шилд. Раньше с таким вариантом не встречался. Самое интересное что он инициализируется, но потом глухо серенький экран, если его инициализировать как ili9327 8 бит. Если инициализировать как il932x то появляется ели заметное изображение. Шлейф cdx350-29 v1.1, в интернете нашел только с 19 и 26 и походу это индикатор от sony. Но пока победить не удалось. Все прозвонил, распиновка вроде вся правильная. Вывел пин RD, попытался считать ID. Тщетно выдает ерунду.
Здравствуйте.Извините,были проблемы,не до дисплеев было дело .Дигер67 спасибо!Буду пробовать,отпишусь по результатам.Если все получится,то как и обещал,один дисплей отправлю.Еще вопрос,подскажите у кого есть архив который выкладывает бублик в посту http://arduino.ru/forum/apparatnye-voprosy/tft-35-i-arduino?page=1#comme... ? в которой он переделал из 16 бит в 8, у меня не качается,на форуме больше не нашешел дублей.
помогите пожалуйста, как поменять частоту? 0xb1 это я понял, а где его менять? в какой строке?
Смотрим даташит, там есть регистр где можно сменить частоту опроса матрици. О каком TFT идет речь, регистр может отличаться по адресу. Меняется в ините TFT.
в секции setup() не получилось оно компилится, но если вывести значение 2b в порт, то выводит 0x00b
Это как так? т.е. вы через порт ардуине посылаете 2b и она выводит 00b ? . Что-то не встречал такого примера из библиотек . В общем в ваших постах море неизвестных (какой шилд - нет фото,.. библиотека,..., что овечает библиотека на ваш дисп,..как мельчешит видео можно было на ютуб кинуть) , и зачем вам понадобилось frame менять. не обессудьте , про наличие экстрасенсов не буду говорить.
и Не все регистры доступны для чтения , только для записи.
Если сильно мерцает экран - это в большинстве случаев неправильно выбран вами инит к контроллеру который стоит на самом деле в диспе, а не то что заявил продавец. Пробуйте тогда другие иниты. Frame менять приходится в редких случаях, по вашим постам не видать что это ваш случай. И еще , в разных контроллерах он находится в разных регистрах, там уж надо смотреть даташит.
//
James пишет:
нашел в ините,
0x0013, 0x1200, // VDV[4:0] for VCOM amplitude
0x0029, 0x003e, // 04 VCM[5:0] for VCOMH
0x002B, 0xE, // Set Frame Rate
но при изменении, ничего не меняется
при изменении чего на что? это что было или уже что стало? что было и что стало? Что именно не изменяется? по вашему вывод в порт или всё же мерцание?
по даташиту на ili9328 0x0e это последнее значение , попробуйте самое первое.
// James, и еще раз скажу, приложите видео. большие прямоугольники в вашем скетче и должны долго прорисовываться, frame тут не причем, он отвечает за частоту обновления матрицы на стекле из ВидеоОЗУ в контроллере дисплея, а не скорость передачи данных от ардуино к контроллеру дисплея.
Самое медленное в вашем проекте это ардуино, потом уже большие закрашенные прямоугольники, опрос аналогового входа, 8ми битная шина данных дисплея (против 16ти)
можете в ютубе видео просмотреть по дисплеям с ардуинами, как и что там с какой скоростью прорисовывается. и на каком железе stm32, esp8266,...
прошу прощения первый опыт, нашел в интернете нечто подобное .... что за индикатор... хотя бы на одном примере показали... пытаюсь из него переделать под tft
Первое, надо знать какой чип управляет матрицей TFT. Второе, правильно опредилить протокол обмена, SPI, 16 бит, 8 бит, I2C. Правильно инициализировать индикаор. После этих действий все просто, смотрим функции библиотеки, получаем желаемый рзультат. Смотрите предыдущий...
http://arduinolab.pw/index.php/2015/12/01/meteostanciya-na-arduino/ Стандартная задача решенная в 1000 различных вариантов. Писать надо подробно,что есть,что делал,а не дайте мне готовое решение. Даже в стандартных примерах ардуино ,есть вывод на TFTдисплей (и не только) в нескольких вариантах. Всю тему замусорили,какое отночение это имеет к данной теме,а никакого. Вот берите и делайте. Люди которые хотят вам помочь, вынуждены из вас все тянуть.
У меня такойже. Особо разбираться времени нет, месяц уже лежит :-( Проверял когда получил. Работает и с uno и с due, но либы adafruitgfx. (due подключать проводками по распиновке из примера) определяется как ili9488.
Подскажите на дисплее TFT_HX8357 http://ru.aliexpress.com/item/Free-shipping-3-2-inch-TFT-LCD-screen-module-Ultra-HD-320X480-for-Arduino-MEGA-2560/32555113223.html можно сделать русские надписи?
Подскажите на дисплее TFT_HX8357 можно сделать русские надписи?
Маркёром запросто (шутка конечно) :)
Разумеется, на графическом диплее можно нарисовать любые шрифты, в том числе и русские.
Если для отображения на нём вы используете библиотеку Adafruit, то её руссификация описана здесь: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
Извиняюсь, что поднимаю старое. Но нашел в своем посте ошибку. При таком изменении происходит сброс свободных портов.
В этой библе в файле \UTFT\hardware\avr\HW_ATmega328P.h заменил код функциии
скорость отричовки шрифтов увеличилась в 6 - 9 раз
[Arduino uno R3 + TFTLCD 3.5" ili9723 8бит ]
Не уверен, что прав, но с реле работает такое исправление:
Предложите pls код для правильной, маскированной записи порта.
Посидел тут на досуге, посмотрел разные библиотеки для tft и родилась вот такая функция.
Она дает возможность не сидеть с калькулятором высчитывая позицию первого символо, если надо расположить строку ровно по середине. Проверено пока под C. Будет время добавлю в библиотеку Adafruit С++.
Дык, это решение в UTFT уже было, и называется оно CENTER , в любом ихнем примере чуть-ли не первой строчкой вывода строки на экран
myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
...
myGLCD.print("<http://electronics.henningkarlsen.com>", CENTER, 227);
...
[ сделать просто , дёшево и повторяемо.
А так для не большой скорости вывода, но с огромным количеством пикселей, для большого количества графиков и инфы, как-то думал сделать "народный" вариант (просто,дёшево,повторяемо),
(cut....)
Ещё видел в инете фабричную платку, сделан видеоконтроллер сразу LVDS на ПЛИС ( Spartan 3E 250K FPGA ) и обычной памяти SRAM . Т.к. амеровский , то будет стоить невероятно дорого. Разрешение 1366x768 , что гораздо лучше шилда Gameduino .
(cut..)
Видел предложение использовать в качестве дисплея планшет под Андроид, инфу с Ардуино гнать через Serial.
Цена 7'' в районе 2000 руб. Ну так там все есть.
Добрый день!
Кто встречал такого зверя http://www.aliexpress.com/item-img/Free-shipping-LCD-module-TFT-3-5-inch-TFT-LCD-screen-for-Arduino-MEGA2560-Board/1681818932.html?spm=2114.10010208.0.52.HsHwAN
Как его запустить в связке с Arduino mega 2560?
Добрый день!
Кто встречал такого зверя http://www.aliexpress.com/item-img/Free-shipping-LCD-module-TFT-3-5-inch-TFT-LCD-screen-for-Arduino-MEGA2560-Board/1681818932.html?spm=2114.10010208.0.52.HsHwAN
Как его запустить в связке с Arduino mega 2560?
может попастся какой угодно дисп, но это не проблема, возможно это решение в соседней ветке поможет, по разрешению нет а по разводке совпадает : http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256 , если не хотеите греть голову , читайте отзывы на странице товара, иногда народ пишет что им подошло.
Большое спасибо за помощь, дисплей запустился, подошло вот это:
Не могли бы Вы более подробно описать чего надо редактировать , а то у меня точно такой же дисплей( один в один) и ни как не могу запустить. Редактирую файл UTFT\hardware\avr\HW_ATmega1280.h - все равно белый экран. Видимо чего то не доделываю.
Доброго времени суток. На новизну функции вывода строки ориентированной по центру строки TFT не претендую, к томуже это рыба, ее нужно дописывать под ратацию разных чипов. Немного доработал функцию drawChar. Теперь можно переписывать символ в указанной позиции без предварительного зарисовывания его прямоугольникомю Очень удобно при выводе показаний в заданную область, например секунды, вольтметер, частотомер и т.д.. Для Adafruit выглядит это так
При этом практически незаметно мерцание текста, естественно перед этим нужно использовать функцию установки цвета текста и фона, так как в библиотеке Adafruit их две. С одним и двумя аргументами.
Пробуйте, ругайте если что...... :-))
может попастся какой угодно дисп, но это не проблема, возможно это решение в соседней ветке поможет, по разрешению нет а по разводке совпадает : http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie#comment-204256 , если не хотеите греть голову , читайте отзывы на странице товара, иногда народ пишет что им подошло.
Спасибо!
Отчаянное сообщение!!!Купил таких http://ru.aliexpress.com/item/3-5-inch-TFT-Touch-LCD-Screen-Display-Modu... вот два дисплея. Повелся на отзыв одного из покупателей,о том, что купленные им дисплеи прекрасно работат с библиотекой MCUFRIEND_kbv У меня оба дисплея не работают,пепепробовал все разрешения которые есть в вышеупомянутой библиотке,со всеми примерно одно и то-же.Пробовал кучу других библиотек,ничего не работает блин ((( Мужики,может кто-то как и я стал счастливым обладателем таких дисплеев и смог в них разобраться?Помогите а?Я пробую пока их на ардуино uno
В первую очередь я бы задал такой вопрос продавцу.
Естественно, не по версии конкретной библиотеки для конкретного дисплея, а вообще насчет любой библиотеки, с котоой бы работал дисплей.
Обычно это приводит к желаемому результату. Правда, помнится, продавец дал мне такой линк, который я Файрфоксом за ~15-20 попыток выкачать так и не смог, пришлось прибегнуть к wget'у.
Здравствуйте.Спасибо!Да я писал продавцу,он прислал мне вот такой код
Здравствуйте.Спасибо!Да я писал продавцу,он прислал мне вот такой код
И зачем Вы нам об этом сообщаете?
У нас ведь все равно нет Вашего дисплея, чтобы узнать, работает ли присланный продавцом код.
Здравствуйте.Спасибо!Да я писал продавцу,он прислал мне вот такой код
Пытался подредактировать сообщение,но что то не получилось.В общем с его кодом дисплей заливает красным и вверху маленькая строка в несколько пикселей,в которой видно выполнение остальной части программы.Написал продавцу,что код мол не тот,а он пишет что так и должно быть,что заливает все красным а если дальше хотите чтоб дисплей работал пишите свой код.Вот такая печаль беда...Мужики,кто поможет подобрать подходящую рабочую библиотеку,тому отправлю почтой за свой счет один дисплей!
Вообще-то код должен не заливать красным, а рисовать 1000 прямоугольнико случайных размеров и цвета.
Снимите видео, вышлите продавцу и потребуйте обратно деньги.
varvik85 , в примере продовца есть основеое массив инициализации. Если вы дружите с програмированием, то все абсолютно просто. Попробуйте из Loop удалить записанную там строку и записать туда что то типа
Если эти функции сделают то что описано в комментарии, останеться только добавить файл инициализации в UTFT подредактировать некоторые строки в файле UTFT.c и UTFT.h. Вуаля......
P.S. Сам то откуда, если все срастется с выше предложенным примером то и с библой решим.
Вообще-то код должен не заливать красным, а рисовать 1000 прямоугольнико случайных размеров и цвета.
Снимите видео, вышлите продавцу и потребуйте обратно деньги.
Воспользоваться вашим предложением можно только в случае если товар неисправен или не соответствует описанию. Продован предоставил все что необходимо для запуска данных TFT. А то что человек не силен в програмировании это не его проблема.
Воспользоваться вашим предложением можно только в случае если товар неисправен или не соответствует описанию. Продован предоставил все что необходимо для запуска данных TFT. А то что человек не силен в програмировании это не его проблема.
По словам varvik85 экран заливается красным, а согласно коду должны рисоваться разноцветные прямоугольники. Не думаю, что это одно и то же. Но если на экране у varvik85 действительно рисуются цветные прямоугольники, то продавец прав.
По словам varvik85 экран заливается красным........
Правильно, так и должно быть. Об этом говорит строчка
Если посмотреть тело данной функции, то видно что она закрашивает экран красным. Просто автор назвал ее Clear , а не FillScreen.... Вот небольшой список дефайнов основных цветов.
Я так понимаю вы не глубоко знаете работу TFT.
По словам varvik85 экран заливается красным........
Правильно, так и должно быть. Об этом говорит строчка
Я так понимаю вы не глубоко знаете работу TFT.
Я так понимаю, что кто-то невнимательно смотрит на код. В приведённом коде строчка LCD_Clear(0xf800); закомментирована. Т.е. заливать красным ничего не должно, и andriano тут абсолютно прав.
Я так понимаю вы не глубоко знаете работу TFT.
А я ее вообще не знаю.
Но я знаю, что если на экран 480х320 вывести 1000 прямоугольников по случайным координатам, то от цвета заливки там уже мало что останется. И, кстати, я сильно сомневаюсь, чтобы этот факт мог как-то измениться от того, если вместо TFT была бы, скажем, CRT.
Я так понимаю, что кто-то невнимательно смотрит на код. В приведённом коде строчка LCD_Clear(0xf800); закомментирована. Т.е. заливать красным ничего не должно, и andriano тут абсолютно прав.
Ну если этой функции нет в секции setup, тогда да. А так Вам надо текст скетча внимательней читать. Специально для пользователей библиотек привел как пример соответствие цветов к 16 бит значению. Там четко видно что 0хF800 - это RЕD т.е. красный.
Ну если этой функции нет в секции setup, тогда да.
Так оттуда она исполняется 1 раз. А из loop - каждый проход по 1000 раз. Останется после этого на экране красный?
Как раз это можно было бы не приводить:
- известно, что обычно такие дисплеи работают с 16-18 битным цветом (с Ардуино, понятное дело, предпочтительнее 16),
- если глубина цвета 16, значит, на красный (равно как и на синой) должно приходиться 5 разрядов,
- 0xF800 - это как раз 5 разрядов с краю, т.е. либо красный, либо синий.
В такой ситуации, мне кажется, уже вполне можно поверть на слово, что это именно красный. Тем более, что альтернативных предположений никто не высказывал.
Проблема в другом: я уже давно просил вопрошающего снять видео. Если бы он это сделал и выложи его где-нибудь в доступном месте, мы бы сейчас не гадали, что там на самом деле твориться на экране, а точно бы знали. Обсуждать далее, не видя, что именно твориться на экране, считаю бесперспективным.
Я так понимаю, что кто-то невнимательно смотрит на код. В приведённом коде строчка LCD_Clear(0xf800); закомментирована. Т.е. заливать красным ничего не должно, и andriano тут абсолютно прав.
Ну если этой функции нет в секции setup, тогда да. А так Вам надо текст скетча внимательней читать. Специально для пользователей библиотек привел как пример соответствие цветов к 16 бит значению. Там четко видно что 0хF800 - это RЕD т.е. красный.
Точняк, в setup вызов проглядел. А за определение цветов - не надо так волноваться, 0xF800 - это не красный, чисто красный - это 0xFF0000, если что. Я знаю, как кодируется RGB, а также, как кодируется ARGB, CMYK и прочие хрени. Вопрос-то поднят не про красный цвет, однако ;)
Вопрос-то поднят не про красный цвет, однако ;)
Включаем логику, если экран заливает красным фоном, значит он проинициализирован правильно, а следовательно исправен. То что рисует 1000 мелких прямоугольников гдето в углу, тоже говорит в пользу исправности TFT. Вывод, читаем даташит на чип TFT, разбираемся с работой библиотек, корректируем под свои нужды. Вот я действительно прилип с последним экранчиком, мало того что пришол с трещиной на таче. так еще и припаяли экран а разводка на шиде через одно место сделана. Продован обещал в течении недели выслать новый. Буду перепаивать на макетку для TFT и запускать от STM , без буфферов. Благо что не привязан к библиотекам и понимаю протокол обмена камня с экранчиком.
0xF800 - это не красный, чисто красный - это 0xFF0000, если что.
Если что, то красный это (1.0, 0.0, 0.0).
)))))
Включаем логику, если экран заливает красным фоном, значит он проинициализирован правильно, а следовательно исправен.
Отнюдь.
Возможности заливки экрана одним цветом совершенно недостаточно, чтобы считать его исправным. Проходит инициализацию - да, согласен, но об исправности говорить преждевремемнно.
Отнюдь.
Прямоугольники согласно коду должны рисоваться в пределах координат от 0 до 598 по каждой из осей, что для экрана 480х320 покрывает всю площадь экрана.
Если все изменения происходят в одном углу, это, наоборот, говорит о неисправности.
В любом случае, ждем, пока автор выложит видео.
andriano, ну не полинитесь, откройте даташит на ili9481. Или просто прочитайте ветку. При неправильной инициализации или несоответствии битов в шине данных он будет работать как фонарик или криво выводить графику. TFT это не OLED. Думаю varvik85 уже разобрался и тихонько молчит, боясь выглядеть нубом. Но это не так, всего знать невозможно. По поводу цветов, вы говорите о кодировке 888, но есть еще и 565 и много других. К стати, если в UTFT добавитьфункцию записи цвета без преобразования 888 в 565 можно немного ускорить вывод скрина, ведь такое преобразование нужно только при выводе BMP.
andriano, ну не полинитесь, откройте даташит на ili9481. Или просто прочитайте ветку. При неправильной инициализации или несоответствии битов в шине данных он будет работать как фонарик или криво выводить графику.
То, что описывает вопрошающий, похоже именно на "криво выводить графику". Т.е. что-то рисовать на маленьком кусочке тогда, как изображение должно охватывать весь экран.
И, не забываем: кроме кривой инициализации есть еще вероятность аппаратной неисправности.
Вот это прохоже на правду.
Я прекрасно понял, что Вы говорите о 565 (rrrrrggggggbbbbb), и из моего ответного поста также прекратно видно, что я говорю о ней же. О 888 упомянул DIYMan.
Всем привет! Я подключил экран TFTLCD 3.95" к Ардуино Уно и использовал библиотеку Mcufriend_kvb. И у меня получилось!
А вы ожидали чего то другого. На этом шилде стоит TFT с ili9488 , а он полностью соместим по регистрам и инициализации с ili9341. Только у первого больше разрешение 320х480.
Привет, вот и пришло время печали. Получил шилд. Раньше с таким вариантом не встречался. Самое интересное что он инициализируется, но потом глухо серенький экран, если его инициализировать как ili9327 8 бит. Если инициализировать как il932x то появляется ели заметное изображение. Шлейф cdx350-29 v1.1, в интернете нашел только с 19 и 26 и походу это индикатор от sony. Но пока победить не удалось. Все прозвонил, распиновка вроде вся правильная. Вывел пин RD, попытался считать ID. Тщетно выдает ерунду.
Здравствуйте.Извините,были проблемы,не до дисплеев было дело .Дигер67 спасибо!Буду пробовать,отпишусь по результатам.Если все получится,то как и обещал,один дисплей отправлю.Еще вопрос,подскажите у кого есть архив который выкладывает бублик в посту http://arduino.ru/forum/apparatnye-voprosy/tft-35-i-arduino?page=1#comme... ? в которой он переделал из 16 бит в 8, у меня не качается,на форуме больше не нашешел дублей.
помогите пожалуйста, как поменять частоту? 0xb1 это я понял, а где его менять? в какой строке?
.
помогите пожалуйста, как поменять частоту? 0xb1 это я понял, а где его менять? в какой строке?
Смотрим даташит, там есть регистр где можно сменить частоту опроса матрици. О каком TFT идет речь, регистр может отличаться по адресу. Меняется в ините TFT.
ili9328, в ините т.е. в файле в библиотеке?
Frame Rate and Color Control (R2Bh) значит, у меня будет 0x2B. а как выставить? FRS[3;0] 1101 4’hD FRAME Rate 93 вот что хочу.
так правильно?
Frame Rate and Color Control (R2Bh) значит, у меня будет 0x2B. а как выставить? FRS[3;0] 1101 4’hD FRAME Rate 93 вот что хочу.
так правильно?
Ну можно и в секции setup() скетча прописать это, но после инициализации TFT. Иначе запишется то значение которое прописано в ините.
в секции setup() не получилось оно компилится, но если вывести значение 2b в порт, то выводит 0x00b
нашел в ините,
но при изменении, ничего не меняется
.
в секции setup() не получилось оно компилится, но если вывести значение 2b в порт, то выводит 0x00b
Это как так? т.е. вы через порт ардуине посылаете 2b и она выводит 00b ? . Что-то не встречал такого примера из библиотек . В общем в ваших постах море неизвестных (какой шилд - нет фото,.. библиотека,..., что овечает библиотека на ваш дисп,..как мельчешит видео можно было на ютуб кинуть) , и зачем вам понадобилось frame менять. не обессудьте , про наличие экстрасенсов не буду говорить.
и Не все регистры доступны для чтения , только для записи.
Если сильно мерцает экран - это в большинстве случаев неправильно выбран вами инит к контроллеру который стоит на самом деле в диспе, а не то что заявил продавец. Пробуйте тогда другие иниты. Frame менять приходится в редких случаях, по вашим постам не видать что это ваш случай. И еще , в разных контроллерах он находится в разных регистрах, там уж надо смотреть даташит.
//
нашел в ините,
но при изменении, ничего не меняется
при изменении чего на что? это что было или уже что стало? что было и что стало? Что именно не изменяется? по вашему вывод в порт или всё же мерцание?
по даташиту на ili9328 0x0e это последнее значение , попробуйте самое первое.
// James, и еще раз скажу, приложите видео. большие прямоугольники в вашем скетче и должны долго прорисовываться, frame тут не причем, он отвечает за частоту обновления матрицы на стекле из ВидеоОЗУ в контроллере дисплея, а не скорость передачи данных от ардуино к контроллеру дисплея.
Самое медленное в вашем проекте это ардуино, потом уже большие закрашенные прямоугольники, опрос аналогового входа, 8ми битная шина данных дисплея (против 16ти)
можете в ютубе видео просмотреть по дисплеям с ардуинами, как и что там с какой скоростью прорисовывается. и на каком железе stm32, esp8266,...