Цветной графический TFT-экран 480×320 - пример работы с сенсорным экраном
- Войдите на сайт для отправки комментариев
есть такой дисплей
http://remoute.bozon.tk/www/ph2.jpg
3,5" цветной TFT-шилд для Arduino Mega 2560 с разрешением 480х320 пикселей, 262К цветов. Построен на контроллере ILI9486, поддерживает 16-битный интерфейс. Подходит библиотека UTFT. На плате дисплея имеется разъем подключения SD-Card для хранения данных. "Одевается" на контроллер без дополнительных переходников и шилдов.
Дисплей работает так же с Arduino DUE! Строка инициализации (myGLCD(CTE40,38,39,40,41) как и для Arduino Mega2560.
Для работы с этим дисплеем подходит библиотека для контроллера HX8357.
Характеристики:
- Тип дисплея: 3.5" TFT LCD Модуль
- Тип контроллера: ILI9486
- Разрешение: RGB 480х320 пк
- Подсветка: 6 ультра ярких белых светодиода
- Интерфейс: параллельный 16-bit
- Размеры: 89.9 x 54.25 мм
вывод на экран с помощью библиотеки UTFT работает нормально.
однако считывание координат точки касания с Touch Screen не происходит.
ни с помощью библиотеки URTouch.h, ни с помощью TouchScreen.h
в чем может быть проблема?
помогите пожалуйста наладить чтение с сенсорного экрана.
Почитайте про тачскрин, конкретно про резистивный. Почитайте вручную данные с аналоговых входов. Если все нормально - то проблема в библиотеке, иначе - неисправен тачскрин.
я уже много всего перечитал и перепробовал перед тем как открывать тему здесь.
меня смущает то, что во многих прочитанных мною текстах упоминалось о том что при создании в программе объекта тачскрин обычно указываются 5 параметров два из которых должны быть аналоговыми пинами.
дисплей же этот садится на ардуино мега как бутерод и на ардуино мега все посадочные контакты помечены как цифровые. то получается что ни один аналоговый контакт для дисплея не используется?
и что - тач скрин на дисплее физически прсутствует но работать с ним нельзя потому как он не подключен к ардуино?
или скорее всего я чего-то не понимаю и в чем прошу помочь разобраться.
Вы плохо читали - аналоговые пины используются по двойному назначению - пока не читают данные от экрана, читают данные с тачскрина. Так что забейте пока на экран и займитесь тачскрином. Отдельно. Подайте напряжение по оси Х и прочитайте по оси Y. и наоборот.
да нет там аналогового тачскрина, судя по распиновке. Там скорее всего предполагался контроллер тача на SPI типа XPT2046, судя по контакту F_CS. но я не уверен. что он там реально есть.
ТС. поищите библиотеку тача под XPT2046 и попробуйте, вдруг заработает
да нет там аналогового тачскрина, судя по распиновке. Там скорее всего предполагался контроллер тача на SPI типа XPT2046, судя по контакту F_CS. но я не уверен. что он там реально есть.
ТС. поищите библиотеку тача под XPT2046 и попробуйте, вдруг заработает
А я так и не увидел картинку - чёт там блокирует. ТС - а нормально картинку вставить несложно?
попробовал библиотеку XPT2046_Touchscreen.h
этим вот скетчем из примеров
#include <XPT2046_Touchscreen.h>
#include <SPI.h>
#define CS_PIN 8
// MOSI=11, MISO=12, SCK=13
//XPT2046_Touchscreen ts(CS_PIN);
#define TIRQ_PIN 2
//XPT2046_Touchscreen ts(CS_PIN); // Param 2 - NULL - No interrupts
//XPT2046_Touchscreen ts(CS_PIN, 255); // Param 2 - 255 - No interrupts
XPT2046_Touchscreen ts(CS_PIN, TIRQ_PIN); // Param 2 - Touch IRQ Pin - interrupt enabled polling
void setup() {
Serial.begin(57600);
ts.begin();
ts.setRotation(1);
while (!Serial && (millis() <= 1000));
}
void loop() {
if (ts.touched()) {
TS_Point p = ts.getPoint();
Serial.print("Pressure = ");
Serial.print(p.z);
Serial.print(", x = ");
Serial.print(p.x);
Serial.print(", y = ");
Serial.print(p.y);
delay(1000);
Serial.println();
}
}
экран дисплея не трогаю. в монитор порта бесконечно выводятся нулевые значения для X и Y.
когда трогаю экран - ничего не меняется. продолжается вывод нулевых значений.
сорри, но вы в этом коде вовсе ничего не понимаете, да?
вставьте код по правилам. а то я вам даже номера строк указать не могу
#include <XPT2046_Touchscreen.h> #include <SPI.h> #define CS_PIN 8 // MOSI=11, MISO=12, SCK=13 //XPT2046_Touchscreen ts(CS_PIN); #define TIRQ_PIN 2 //XPT2046_Touchscreen ts(CS_PIN); // Param 2 - NULL - No interrupts //XPT2046_Touchscreen ts(CS_PIN, 255); // Param 2 - 255 - No interrupts XPT2046_Touchscreen ts(CS_PIN, TIRQ_PIN); // Param 2 - Touch IRQ Pin - interrupt enabled polling void setup() { Serial.begin(57600); ts.begin(); ts.setRotation(1); while (!Serial && (millis() <= 1000)); } void loop() { if (ts.touched()) { TS_Point p = ts.getPoint(); Serial.print("Pressure = "); Serial.print(p.z); Serial.print(", x = "); Serial.print(p.x); Serial.print(", y = "); Serial.print(p.y); delay(1000); Serial.println(); } }- в строке 04 нужно указать номер пина, к которому подключена ножка дисплея с обозначением F_CS
- строчку 11 закомментируйте, а строчку 07 - наоборот, раскомментируйте
у меня очень поверхностное понимание кода. общий смысл. в пинах и внутренней механике я совершенно не ориентируюсь. мне бы только координаты точки касания получить.
ничего не изменилось. по прежнему все время выводятся нуди для x и y без каки-либо касаний и на касания никакой реакции.
измененный скетч
#include <XPT2046_Touchscreen.h> #include <SPI.h> #define CS_PIN 45 // MOSI=11, MISO=12, SCK=13 XPT2046_Touchscreen ts(CS_PIN); #define TIRQ_PIN 2 //XPT2046_Touchscreen ts(CS_PIN); // Param 2 - NULL - No interrupts //XPT2046_Touchscreen ts(CS_PIN, 255); // Param 2 - 255 - No interrupts //XPT2046_Touchscreen ts(CS_PIN, TIRQ_PIN); // Param 2 - Touch IRQ Pin - interrupt enabled polling void setup() { Serial.begin(57600); ts.begin(); ts.setRotation(1); while (!Serial && (millis() <= 1000)); } void loop() { if (ts.touched()) { TS_Point p = ts.getPoint(); Serial.print("Pressure = "); Serial.print(p.z); Serial.print(", x = "); Serial.print(p.x); Serial.print(", y = "); Serial.print(p.y); delay(1000); Serial.println(); } }может быть можно как-то настроить такой вариант
UTFT работает нормально на вывод
а URTouch как не живая буд-то ее и нет.
может для этой модели дисплея (CTE40) нужно указывать другие цифры при создании объекта myTouch ?
может быть можно как-то настроить такой вариант
Да нихера - Вы проверили срабатывание тачскрина? Нет? - Идите в шопу!
Библиотеки им надо - а ручками? Совсем не могём?
мне много лет. я могу много такого что ты и представить себе не можешь.
сюда я пришел за помощью. не можешь или не хочешь помочь - твое дело.
хамить не нужно. не порть себе карму. помни о смерти.
Если F_CS подключен к 45 то должно быть SPI: 50 (MISO), 51 (MOSI), 52 (SCK) - это так?
MISO 50
MOSI 51
а на 52 написано CLK
SCK такого вообще нету
на 53 есть SD_CS
Это клок, он по разному называться может . SD_CS это выбор флэш карты. Можно кстати проверить - воткнуть флэшку и пример чтения загрузить, если прочитается, то miso mosi сlk воткнуты правильно. Я б ещё для проверки miso mosi накрест воткнул. А вдруг заработает? Плато то какая? Я про ноги Mega 2560 говорил а не платы дисплея. Картинку что куда подключили надо.
немогу я по картинке понять ,какая из ножек должна отвечать за вывод тача из шилда (F_CS ? почему F ?) ,да и U5 не распаена .
ТС. .можете сфоткать шилд с лицевой стороны ? может бы защитную пленку и тач панель путаете?
разве еще выпускают экранные модули с тачем и без подобающего контроллера?
Б-ть, у меня два таких экранчика, НЕТУ там тача, НЕТУ!!!
SD есть, а тача - НЕТУ.
такому решительному высказыванию трудно не поверить.
я вам всем очень благодарен за прояснение картины.
жду новый дисплей.
Тач есть у красненьких, 320х240 которые. Там точно есть
Во во. Специально залез в ящик и посмотрел на микросхемы - XPT2046 распаяна и надпись на ней видно. Тач есть - красненькая.