Подключение дисплея от планшета к ардуино
Я так понял, что ты не читал на форуме, что я обозначаю цифрами 0-3.
Это шина управления. CS, CD, WR, RD или RD, WR, CD, CS.
Направление зависит от контроллера дисплея. У одних так, у других наоборот.
Поэтому читать нужно 2 варианта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Теперь про 1313 и 9393. Скорее всего плохой контакт. Эти числа сейчас в 16-тиричном коде. Если их перевести в двоичный,
то получишь 13 = 0001 0011, а 93 = 1001 0011. Видишь, что они отличаются первым сигналом. Этот сигнал соответственно D7.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Теперь о шине данных. В контроллерах дисплеев применяется много шин данных. Мы используем шину 8080.
Переключается битность шины сигналами ID. Обычно на шлейфах стоят резисторы для переключения битности.
Твой дисплей был настроен на 16 бит. Резистор стоял в 1 позиции и был подключен +3.3В.
По идее, если его переключить в 3 позицию, влево, на GND, то битность должна переключиться на 8 бит.
Если в среднюю позицию, то можно сигналом ID менять шину по усмотрению.
Похоже он не переключился в 8 битный режим. А в 16-тиричном, ты читаешь только младший бит.
Исходя из цифры 93, может быть 2 варианта. 9327 или 7793. Можешь попробывать принудительно запустить дисплей с инициализациями для этих контроллеров.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я так понял, что ты не читал на форуме, что я обозначаю цифрами 0-3.
Это шина управления. CS, CD, WR, RD или RD, WR, CD, CS.
Направление зависит от контроллера дисплея. У одних так, у других наоборот.
Поэтому читать нужно 2 варианта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Исходя из цифры 93, может быть 2 варианта. 9327 или 7793. Можешь попробывать принудительно запустить дисплей с инициализациями для этих контроллеров.
Да ща попробую библиотеки .. если не выйдет переставлю резистор в левое положение и снова читалкой и библиотеками.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Попробовал 9327 RD, WR, CD, CS менял по разному .. перепаял резистор на крайнее левое положение . читалка всё ровно 9393 даёт .. инит 7793 не погу найти такую.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Когда резистор был в правом положении, ты 0-3 крутил?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Когда резистор был в правом положении, ты 0-3 крутил?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
В каком регистре читает ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
В каком регистре читает ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я имел ввиду регистре.
Выложи полный отчет. Под как его спряч.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я имел ввиду регистре.
Выложи полный отчет. Под как его спряч.
Loading LCD registers.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Нужно залить читалку 5.3 Она выдает отчет по регистрам.
Я с ардуиной не работаю. Почитай на форуме. Отчеты на каждой странице есть. Они длинные и
считываются регистры с нолевого и до FF. Некоторые регистры по нескольку раз.
Чем ты читаешь контроллер ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Unknown LCD driver chip: 9393
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Прочитал один раз и перестал отвечать на запросы . Видимо сгорел ( .
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Как подключал? Спалить можно только переполюсовкой или превышением питания 3.3В.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Попался дисплей модели A080SN01, не помню от чего. Даташит на него нашел, но не уверен есть ли смысл с ним ковыряться и пробовать подключить к микроконтроллеру.
Может быть, кто-то сталкивался с такими.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
К какому микроконтроллеру?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Насколько мне известно, данный форум посвящен отладочным платам ардуино с мк атмеги, то логично, что про атмегу и идет речь. Но если Вы чтото подскажете относительно ARM, а конкретно по stm32, то так же буду благодарен вам (хотя форум не об этом). Либо же знаете какой дрйвер подойдет для запуска дислея с последующей возможностью подключать его к мк не использую видео входы (VGA, AV, HDMI. )
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ардуино не микроконтроллер, готовая плата со своим языком программирования. Поэтому и спросил.
Насчет подключения к микроконтроллеру. В даташите указана частота регенерации пикселя. 40 Мгц.
Исходя из этой частоты подбирай микроконтроллер. Если смотреть в сторону STM, то у них есть
камни со встроенной шиной TFT. Про ардуину и атмеги, Хмеги и им подобные думаю понятно.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Еще немного инфы. Посмотри в сторону контроллеров FTDI. Через них можно к ардуине подключать.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Так я и называю ардуино - отладочной платой, а не мк.
А правильно ли я понимаю, что управление производится по последовательной шине, а передача цвета по параллельной?
В даташите втретил аббревиатуры MSB и LSB, правильно ли я понял, что это старший и младший биты (они вроде как и обозначены в началах и концах каждого цветового байта)?
Под шиной tft у stm Вы имели в виду перефирию FSMC?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Настройка парметров дисплея обычно по SPI. Про старший и младший бит, все правильно.
FSMC более широкое понятие. Это прямой доступ перефирии контроллера друг к другу,
минуя ядро контроллера. Часто используется для вывода памяти на дисплей. Но это частный случай
использования FSMC. А шина TFT специально заточена под дисплеи.
В свое время нужен был большой дисплей, но с небольшим разрешением. Как раз для подключения к
атмеге. Задумывался над дисплеем, как у тебя, от планшета. Благо сломанные планшеты продают
за копейки. 100-200руб. Идея была простая. Попробывать регенерировать дисплей на пониженной частоте
10-12 Мгц и объединить цвета. Для начала попробывать в черно-белом. Если яркость будет терпимой,
Используйте цветной графический TFT-дисплей для отображения текста и графических элементов: иконок, картинок, графиков, кадров анимации.
Онлайн преобразование изображений по алгоритму "Floyd-Steinberg"
Для Ардуино доступно много разных Ч/Б дисплеев.
Для того что бы получить красивое черно-белое изображение для этих дисплеев, с глубиной цвета всего 1 бит, но в тоже время с имитацией полутонов, как на представленных картинках, то для этого нужно использовать преобразование по алгоритму "Floyd-Steinberg".
Для преобразования можно использовать графические редакторы со встроенной функцией дизеринга Floyd-Steinberg, но ради одной картинки, не все хотят устанавливать тяжелое, платное ПО на свой ПК.
По этой же причине я представляю "Онлайн инструмент для конвертирования изображений по алгоритму Floyd-Steinberg dithering.
Пошаговая инструкция:
1 — Изображение может быть цветным или ч/б с любой глубиной цвета
2 — Сделайте его более контрастным(не обязательно)
3 — Измените его размер до требуемого Вам разрешения
4 — Перетяните подготовленную Вами картинку, поверх изображения на странице конвертера.
5 — Для сохранения изображения, наведите на него курсор и нажмите правую кнопку мышки.
После преобразования этим конвертером, Вы получите изображения как на скриншоте ниже
Для тех, кому лень заниматься конвертированием картинок, есть небольшая галерея уже готовых Ч/Б изображений посмотреть можно здесь
Преобразуем в Си код для Arduino
Для того что бы преобразованное изображение вставить в компилятор с понятным ему форматом, нужно используйте онлайн BIN2HEX конвертер
Спасибо за прочтение. Если у Вас остались вопросы, то можете мне их задать
В предыдущей статье «Работа с TFT дисплеем на ARDUINO DUE» мы подробно рассмотрели команды базовой библиотеки UTFT, предназначенной для работы с TFT дисплеями на Arduino. В этой статье мы рассмотрим Utouch – дополнение к базовой библиотеке, позволяющее работать с сенсорным экраном.
1. Общие сведения
Итак, рассмотрим более подробно дополнение Utouch, предназначенное для работы с сенсорным экраном, которым оборудовано большинство TFT дисплеев.
2. Начало работы с сенсорным экраном
Теперь подгружаем дополнение и создаем объект – сенсорный экран с именем myTouch. В качестве параметров команде инициализации передаются номера пинов, к которым подключены сигналы TCLK, TCS, TDIN, TDOUT и IRQ. Эти параметры следует выяснить у производителя дисплея или шильда, посредством которого дисплей подключен к контроллеру.
Далее необходимо проинициализировать в процедуре void setup() дисплей и сенсорный экран:
void setup() <
myGLCD.InitLCD();
myTouch.InitTouch();
>
Команда InitTouch также, как и команда InitLCD базовой библиотеки, задает вертикальную или горизонтальную ориентацию дисплея. По умолчанию задается горизонтальная ориентация. Все, теперь можно работать с нашим сенсорным экраном. Рассмотрим совсем простой пример, при помощи которого мы сможем убедиться, что сенсорный экран заработал. Скомпилируем следующую программу и загрузим ее в память контроллера:
При старте программы дисплей закрашивается красным цветом. Теперь коснемся экрана в любой точке – и дисплей окрасится в зеленый цвет.
3. Калибровка сенсорного экрана
Прежде чем продолжить работу необходимо выполнить еще одну важную процедуру – калибровку сенсорного экрана. В примерах программ, поставляемых с дополнением Utouch есть один очень важный пример, который называется UTouch_Calibration.
Для выполнения калибровки необходимо открыть этот пример через меню:
«Файл->Примеры->UTouch->Arduino->UTouch_Calibration».
ВНИМАНИЕ! Перед компиляцией не забудьте заменить строки UTFT myGLCD(….) и UTouch myTouch(….) на те, что нужны для нашего дисплея.
Также при калибровке необходимо правильно выбрать параметр TOUCH_ORIENTATION. Информацию о значении этого параметра для используемой модели дисплея можно найти в файле UTouch_Supported_display_modules.pdf, который поставляется вместе с библиотекой Utouch и размещается в ее корневой папке. Для нашего дисплея, например, должно быть установлено значение PORTRAIT, несмотря на то, что сам дисплей ориентирован горизонтально.
ВНИМАНИЕ! Это значение необходимо устанавливать только при калибровке сенсорного экрана, в дальнейшем ориентация экрана должна совпадать с ориентацией дисплейного модуля.
CAL_X 0xBD95ECC8UL
CAL_Y 0x5EBC8000UL
CAL_S 0x0013F1DFUL
Эти три значения необходимо поместить в файл UTouch_CD.h, находящийся в корневой папке дополнения UTouch вместо тех значений CAL_X, CAL_Y и CAL_S, которые там указаны изначально. После этого дисплей будет работать правильно.
Теперь рассмотрим более подробно команды дополнения UTouch:
UTouch – создает базовый класс сенсорного экрана с заданным именем, в качесте параметров указывается способ подключения.
Команда имеет следующий вид:
Utouch _NAME_ (TCLK, TCS, TDIN, TDOUT, IRQ);
где _NAME_ — произвольное имя объекта «сенсорный экран», которое будет использоваться в качестве префикса при любом обращении к нему, а TCLK, TCS, TDIN, TDOUT и IRQ – номера пинов, которым подключаются соответствующие сигналы сенсорного дисплея.
Строка с этой командой размещается в области определений и должна предшествовать любым другим командам UTouch. Заданное имя объекта должно использоваться в качестве префикса ко всем последующим командам UTouch.
InitTouch – инициализирует сенсорный экран и задает горизонтальную или вертикальную ориентацию. В качестве параметра указывается идентификатор ориентации.
Если в этой команде указать PORTRAIT или 0 – будет выбрана вертикальная ориентация, если указать LANDSCAPE или 1 – горизонтальная. Обратите внимание, что ориентация сенсорного экрана должна совпадать с ориентацией дисплея. По умолчанию (без параметров) команда устанавливает горизонтальную ориентацию.
setPrecision – задает точность определения координат точки прикосновения к сенсорному дисплею. В качестве параметра передается идентификатор точности.
Всего определено четыре уровня точности, кодируемые числами от 1 до 4:
PREC_LOW – низкая точность;
PREC_MEDIUM – средняя точность;
PREC_HI – высокая точность;
PREC_EXTREME – очень высокая точность.
Естественно, уровень точности обратно пропорционален времени, затрачиваемому на определение координат. Оптимальным для большинства задач является уровень PREC_MEDIUM. Разработчики не рекомендуют использовать высокую и очень высокую точность для операций, требующих быстрого реагирования.
Разница между уровнями точности может быть проиллюстрирована примером UTouch_QuickDraw, поставляемым вместе с библиотекой UTouch. Эта программа позволяет рисовать на дисплее при помощи сенсорного экрана:
Попробуйте скомпилировать этот пример с различными значениями параметра команды setPrecision и вы сразу же почувствуете разницу.
dataAvailable – функция, возвращающая логическое значение true, eсли в момент ее вызова зафиксировано касание сенсорного экрана. В остальное время – возвращает значение false.
Эта функция может быть использована как для определения момента касания, так и его продолжительности. В нашем первом примере, который мы приводили в разделе 2, конструкция:
if (myTouch.dataAvailable()) <
myGLCD.fillScr(0,255,0);
>else
содержала вызов функции dataAvailable, по срабатыванию которой происходило изменение цвета дисплея, которое сохранялось на все время касания. Рассмотрим еще один пример – измерение времени касания в миллисекундах:
в момент касания сенсорного дисплея программа сохраняет текущее значение функции millis в переменной timeOld. Далее, до тех пор, пока касание сохраняется, программа постоянно обновляет текущее значение millis в переменной timeNew. Как только касание прекратилось – на дисплей выводится разность между этими двумя переменными, которая и будет равна времени касания в миллисекундах.
Итак, теперь мы умеем работать с событием «касание сенсорного экрана», можем определить момент касания, его продолжительность и момент отпускания. Осталось совсем немного – получить координаты точки касания. Для этого предназначены следующие команды:
read – запускает процедуру определения координат точки касания.
Эта команда не передает никаких параметров и не возвращает никакого значения. Ее следует запускать, когда функция dataAvailable принимает значение true. Полученные координаты в «сыром» виде сохраняются во внутренних переменных TP_X и TP_Y. Однако, эти данные не приведены к размерам дисплея и его разрешающей способности, поэтому для получения координат точки касания используются специальные функции getX и getY.
getX – возвращает значение X-координаты точки касания в пикселях относительно левого края дисплея.
getY – возвращает значение Y-координаты точки касания в пикселях относительно верхнего края дисплея.
При условии правильно выполненной калибровки и достаточной точности сенсорного экрана, координаты точки касания должны совпадать с координатами конкретного пикселя. Тип возвращаемых значений для этих двух функций – int.
Следующий пример при касании сенсорного экрана выводит на дисплей координаты точки касания в пикселях и в «сыром» формате:
Теперь для того, чтобы обработать, например, нажатие экранной кнопки достаточно убедиться, что полученные координаты точки касания находятся внутри области, занимаемой на дисплее данной кнопкой. Вот еще один пример:
Программа рисует на дисплее прямоугольник-кнопку. При касании сенсорного экрана в области кнопки на дисплей выводится надпись «PRESSED», при касании за пределами прямоугольника надпись гаснет.
Еще один интересный пример. Эта программа рисует на дисплее прямоугольное «окно» и позволяет изменять его размеры путем перетаскивания нижнего правого угла. Конечно, это не полноценный Drag&Drop но очень похоже:
4. Заключение
Итак, теперь мы умеем пользоваться сенсорным экраном, можем определять момент касания и определять координаты точки касания, работать с простыми элементами управления, отображаемыми на дисплее. В следующей статье мы планируем рассмотреть еще одно дополнение к библиотеке UTFT – UTFT_Buttons, которое позволяет организовать работу с текстовыми и графическими экранными кнопками.
Сейчас почти все устройства управляются сенсорными экранами, и у многих возникает желание оборудовать свой arduino-проект дисплеем и GUI, чтобы даже убеждённые "мышатники" смогли разобраться.
Вывод текста
Прошейте Arduino скетчем приведённым ниже. В результате на экране вы должны увидеть надпись «HelloWorld».
Метод InitLCD – инициализирует дисплей и задает горизонтальную или вертикальную ориентацию. В качестве параметра указывается идентификатор ориентации. Будучи заданной без параметров команда устанавливает горизонтальную ориентацию. Если указать параметр PORTRAIT или 0 – будет выбрана вертикальная ориентация, если указать LANDSCAPE или 1 – горизонтальная.
Метод clrScr – очищает дисплей, стирая всю отображаемую на дисплее информацию и заливая дисплей черным цветом. Параметров не имеет.
Метод print – выводит на дисплей текст, содержимое символьной переменной или объекта типа String. В качестве параметров передаются выводимый текст, координаты верхнего левого угла области печати. Эта команда предназначена для вывода текстовой информации. Координаты печати X и Y задаются в пикселях и могут быть переданы как явно, так и через целочисленные переменные или выражения. Существуют также три предопределенных идентификатора, предназначенные для использования в качестве координаты X :
Встроенные шрифты
Библиотека UTFT позволяет работать с подгружаемыми шрифтами. Шрифты хранятся в виде массивов данных, которые размещаются в отдельных файлах и подключаются к тексту программы. Исходная библиотека включает 3 шрифта.
Выводим текст с разными шрифтами и изменяем их ориентацию на дисплее:
Система кодирования цветов
У каждого метода, отвечающего за цветность, есть три параметра: R,G,B. Допустимые значения для параметров – от 0 до 255. Задавайте уровень каждого цвета вручную или используйте готовые идентификаторы:
Идентификатор цвета | Цвет |
---|---|
VGA_SILVER | серебряный |
VGA_GRAY | серый |
VGA_WHITE | белый |
VGA_MAROON | красно-коричневый |
VGA_RED | красный |
VGA_PURPLE | пурпурный |
VGA_FUCHSIA | фуксия |
VGA_GREEN | зеленый |
VGA_LIME | лайм |
VGA_NAVY | темно-синий |
VGA_BLUE | синий |
VGA_TEAL | сине-зеленый |
VGA_AQUA | морская волна |
Добавим красок в строку «HelloWorld» и выведем её несколько цветных вариантов.
Поворот строки
Еще один опциональный параметр метода print позволяет печатать строки под углом от 0 до 359 градусов. Вращение задается относительно координат печати (левый верхний угол). Нулевое значение угла приводит к горизонтальной печати, далее, по мере увеличения угла, происходит вращение текста по часовой стрелке на заданный угол. Приведенный ниже пример позволяет получить необычный графический эффект:
Методы печати не умеют определять выход за пределы дисплея. Так что за максимальной длиной строки придется следить самостоятельно. Если строка окажется слишком длинной, то ее «хвост» может быть выведен поверх уже напечатанного текста.
Заключение
Надеюсь мой пост был вам полезен, и вы узнали что-то новое, а если у вас возникли вопросы, пишите в комментарии, я постараюсь ответить. Можете написать, что улучшить или подкинуть идею для следующего поста, а на этом я с вами прощаюсь, всем удачи и пока!
Сборка
Резистивный сенсор - далее дисплей - имеет 4 контакта: X1, Y1, X2, Y2. Я вывел шлейфом эти контакты и припаялся к Arduino так:
Схема дисплея
Для индикации нам нужен светодиод, который мы подключаем к любому ШИМ пину, в моём случае 11.
Вывод геометрических фигур
Программно вывод геометрических фигур реализован через методы библиотеки UTFT , которые используют попиксельный вывод, массив 480×320 точек:
Метод | Описание | Параметры |
---|---|---|
drawPixel(x, y) | Вывод пикселя | x, y координата пикселя |
drawLine(x1, y1 ,x2 ,y2) | Вывод линии | x1, y1 и x2, y2 координаты начальной и конечной точки линии |
drawRect(x1, y1 ,x2 ,y2) | Вывод прямоугольника | x1, y1 и x2, y2 координаты двух противоположных углов |
drawFillRect(x1, y1 ,x2 ,y2) | Вывод закрашенного прямоугольника | x1, y1 и x2, y2 координаты двух противоположных углов |
drawCircle(x, y, r) | Вывод окружности | x, y координаты центра окружности, r радиус |
drawfillCircle(x, y, r) | Вывод закрашенной окружности | x, y координаты центра окружности, r радиус |
Выведем их на экран.
Мы рассмотрели команды рисования графических примитивов. Кстати, для библиотеки UTFT существует дополнение UTFT_Geometry, которое позволяет выводить на дисплей треугольники (контурные и заполненные), дуги окружностей и сектора кругов.
Видеообзор
Вывод изображений
Метод drawBitmap позволяет выводить на дисплей специально подготовленное растровое графическое изображение. В качестве параметров задаются координаты верхнего левого угла изображения, его размеры и имя массива, в котором хранится закодированное изображение. Опциональный параметр scale позволяет управлять масштабированием изображения при выводе на дисплей.
Подготовим изображение для вывода на дисплей. Для этого понадобится сделать ряд действий описанных ниже, а также графический редактор GIMP и специальная утилита ImageConverter565 , которая поставляется вместе с библиотекой и располагается в папке Tools.
Далее преобразуйте картинку, так чтоб она вписалась в дисплей, то есть не больше чем 480x320. Советуем менять, только один параметр картинки, а второй откалибруется сам, что бы сохранилась пропорция изображения.
Теперь выставьте размер холста 480x320, при это если всё правильно сделали картинка не должна выходить за пределы холста.
Фоновое изображение размером 480x320 пикселей займет непозволительно много места в памяти контроллера, поэтому мы используем изображение, уменьшенное в 2 раза (240x160 пикселей) и воспользуемся масштабированием. Для этого установите флаг «Reduce size to» и задайте требуемые размеры картинки (240x160).
Если используете AVR-платформу, то в переключателе «Target Board» выберем «AVR», а если ARM-платформу, то — «ARM/PIC32»"
В результате работы конвертера вы получите файл с расширением «.c», в котором будет храниться информация о картинке и закодированное изображение. Поместите этот файл в папку Вашего проекта и объявите в программе массив при помощи спецификатора extern так же, как мы это делали для шрифтов. Только в квадратных скобках обязательно нужно указать размер массива в 16-ричном формате. Это значение находится в первом элементе массива, его можно посмотреть открыв полученный в результате конвертирования файл в любом текстовом редакторе. Не забудьте после копирования и подключения массива закрыть и снова открыть файл программы. При этом файл массива откроется на соседней вкладке рядом с текстом программы.
Теперь выведем изображение на дисплей:
Работа с дисплеем
Подключение и настройка
Общение с TFT-экраном происходит через 16-битный параллельный интерфейс.
Для работы с платформами форм-фактора Arduino mega 2560, вставьте дисплей сверху методом «бутерброда». Для коммуникации микроконтроллером дисплей задействует пины: D25-D28, D32-D40, D44-D53. Остальные пины можно использовать по своему усмотрению.
Для облегчения работы с TFT-экраном используйте библиотеку UTFT, которая включает в себя разнообразные готовые примеры. Библиотека подходит как для работы с контроллерами, основанными на AVR-платформе, так и с контроллерами на ARM-платформе.
Что такое резистивный сенсор и почему нельзя использовать дисплей от смартфона
Резистивный тачскрин состоит резисторов, количество которых определяется АЦП микроконтроллера. В случае Atmega328 это 10 бит - 1024 резистора. Они расположены сеткой:
Сетка из резисторов, пользователь нажал в первую красную точку.
Одним из минусов этих тачскринов является отсутствие мультитача - ведь при замыкании сетки резисторов в нескольких местах результат будет один и не верный.
В телефонах используют другие сенсоры - емкостные. Контроллер дисплея измеряет заряд конденсатора и констатирует факт нажатия. Единственное, из МК AVR умеют работать с этими дисплеями Atmega серии PB. Atmega328PB стоит в одном нашем магазине 400р. Обычная Atmega328P - 360p. Возможно, когда-то расскажу и про этот тип сенсоров. Если вы всё-таки решите купить PB, учтите, что они физически несовместимы с обычной Atmega328P
Код программы
Первое и самое важное - библиотека. Для таких дисплеев их есть великое множество. Например, от Adafruit. Но я рекомендую использовать KrokoTS из-за одной фишки, о которой я расскажу позднее. Для загрузки можно использовать Менеджер Библиотек Arduino IDE, или скачать с GitHub.
Начнём с примеров. Идём "Файл-Примеры-KrokoTS-attach".
Разберём код по блокам, которые выделил автор.
Здесь мы подключаем библиотеку, и задаём пины А0-А3 как контакты дисплея согласно схеме, создаем объект Touch, с которым будем работать далее.
Теперь инициализируем светодиод, и - главное отличие этой библиотеки от других - attachClick(). Вот её синтаксис:
Таким образом, при обнаружении касания в пределах поля xmin-xmax-ymin-ymax будет вызвана функция function. В нашем примере клик в области 1-500-1-900 вызовет on. id должен быть уникальный и в пределах от 0 до MAX_FIELDS, если надо больше, измените MAX_FIELDS. Можно динамически менять область, пересоздавая блок с таким же id.
В loop'е вызываем метод tick, который проверяет касания. Соответственно, лучше не плодить задержки delay. В блоках on/off мы включаем и выключаем светодиод. Вы ведь поставили его? На этом разбор первого примера окончен. Открываем пример getPos. Нас интересует setup.
Тут мы просто инициализируем светодиод. Далее loop.
Используя методы getX/getY мы получаем координаты касания, и условием обрезаем лишнее, ведь ввод у нас - INPUT_PULLUP. Если клик был в верхней части экрана, то мы через тернарный оператор выбираем уровень сигнала - высокий/низкий, а иначе - масштабируем x к значению 0-255, и пишем как ШИМ сигнал
Быстрое и красивое оформление интерфейса на дисплее Nextion
Недавно делал проект на Arduino и дисплее Nextion. В котором нужно было сделать сложный фон для оформления интерфейса управления. Реализовать теми методами про которые я рассказывал в предыдущих уроках про дисплей Nextion достаточно сложно. Поэтому появился повод снять еще одни урок по данной теме.
Создать дизайн данного интерфейса, можно используя всего 2 изображения.
Пассивное состояние кнопки
Активное состояние кнопок.
В рамках урока реализовал вывод и скрытие текста новым методом. Для этого понадобится два дополнительных изображения.
В ближайшее время будет проект по данному уроку. Подпишитесь, чтобы не пропустить!
Исходные материалы для урока можно скачать тут.
Надеюсь моя информация будет полезной.
Спасибо! Всем добра!
Вывод изображений с SD-карты
Если вам не хватает объёма памяти микроконтроллера для хранения изображений, вы можете загружать их прямо с SD-карты. Для облегчения работы c выводом изображений на дисплей вам понадобится скачать и подключить библиотеки UTFT_SdRaw и SdFat.
Метод load библиотеки UTFT_SdRaw позволяет выводить на дисплей специально подготовленное растровое графическое изображение.
В качестве параметров задаются координаты верхнего левого угла изображения, его размеры, имя массива, в котором хранится закодированное изображение. Опциональный параметр scale позволяет управлять масштабированием изображения при выводе на дисплей.
Подготовим изображение для вывода на дисплей. Для этого понадобится:
Утилита ImageConverter565 , которая поставляется вместе с библиотекой UTFT и располагается в директории Tools .
Далее необходимо выполнить некоторый ряд действий:
Теперь выставьте размер холста 480x320, при это если всё правильно сделали картинка не должна выходить за пределы холста.
Если используете AVR-платформу, то в переключателе «Target Board» выберем «AVR», а если ARM-платформу, то — «ARM/PIC32»"
В результате работы конвертера вы получите файл с расширением .raw , в котором будет храниться информация о картинке и закодированное изображение. Скопируйте этот файл на SD-карту. Далее вставьте SD-карту в слот с обратной стороны дисплея и прошейте Arduino скетчем приведённым ниже.
меня вот интересует, можно ли ноунейм камеру от старого кнопочного самсунга как-то подрубить к ардуино/атмеге помощнее/стм32/малине пи/любому другому железу?
Есть дисплеи nexton, вроде это лучшее решение, на сегодня. И память ардуино экономится, и проводов не много.
а вместе с тачем можно подключать?
Я думал что расскажут про то как передаётся изображение на дисплей.
Как работает данный дисплей.
Проделана неплохая работа. Но никакой конкретики не сказано.
Автор, скажи как достать такие же переходники, или хотя бы что писать в алиэкспресс)
Автор, скажите, если я хочу на такой дисплей выводить динамическую картинку - как быстро он её отрисует? В частности, прогресс бар и прочие элементы отображения значений данных.
Есть ли кто-то, кто знает как подключить дисплей от Casio ZS100 (Giantplus 40pin) БЕЗ ТАЧСКРИНА?
home made - про пищу
hand made - про остальное
что ж вы так то(((
В качестве самообразования класс. А вот в качестве практических действий под вопросом большим.. за 50 баксов можно купить мобилку с экраном и делать на ней что хочешь, а нужны гпио - подключай по юсб :)
Необходимые компоненты и цена вопроса
Arduino любой модели - Uno: 400p
Резистивный сенсорный дисплей/панель - мой с разборки: 80p
Компьютер с установленной Arduino IDE
Читайте также: