Компьютерные подсказки - Znamenka24

Жидкокристаллические матрицы мониторов TFT TN и TFT IPS. Всё про матрицы монитора: tn, ips, pls, va, mva, oled Сегодня пользуются tft экраны

Аббревиатуры обычно применяются для обозначения характеристик или специфики. В данном случае в отношении сравнения экранов IPS и TFT возникает ужасная путаница, потому что технология (матрица) IPS – это разновидность матриц TFT и только. Невозможно сравнивать между собой эти 2 технологии.

НО! Есть технология TN-TFT – вот между ней и IPS можно делать выбор и сравнивать. Поэтому, когда мы говорим о том, какой экран лучше: IPS или TFT, мы имеем в виду TFT-экраны в любом случае, но изготовленные на основе разных технологий: TN и IPS.

Кратко о TN-TFT и IPS

TN-TFT – это технология, на основе которой выполнена матрица жидкокристаллического экрана. Здесь кристаллы, когда на их ячейки не подается напряжение, «смотрят» друг на друга под углом 90 градусов. Они располагаются по спирали, и когда на них подается напряжение, то они поворачиваются таким образом, чтобы образовать нужный цвет.

IPS – эта технология отличается тем, что здесь кристаллы располагаются параллельно друг другу в единой плоскости экрана (в первом случае спирально). Все это сложно… на практике отличие между экранами на основе матриц TN и IPS заключается в том, что IPS идеально отображает черный цвет, в результате чего картинка получается более четкой и насыщенной.

Что касается TN-TFT, то качество цветопередачи данной матрицы не внушает доверия. Здесь каждый пиксель может иметь свой собственный оттенок, следовательно, цвета искажаются. IPS-матрицы показывают картинку гораздо лучше, а также более бережно обращаются с цветами. Также IPS позволяют наблюдать за происходящим на экране под большим углом. Если смотреть на экран TN-TFT под таким же углом, то цвета будут искажены настолько, что будет сложно разобрать картинку.

Преимущества TN

Однако матрицы TN-TFT обладают своими преимуществами. Главное из них – более низкая скорость отклика пикселей. IPS нужно больше времени, чтобы весь массив параллельных кристаллов повернуть в нужный угол. Поэтому если речь идет о выборе монитора для игр или для отображения динамических сцен, когда очень важна скорость прорисовки, то лучше всего выбирать именно экраны на основе технологии TN-TFT.

С другой стороны, при обычной работе с ПК разницу во времени отклика пикселей заметить невозможно. Она видна только при просмотре динамических сцен, что часто бывает в боевиках и видеоиграх.

Еще один плюс – низкое потребление электроэнергии. IPS-матрицы энергоемкие, т.к. для поворота массива кристаллов им необходимо большое напряжение. Следовательно, экраны на основе TFT лучше подходят для мобильных гаджетов, где остро стоит вопрос экономии энергии аккумулятора.

И еще – матрицы TN-TFT дешевые. Не найти сегодня монитора (не считая б/у или ЭЛТ модели), который бы был дешевле модели на основе технологии TN. Любое бюджетное устройство электроники с экраном обязательно будет использовать матрицу TN-TFT.

Итак, какой же экран лучше: TFT или IPS:

  1. IPS менее отзывчивы за счет большего времени отклика (плохо для игр и экшн-сцен);
  2. IPS гарантируют практически идеальную цветопередачу и контрастность;
  3. IPS обладает более широким углом обзора;
  4. IPS энергозатратны и потребляют больше электричества;
  5. Они также более дорогие, в то время как TN-TFT дешевые.

Вот, в принципе, и вся разница между данными матрицами. Если учитывать все преимуществ и недостатки, то, конечно же, легко прийти к конкретному выводу: IPS экраны гораздо лучше.


Пожалуйста, оцените статью:

Почти вытеснили с рынка более ранние ЭЛТ-мониторы. Это связано со значительными преимуществами, которые дает новый TFT-экран.

Преимущества TFT-технологий

Одно из главных преимуществ - отсутствие геометрических искажений, с которыми долго, но почти безуспешно боролись разработчики ЭЛТ-экранов. Любой TFT-экран или монитор имеет плоскую прямоугольную форму, что исключает наличие искажений как по углам, так и в центре.

Не менее значимо отсутствие мерцания, которое при частоте выше 85 Гц человеческий глаз не различает, но оно присутствует, создавая значительную нагрузку на глаза. Экран TFT не мерцает. При смене изображения происходит изменение освещенности (путем изменения направления

Технология экрана TFT позволила в значительной мере снизить уровень электромагнитного излучения. Влияние этого вида излучения на человеческий организм еще полностью не изучено, но все ученые сходятся во мнении о том, что оно явно не столь полезно.

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

Еще один плюс - небольшие размеры и малый вес, которыми отличается TFT-экран. Такой монитор можно повесить на стену, тогда он совсем не будет занимать места. Это особенно актуально в ограниченном пространстве или там, где таких устройств скапливается не один десяток. В копилку положительных свойств можно отнести и малое энергопотребление, и незначительное выделение тепла при работе.

Это снова-таки значимо при больших скоплениях мониторов в одном помещении. Небольшое выделение тепла позволяет сэкономить на организации вентиляции и энергозатратах на ее работу, пониженное потребление электроэнергии позволяет экономить на счетах за электричество (TFT-экран потребляет в 3-4 раза меньше электроэнергии, чем его предшественник ЭЛТ).

Экраны, использующие TFT-технологию, более надежны, чем их ЭЛТ-аналоги, которые в работе используют высокие напряжения, что часто приводит к поломкам. Жидкокристаллические технологии используют токи малых величин, что повышает их надежность.

Недостатки TFT-технологий

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

Следующий минус - ограничения по температуре окружающей среды. Но это относится, скорее, к промышленному использованию экранов TFT: их нельзя использовать в горячих цехах и при отрицательных температурах, что, согласитесь, несущественно для домашнего применения.

К недостаткам можно отнести наличие «мертвых» пикселей, которые появляются рано или поздно. Это, конечно, неприятно, но не смертельно. Если из нескольких тысяч точек из строя выйдет несколько штук (именно такими количествами все и исчисляется), то мешать они вам или не будут вообще, или будут очень мало.

Для многих жидкокристаллические дисплеи (LCD) ассоциируются, прежде всего, с плоскими мониторами, "крутыми" телевизорами, ноутбуками, видеокамерами и сотовыми телефонами. Некоторые добавят сюда КПК, электронные игры, банковские автоматы. Но существует еще множество областей, где необходимы дисплеи с высокой яркостью, прочной конструкцией, работающие в широком диапазоне температур.

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

Постоянное развитие технологий в этой области позволило снизить стоимость производства LCD до такого уровня, при котором произошел качественный переход: дорогая экзотика стала обыденным явлением. Важным фактором быстрого распространения ЖК-дисплеев в промышленности стала и простота применения.

В этой статье рассматриваются основные параметры различные типов жидкокристаллических дисплеев, что позволит сделать осознанный и правильный выбор LCD для каждого конкретного применения (метод "побольше и подешевше" практически всегда оказывается слишком дорогим).

Все многообразие ЖК-дисплеев можно разделить на несколько типов в зависимости от технологии производства, конструкции, оптических и электрических характеристик.

Технология

В настоящее время при производстве LCD применяются две технологии (рис.1): пассивная матрица (PMLCD-STN) и активная матрица (AMLCD).

Технологии MIM-LCD и Diode-LCD не получили широкого распространения и поэтому не будем на них тратить время.

Рис. 1. Виды технологий жидкокристаллических дисплеев

STN (Super Twisted Nematic)- матрица, состоящая из ЖК-элементов с изменяемой прозрачностью.

TFT (Thin Film Transistor)- активная матрица, в которой каждый пиксел управляется отдельным транзистором.

По сравнению с пассивной матрицей, TFT LCD имеет более высокую контрастность, насыщенность, меньшее время переключения (нет "хвостов" у движущихся объектов).

Управление яркостью в жидкокристаллическом дисплее основано на поляризации света (курс общей физики): свет поляризуется, проходя через поляризационный фильтр (с определенным углом поляризации). При этом наблюдатель видит только снижение яркости света (почти в 2 раза). Если за этим фильтром поставить еще один такой фильтр, то свет будет полностью поглощаться (угол поляризации второго фильтра перпендикулярен углу поляризации первого) или полностью проходить (углы поляризации совпадают). При плавном изменении угла поляризации второго фильтра интенсивность проходящего света будет также плавно изменяться.

Принцип действия и "бутербродная" структура всех TFT LCD примерно одинакова (рис. 2). Свет от лампы подсветки (неоновая или светодиоды) проходит через первый поляризатор и попадает в слой жидких кристаллов, управляемых тонкопленочным транзистором (TFT). Транзистор создает электрическое поле, которое формирует ориентацию жидких кристаллов. Пройдя такую структуру, свет меняет свою поляризацию и будет - или полностью поглощен вторым поляризационным фильтром (черный экран), или не будет поглощаться (белый), или поглощение будет частичным (цвета спектра). Цвет изображения определяют цветовые фильтры (аналогично электронно-лучевым трубкам, каждый пиксел матрицы состоит из трех субпикселов - красного, зеленого и голубого).


Рис. 2. Структура TFT LCD

Пиксел TFT

Цветные фильтры для красного, зелёного и синего цветов интегрированы в стеклянную основу и расположены близко друг к другу. Это может быть вертикальная полоса, мозаичная структура или дельта-структура (рис. 3). Каждый пиксел (точка) состоит из трёх ячеек указанных цветов (субпикселей). Это означает, что при разрешении m x n активная матрица содержит 3m x n транзисторов и субпикселов. Шаг пиксела (с тремя субпикселами) для 15.1" TFT ЖК-дисплея (1024 x 768 точек) составляет примерно 0.30 мм, а для 18.1" (1280 x 1024 точки)- 0.28 мм. TFT LCD имеют физическое ограничение, которое определяется максимальной площадью экрана. Не ждите разрешения 1280 x 1024 при диагонали 15" и шаге точки 0.297 мм.


Рис. 3. Структура цветного фильтра

На близком расстоянии точки явственно различимы, но это не беда: при формировании цвета используется свойство человеческого глаза смешивать цвета при угле зрения менее 0,03°. На расстоянии 40 см от ЖК-дисплея при шаге между субпикселами 0,1 мм угол зрения составит 0,014° (цвет каждого субпиксела различит только человек с орлиным зрением).

Типы ЖК-дисплеев

TN (Twist Nematic) TFT или TN+Film TFT - первая технология, появившаяся на рынке ЖК-дисплеев, основное достоинство которой& - дешевизна. Недостатки: черный цвет больше похож на темно-серый, что приводит к низкой контрастности изображения, "мертвые" пиксели (при выходе из строя транзистора) очень яркие и заметные.

IPS (In-Pane Switching) (Hitachi) или Super Fine TFT (NEC, 1995 год). Характеризуется наибольшим углом обзора и высокой точностью цветопередачи. Угол обзора расширен до 170°, остальные функции - как у TN+Film (время отклика порядка 25мс), практически идеальный черный цвет. Преимущества: хорошая контрастность, "мертвый" пиксель - черный.

Super IPS (Hitachi), Advansed SFT (производитель - NEC). Достоинства: яркое контрастное изображение, искажения цвета почти незаметны, увеличены углы обзора (до 170° по вертикали и по горизонтали) и обеспечена исключительная четкость.

UA-IPS (Ultra Advanced IPS), UA-SFT (Ultra Advanced SFT) (NEC). Время реакции достаточно для обеспечения минимальных искажений цвета при просмотре экрана под разными углами, повышенная прозрачность панели и расширение цветовой гаммы при достаточно высоком уровне яркости.

MVA (Multi-Domain Vertical Alignment) (Fujitsu).Основное преимущество - наименьшее время реакции и высокая контрастность. Главный недостаток - высокая стоимость.

PVA (Patterned Vertical Alignment) (Samsung). Микроструктурное вертикальное размещение ЖК.

Конструкция

Конструкция жидкокристаллического дисплея определяется расположением слоев в "бутерброде" (включая и светопроводящий слой) и имеет наибольшее значение для качества изображения на экране (в любых условиях: от темного помещения до работы при солнечном свете). В настоящее время используются три основных типа цветных LCD:

  • пропускающий (transmissive), предназначенный в основном для оборудования, работающего в помещении;
  • отражающий (reflective) применяется в калькуляторах и часах;
  • проекционный (projection) используется в ЖК-проекторах.

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

Пропускающий тип дисплея (transmissive) . В этом типе конструкции свет поступает сквозь жидкокристаллическую панель с задней стороны (подсветка) (рис. 4).По этой технологии сделаны большинство ЖК-дисплеев, используемых в ноутбуках и карманных компьютерах. Transmissive LCD имеет высокое качество изображения в помещении и низкое (черный экран) при солнечном свете, т.к. отраженные от поверхности экрана солнечные лучи полностью подавляют свет, излучаемый подсветкой. Эта проблема решается (в настоящее время) двумя способами: увеличением яркости задней подсветки и уменьшением количества отраженного солнечного света.


Рис. 4. Конструкция жидкокристаллического дисплея пропускающего типа

Для работы при дневном освещении в тени необходима лампа подсветки, обеспечивающая 500 кд/м2, при прямом солнечном свете - 1000 кд/м 2 . Яркости в 300 кд/м 2 можно добиться путем предельного увеличения яркости одной лампы CCFL (Cold Cathode Fluorescent Lamp) или добавлением второй лампы, расположенной напротив. Модели жидкокристаллических дисплеев с повышенной яркостью используют от 8 до 16 ламп. Однако увеличение яркости подсветки увеличивает расход энергии батарей (одна лампа подсветки потребляет около 30% энергии, используемой устройством). Следовательно, экраны с повышенной яркостью можно использовать только при наличии внешнего источника питания.

Уменьшение количества отраженного света достигается нанесением антиотражающего покрытия на один или несколько слоев дисплея, заменой стандартного поляризационного слоя на минимально отражающий, добавлением пленок, повышающих яркость и, таким образом, увеличивающих эффективность источника света. В ЖК-дисплеях Fujitsu преобразователь заполняется жидкостью с коэффициентом рефракции, равным коэффициенту рефракции сенсорной панели, что значительно сокращает количество отраженного света (но сильно сказывается на стоимости).

Полупрозрачный тип дисплея (transflective) похож на пропускающий, но у него между слоем жидких кристаллов и подсветкой имеется т. н. частично отражающий слой (рис.5). Он может быть или частично серебряным, или полностью зеркальным со множеством маленьких отверстий. Когда такой экран используется в помещении, он работает аналогично transmissive LCD, в котором часть освещения поглощается отражающим слоем. При дневном освещении солнечный свет отражается от зеркального слоя и освещает слой ЖК, при этом свет проходит жидкие кристаллы дважды (внутрь, а затем наружу). Как следствие, качество изображения при дневном освещении ниже, чем при искусственном освещении в помещении, когда свет проходит LCD один раз.


Рис. 5. Конструкция жидкокристаллического дисплея полупрозрачного типа

Баланс между качеством изображения в помещении и при дневном освещении достигается подбором характеристик пропускающего и отражающего слоев.

Отражающий тип дисплея (reflective) имеет полностью отражающий зеркальный слой. Все освещение (солнечный свет или свет передней подсветки) (рис. 6), проходит сквозь ЖКИ, отражается от зеркального слоя и снова проходит сквозь ЖКИ. В этом случае качество изображения у дисплеев отражающего типа ниже, чем у полупропускающего (так как в обоих случаях используются сходные технологии). В помещении передняя подсветка не так эффективна, как задняя, и, соответственно, качество изображения - ниже.


Рис. 6. Конструкция жидкокристаллического дисплея отражающего типа

Основные параметры жидкокристаллических панелей

Разрешение. Цифровая панель, число пикселей в которой строго соответствует номинальному разрешению, должна корректно и быстро масштабировать изображение. Простой способ проверки качества масштабирования - изменение разрешения (на экране текст, написанный мелким шрифтом). По контурам букв легко заметить качество интерполяции. Качественный алгоритм дает ровные, но немного размытые буквы, тогда как быстрая целочисленная интерполяция обязательно вносит искажения. Быстродействие - второй параметр разрешения (для масштабирования одного кадра требуется время на интерполяцию).

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

Стандарт ISO 13406-2 определяет предельные значения количества дефектных пикселов на миллион. В соответствии с таблицей ЖК-панели делятся на 4 класса.

Таблица 1

Тип 1 - постоянно светящиеся пиксели (белый); Тип 2 - "мертвые" пиксели (черный); Тип 3 - дефектные красные, синие и зеленые субпиксели.

Угол обзора. Максимальный угол обзора определяется как угол, при обзоре с которого контрастность изображения уменьшается в 10 раз. Но в первую очередь при изменении угла обзора от 90(видны искажения цвета. Поэтому, чем больше угол обзора, тем лучше. Различают горизонтальный и вертикальный угол обзора, рекомендуемые минимальные значения - 140 и 120 градусов соответственно (наилучшие углы обзора даёт технология MVA).

Время отклика (инерционность)- время, за которое транзистор успевает изменить пространственную ориентацию молекул жидких кристаллов (чем меньше, тем лучше). Для того чтобы быстро движущиеся объекты не казались смазанными, достаточно времени отклика 25 мс. Этот параметр состоит из двух величин: времени на включение пикселя (come-up time) и времени на выключение (come-down time). Время отклика (точнее, время выключения как наибольшее время, за которое отдельный пиксель максимально изменяет свою яркость) определяет частоту обновления изображения на экране

FPS = 1 с/время отклика.

Яркость - преимущество ЖК-дисплея, которая в среднем в два раза выше показателей ЭЛТ: с увеличением интенсивности лампы подсветки сразу возрастает яркость, а в ЭЛТ необходимо усиливать поток электронов, что приведёт к значительному усложнению её конструкции и повысит электромагнитное излучение. Рекомендуемое значение яркости - не менее 200 кд/м 2 .

Контрастность определяется как соотношение между максимальной и минимальной яркостью. Основная проблема заключается в сложности получения точки чёрного цвета, т.к. лампа подсветки включена постоянно и для получения тёмных тонов используется эффект поляризации. Чёрный цвет зависит от качества перекрытия светового потока подсветки.

ЖК-дисплеи как сенсоры. Снижение стоимости и появление моделей LCD, работающих в жестких условиях эксплуатации, позволило совместить в одном лице (в лице жидкокристаллического дисплея) средство вывода визуальной информации и средство ввода информации (клавиатура). Задача построения такой системы упрощается использованием контроллера последовательного интерфейса, который подключается, с одной стороны, к ЖК-дисплею, а с другой - непосредственно к последовательному порту (СОМ1 - СОМ4) (рис.7). Для управления, декодирования сигналов и подавления "дребезга" (если так можно назвать определение прикосновения) применяется PIC-контроллер (например, IF190 фирмы Data Display), обеспечивающий высокое быстродействие и точность определения точки прикосновения.


Рис. 7. Блок-схема TFT LCD на примере NL6448BC-26-01 дисплея фирмы NEC

Завершим на этом теоретические изыскания и перейдем к реалиям сегодняшнего дня, а точнее - к тому, что имеется сейчас на рынке жидкокристаллических дисплеев. Среди всех изготовителей TFT LCD рассмотрим продукцию NEC, Sharp, Siemens и Samsung. Выбор этих фирм обусловлен

  1. лидерством на рынке ЖК-дисплеев и технологий производства TFT LCD;
  2. доступностью продукции на рынке стран СНГ.

Компания NEC Corporation выпускает жидкокристаллические дисплеи (20% рынка) практически с момента их появления и предлагает не только широкий выбор, но и различные варианты исполнения: стандартный (Standard), специальный (Special) и особый (Specific). Стандартный вариант - компьютеры, офисное оборудование, домашняя электроника, коммуникационные системы и т.п. Специальное исполнение применяется на транспорте (любом: наземном и морском), системах управления движением, системах безопасности, медицинском оборудовании (не связанном с системами жизнеобеспечения). Для систем вооружений, авиации, космического оборудования, систем управления ядерными реакторами, систем жизнеобеспечения и других аналогичных предназначен особый вариант исполнения (понятно, что стоит это недешево).

Перечень выпускаемых ЖК-панелей для промышленного применения (инвертер для лампы подсветки поставляется отдельно) приведен в таблице 2, а блок-схема (на примере 10-дюймового дисплея NL6448BC26-01)- на рис. 8.


Рис. 8. Внешний вид дисплея

Таблица 2. Модели ЖК-панелей фирмы NEC

Модель Размер по диагонали, дюйм Количество пикселей Число цветов Описание
NL8060BC31-17 12,1 800x600 262144 Высокая яркость (350кд/м 2)
NL8060BC31-20 12,1 800x600 262144 Широкий угол обзора
NL10276BC20-04 10,4 1024x768 262144 -
NL8060BC26-17 10,4 800x600 262144 -
NL6448AC33-18A 10,4 640x480 262144 Встроенный инвертор
NL6448AC33-29 10,4 640x480 262144 Высокая яркость, широкий угол обзора, встроенный инвертор
NL6448BC33-46 10,4 640x480 262144 Высокая яркость, широкий угол обзора
NL6448CC33-30W 10,4 640x480 262144 Без подсветки
NL6448BC26-01 8,4 640x480 262144 Высокая яркость (450 кд/м 2)
NL6448BC20-08 6,5 640x480 262144 -
NL10276BC12-02 6,3 1024x768 16, 19M -
NL3224AC35-01 5,5 320x240 Full color
NL3224AC35-06 5,5 320x240 Full color Отдельный вход NTSC/PAL RGB, встроенный инвертор, тонкий
NL3224AC35-10 5,5 320x240 Full color Отдельный вход NTSC/PAL RGB, встроенный инвертор
NL3224AC35-13 5,5 320x240 Full color Отдельный вход NTSC/PAL RGB, встроенный инвертор
NL3224AC35-20 5,5 320x240 262, 144 Высокая яркость (400 кд/м 2)

Сыграла значительную роль в развитии LCD-технологий. Компания Sharp и сейчас находится в числе технологических лидеров. Первый в мире калькулятор CS10A был произведен в 1964 г. именно этой корпорацией. В октябре 1975 г. уже по технологии TN LCD были изготовлены первые компактные цифровые часы. Во второй половине 70-х начался переход от восьмисегментных жидкокристаллических индикаторов к производству матриц с адресацией каждой точки. В 1976 г. Sharp выпустила черно-белый телевизор с диагональю экрана 5,5 дюйма, выполненного на базе LCD-матрицы с разрешением 160х120 пикселов. Краткий перечень продукции - в таблице 3.

Таблица 3. Модели ЖК-панелей фирмы Sharp

Выпускает жидкокристаллические дисплеи с активной матрицей на низкотемпературных поликремниевых тонкопленочных транзисторах. Основные характеристики дисплеев с диагональю 10,5" и 15" приведены в таблице 4. Обратите внимание на диапазон рабочих температур и стойкость к ударам.

Таблица 4. Основные характеристики ЖК-дисплеев фирмы Siemens

Примечания:

I - встроенный инвертор l - в соответствии с требованиями стандарта MIL-STD810

Фирма выпускает жидкокристаллические дисплеи под торговой маркой "Wiseview™". Начав с выпуска 2-дюймовой TFT панели для поддержки Интернета и анимации в мобильных телефонах, Samsung теперь производит гамму дисплеев от 1,8" до 10,4" в сегменте малых и средних TFT LCD, причем некоторые модели предназначены для работы при естественном освещении (таблица 5).

Таблица 5. Основные характеристики ЖК-дисплеев Samsung малых и средних размеров

Примечания:

LED - светодиодная; CCFL - флуоресцентная лампа с холодным катодом;

В дисплеях используется технология PVA.

Выводы.

В настоящее время выбор модели жидкокристаллического дисплея определяется требованиями конкретного применения и в значительно меньшей степени - стоимостью LCD.

Изображение формируется с помощью отдельных элементов, как правило, через систему развёртки. Простые приборы (электронные часы , телефоны, плееры , термометры и пр.) могут иметь монохромный или 2-5 цветный дисплей . Многоцветное изображение формируется с помощью 2008) в большинстве настольных мониторов на основе TN- (и некоторых *VA) матриц, а также во всех дисплеях ноутбуков используются матрицы с 18-битным цветом (6 бит на канал), 24-битность эмулируется мерцанием с дизерингом .

Устройство ЖК-монитора

Субпиксел цветного ЖК-дисплея

Каждый пиксел ЖК-дисплея состоит из слоя молекул между двумя прозрачными электродами , и двух поляризационных фильтров , плоскости поляризации которых (как правило) перпендикулярны. В отсутствие жидких кристаллов свет, пропускаемый первым фильтром, практически полностью блокируется вторым.

Поверхность электродов, контактирующая с жидкими кристаллами, специально обработана для изначальной ориентации молекул в одном направлении. В TN-матрице эти направления взаимно перпендикулярны , поэтому молекулы в отсутствие напряжения выстраиваются в винтовую структуру. Эта структура преломляет свет таким образом, что до второго фильтра плоскость его поляризации поворачивается, и через него свет проходит уже без потерь. Если не считать поглощения первым фильтром половины неполяризованного света - ячейку можно считать прозрачной. Если же к электродам приложено напряжение - молекулы стремятся выстроиться в направлении поля , что искажает винтовую структуру. При этом силы упругости противодействуют этому, и при отключении напряжения молекулы возвращаются в исходное положение. При достаточной величине поля практически все молекулы становятся параллельны, что приводит к непрозрачности структуры. Варьируя напряжение , можно управлять степенью прозрачности. Если постоянное напряжение приложено в течении долгого времени - жидкокристаллическая структура может деградировать из-за миграции ионов. Для решения этой проблемы применяется переменный ток , или изменение полярности поля при каждой адресации ячейки (непрозрачность структуры не зависит от полярности поля). Во всей матрице можно управлять каждой из ячеек индивидуально, но при увеличении их количества это становится трудновыполнимо, так как растёт число требуемых электродов. Поэтому практически везде применяется адресация по строкам и столбцам. Проходящий через ячейки свет может быть естественным - отражённым от подложки(в ЖК-дисплеях без подсветки). Но чаще применяют , кроме независимости от внешнего освещения это также стабилизирует свойства полученного изображения. Таким образом полноценный ЖК-монитор состоит из электроники, обрабатывающей входной видеосигнал, ЖК-матрицы, модуля подсветки, блока питания и корпуса. Именно совокупность этих составляющих определяет свойства монитора в целом, хотя некоторые характеристики важнее других.

Технические характеристики ЖК-монитора

Важнейшие характеристики ЖК-мониторов:

  • Разрешение : Горизонтальный и вертикальный размеры, выраженные в пикселах . В отличие от ЭЛТ-мониторов, ЖК имеют одно, «родное», физическое разрешение, остальные достигаются интерполяцией .

Фрагмент матрицы ЖК монитора (0,78х0,78 мм), увеличеный в 46 раз.

  • Размер точки: расстояние между центрами соседних пикселов. Непосредственно связан с физическим разрешением.
  • Соотношение сторон экрана (формат): Отношение ширины к высоте, например: 5:4, 4:3, 5:3, 8:5, 16:9, 16:10.
  • Видимая диагональ: размер самой панели, измеренный по диагонали. Площадь дисплеев зависит также от формата: монитор с форматом 4:3 имеет большую площадь, чем с форматом 16:9 при одинаковой диагонали.
  • Контрастность : отношение яркостей самой светлой и самой тёмной точек. В некоторых мониторах используется адаптивный уровень подсветки с использованием дополнительных ламп, приведенная для них цифра контрастности (так называемая динамическая) не относится к статическому изображению.
  • Яркость : количество света, излучаемое дисплеем, обычно измеряется в канделах на квадратный метр.
  • Время отклика : минимальное время, необходимое пикселу для изменения своей яркости. Методы измерения неоднозначны.
  • Угол обзора: угол, при котором падение контраста достигает заданного, для разных типов матриц и разными производителями вычисляется по-разному, и часто не подлежит сравнению.
  • Тип матрицы: технология, по которой изготовлен ЖК-дисплей.
  • Входы: (напр, DVI , HDMI и пр.).

Технологии

Часы с ЖКИ-дисплеем

Жидкокристаллические мониторы были разработаны в 1963 году в исследовательском центре Давида Сарнова (David Sarnoff) компании RCA, Принстон, штат Нью-Джерси.

Основные технологии при изготовлении ЖК дисплеев: TN+film, IPS и MVA. Различаются эти технологии геометрией поверхностей, полимера, управляющей пластины и фронтального электрода . Большое значение имеют чистота и тип полимера со свойствами жидких кристаллов, примененный в конкретных разработках.

Время отклика ЖК мониторов, сконструированных по технологии SXRD (англ. Silicon X-tal Reflective Display - кремниевая отражающая жидкокристаллическая матрица), уменьшено до 5 мс. Компании Sony, Sharp и Philips совместно разработали технологию PALC (англ. Plasma Addressed Liquid Crystal - плазменное управление жидкими кристаллами), которая соединила в себе преимущества LCD (яркость и сочность цветов, контрастность) и плазменных панелей (большие углы видимости по горизонту, H, и вертикали, V, высокую скорость обновления). В качестве регулятора яркости в этих дисплеях используются газоразрядные плазменные ячейки, а для цветовой фильтрации применяется ЖК-матрица. Технология PALC позволяет адресовать каждый пиксель дисплея по отдельности, а это означает непревзойденную управляемость и качество изображения.

TN+film (Twisted Nematic + film)

Часть «film» в названии технологии означает дополнительный слой, применяемый для увеличения угла обзора (ориентировочно - от 90° до 150°). В настоящее время приставку «film» часто опускают, называя такие матрицы просто TN. К сожалению, способа улучшения контрастности и времени отклика для панелей TN пока не нашли, причём время отклика у данного типа матриц является на настоящий момент одним из лучших, а вот уровень контрастности - нет.

TN + film - самая простая технология.

Матрица TN + film работает следующим образом: если к субпикселам не прилагается напряжение, жидкие кристаллы (и поляризованный свет, который они пропускают) поворачиваются друг относительно друга на 90° в горизонтальной плоскости в пространстве между двумя пластинами. И так как направление поляризации фильтра на второй пластине составляет угол в 90° с направлением поляризации фильтра на первой пластине, свет проходит через него. Если красные, зеленые и синие субпиксели полностью освещены, на экране образуется белая точка.

К достоинствам технологии можно отнести самое маленькое время отклика среди современных матриц, а также невысокую себестоимость.

IPS (In-Plane Switching)

Технология In-Plane Switching была разработана компаниями Hitachi и NEC и предназначалась для избавления от недостатков TN + film. Однако, хотя с помощью IPS удалось добиться увеличения угла обзора до 170°, а также высокой контрастности и цветопередачи, время отклика осталось на низком уровне.

На настоящий момент матрицы, изготовленные по технологии IPS единственные из ЖК-мониторов, всегда передающие полную глубину цвета RGB - 24 бита, по 8 бит на канал. TN-матрицы почти всегда имеют 6-бит, как и часть MVA.

Если к матрице IPS не приложено напряжение, молекулы жидких кристаллов не поворачиваются. Второй фильтр всегда повернут перпендикулярно первому, и свет через него не проходит. Поэтому отображение черного цвета близко к идеалу. При выходе из строя транзистора «битый» пиксель для панели IPS будет не белым, как для матрицы TN, а черным.

При приложении напряжения молекулы жидких кристаллов поворачиваются перпендикулярно своему начальному положению и пропускают свет.

IPS в настоящее время вытеснено технологией S-IPS (Super-IPS, Hitachi год), которая наследует все преимущества технологии IPS с одновременным уменьшением времени отклика . Но, несмотря на то, что цветность S-IPS панелей приблизилась к обычным мониторам CRT , контрастность все равно остаётся слабым местом. S-IPS активно используется в панелях размером от 20", LG.Philips , NEC остаются единственными производителями панелей по данной технологии.

AS-IPS - технология Advanced Super IPS (Расширенная Супер-IPS), также была разработана корпорацией Hitachi в году. В основном улучшения касались уровня контрастности обычных панелей S-IPS, приблизив его к контрастности S-PVA панелей. AS-IPS также используется в качестве названия для мониторов корпорации LG.Philips.

A-TW-IPS - Advanced True White IPS (Расширенная IPS с настоящим белым), разработано LG.Philips для корпорации году. Усиленная мощность электрического поля позволила добиться ещё больших углов обзора и яркости, а также уменьшить межпиксельное расстояние. Дисплеи на основе AFFS в основном применяются в планшетных ПК , на матрицах производства Hitachi Displays.

*VA (Vertical Alignment)

MVA - Multi-domain Vertical Alignment. Эта технология разработана компанией Fujitsu как компромисс между TN и IPS технологиями. Горизонтальные и вертикальные углы обзора для матриц MVA составляют 160°(на современных моделях мониторов до 176-178 градусов), при этом благодаря использованию технологий ускорения (RTC) эти матрицы не сильно отстают от TN+Film по времени отклика, но значительно превышают характеристики последних по глубине цветов и точности их воспроизведения.

MVA стала наследницей технологии VA, представленной в 1996 году компанией Fujitsu. Жидкие кристаллы матрицы VA при выключенном напряжении выровнены перпендикулярно по отношению ко второму фильтру, то есть не пропускают свет. При приложении напряжения кристаллы поворачиваются на 90°, и на экране появляется светлая точка. Как и в IPS-матрицах, пиксели при отсутствии напряжения не пропускают свет, поэтому при выходе из строя видны как чёрные точки.

Достоинствами технологии MVA являются глубокий черный цвет и отсутствие, как винтовой структуры кристаллов, так и двойного магнитного поля.

Недостатки MVA в сравнении с S-IPS: пропадание деталей в тенях при перпендикулярном взгляде, зависимость цветового баланса изображения от угла зрения, большее время отклика.

Аналогами MVA являются технологии:

  • PVA (Patterned Vertical Alignment ) от Samsung.
  • Super PVA от Samsung.
  • Super MVA от CMO.

Матрицы MVA/PVA считаются компромиссом между TN и IPS, как по стоимости, так и по потребительским качествам.

Преимущества и недостатки

Искажение изображения на ЖК-мониторе при большом угле обзора

Макрофотография типичной жк-матрицы. В центре можно увидеть два дефектных субпикселя (зелёный и синий).

В настоящее время ЖК-мониторы являются основным, бурно развивающимся направлением в технологии мониторов. К их преимуществам можно отнести: малый размер и вес в сравнении с ЭЛТ . У ЖК-мониторов, в отличие от ЭЛТ , нет видимого мерцания, дефектов фокусировки и сведения лучей, помех от магнитных полей, проблем с геометрией изображения и четкостью. Энергопотребление ЖК-мониторов в 2-4 раза меньше, чем у ЭЛТ и плазменных экранов сравнимых размеров. Энергопотребление ЖК мониторов на 95 % определяется мощностью ламп подсветки или светодиодной матрицы подсветки (англ. backlight - задний свет) ЖК-матрицы. Во многих современных (2007) мониторах для настройки пользователем яркости свечения экрана используется широтно-импульсная модуляция ламп подсветки частотой от 150 до 400 и более Герц . Светодиодная подсветка в основном используется в небольших дисплеях, хотя в последние годы она все шире применяется в ноутбуках и даже в настольных мониторах. Несмотря на технические трудности её реализации, она имеет и очевидные преимущества перед флуоресцентными лампами, например более широкий спектр излучения, а значит, и цветовой охват.

С другой стороны, ЖК-мониторы имеют и некоторые недостатки, часто принципиально трудноустранимые, например:

  • В отличие от ЭЛТ, могут отображать чёткое изображение лишь в одном («штатном») разрешении. Остальные достигаются интерполяцией с потерей чёткости. Причем слишком низкие разрешения (например 320x200) вообще не могут быть отображены на многих мониторах.
  • Цветовой охват и точность цветопередачи ниже, чем у плазменных панелей и ЭЛТ соответственно. На многих мониторах есть неустранимая неравномерность передачи яркости (полосы в градиентах).
  • Многие из ЖК-мониторов имеют сравнительно малый контраст и глубину чёрного цвета. Повышение фактического контраста часто связано с простым усилением яркости подсветки, вплоть до некомфортных значений. Широко применяемое глянцевое покрытие матрицы влияет лишь на субъективную контрастность в условиях внешнего освещения.
  • Из-за жёстких требований к постоянной толщине матриц существует проблема неравномерности однородного цвета (неравномерность подсветки).
  • Фактическая скорость смены изображения также остаётся ниже, чем у ЭЛТ и плазменных дисплеев . Технология overdrive решает проблему скорости лишь частично.
  • Зависимость контраста от угла обзора до сих пор остаётся существенным минусом технологии.
  • Массово производимые ЖК-мониторы более уязвимы, чем ЭЛТ. Особенно чувствительна матрица, незащищённая стеклом. При сильном нажатии возможна необратимая деградация. Также существует проблема дефектных пикселей .
  • Вопреки расхожему мнению пикселы ЖК-мониторов деградируют, хотя скорость деградации наименьшая из всех технологий отображения.

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

См. также

  • Видимая область экрана
  • Антибликовое покрытие
  • en:Backlight

Ссылки

  • Информация о флюоресцентных лампах, используемых для подсветки ЖК-матрицы
  • Жидкокристаллические дисплеи (технологии TN + film, IPS, MVA, PVA)

Литература

  • Артамонов О. Параметры современных ЖК-мониторов
  • Мухин И. А. Как выбрать ЖК-монитор? . «Компьютер-бизнес-маркет», № 4 (292), январь 2005, стр. 284-291.
  • Мухин И. А. Развитие жидкокристаллических мониторов . «BROADCASTING Телевидение и радиовещение»: 1 часть - № 2(46) март 2005, с.55-56; 2 часть - № 4(48) июнь-июль 2005, с.71-73.
  • Мухин И. А. Современные плоскопанельные отображающие устройства ."BROADCASTING Телевидение и радиовещение": № 1(37), январь-февраль 2004, с.43-47.
  • Мухин И. А., Украинский О. В. Способы улучшения качества телевизионного изображения, воспроизводимого жидкокристаллическими панелями . Материалы доклада на научно-технической конференции «Современное телевидение», Москва, март 2006.

В этом руководстве мы расскажем как использовать TFT LCD дисплеи с Arduino, начиная с базовых команд и заканчивая профессиональным дизайном.

В этой статье вы узнаете, как использовать TFT LCD с платами Arduino. Мы постараемся освятить базовые команды, а также расскажем про профессиональные дизайны и технику. По планам поле статьи можно будет научиться:

  • выводить тексты, символы и цифры с нужным шрифтом;
  • рисовать фигуры, такие как круг, треугольник, квадрат и т.д.;
  • отображать изображения.bmp на экране;
  • изменять параметры экрана, такие как вращение и инвертирование цвета;
  • отображать анимацию с помощью Arduino.

Из Википедии : Жидкокристаллический дисплей с активной матрицей (TFT LCD, англ. thin-film transistor - тонкоплёночный транзистор) - разновидность жидкокристаллического дисплея, в котором используется активная матрица, управляемая тонкоплёночными транзисторами.

В проектах электроники очень важно создать интерфейс между пользователем и системой. Этот интерфейс может быть создан путем отображения полезных данных, меню и простоты доступа. Красивый дизайн не менее важен.

Для этого есть несколько компонентов. Светодиоды, 7 сегментные модули, графические дисплеи и полноцветные TFT-дисплеи. Правильный компонент для ваших проектов зависит от количества отображаемых данных, типа взаимодействия с пользователем и емкости процессора.

TFT LCD - это вариант жидкокристаллического дисплея (LCD), который использует технологию тонкопленочного транзистора (TFT) для улучшения качества изображения, такого как адресность и контрастность. TFT LCD является активным матричным ЖК-дисплеем, в отличие от пассивных матричных ЖК-дисплеев или простых ЖК-дисплеев с прямым управлением с несколькими сегментами.

В проектах на Arduino частота процессора низкая. Таким образом, невозможно отображать сложные изображения высокой четкости и высокоскоростные движения. Поэтому полноцветные TFT-дисплеи могут использоваться только для отображения простых данных и команд.

В этой статье мы использовали библиотеки и передовую технику для отображения данных, графиков, меню и т.д. с профессиональным дизайном. Таким образом любой ваш проект будет выглядеть просто невероятно классно.

Какого размера? Какой контроллер?

Размер экранов влияет на параметры вашего проекта. Большой дисплей не всегда лучше. Если вы хотите отображать символы и изображения высокого разрешения, вы должны выбрать большой размер дисплея с более высоким разрешением. Но это уменьшает скорость вашей обработки, требует больше места, а также требует больше тока для запуска.

Итак, во-первых, вы должны проверить разрешение, скорость движения, детали цвета и размера изображений, текстов и цифр. Мы предлагаем популярные размеры дисплеев Arduino, таких как:

  • 3,5" дюйма 480 × 320,
  • 2,8" дюйма 400 × 240,
  • 2,4" дюйма 320 × 240,
  • 1,8" дюйма 220 × 176.

Выбрав правильный дисплей, пришло время выбрать правильный контроллер. Если вы хотите отображать символы, тексты, цифры и статические изображения и скорость отображения не важна, платы Atmega328 Arduino (такие как ) являются правильным выбором.

Если размер вашего кода является большим, UNO может оказаться недостаточной. Вместо этого вы можете использовать . И если вы хотите показывать изображения с высоким разрешением и движения с высокой скоростью, вы должны использовать ARM-модули Arduino, такие как Arduino DUE.

Драйверы и библиотеки

В электронике / компьютерном оборудовании драйвер дисплея обычно представляет собой полупроводниковую интегральную схему (но может альтернативно содержать конечную машину, состоящую из дискретной логики и других компонентов), который обеспечивает функцию интерфейса между микропроцессором, микроконтроллером, ASIC или периферийным интерфейсом общего назначения и конкретным типом устройства отображения, например LCD, LED, OLED, ePaper, CRT, Nixie и т.п.

Драйвер дисплея обычно принимает команды и данные с использованием стандартного универсального последовательного или параллельного интерфейса общего назначения, такого как TTL, CMOS, RS232, SPI, I2C и т.д. и генерирует сигналы с подходящим напряжением, током, временем и демультиплексированием, чтобы реализовать на дисплее отображение нужного текста или изображения.

Производители ЖК-дисплеев используют разные драйверы в своих продуктах. Некоторые из них более популярны, а некоторые из них неизвестны. Чтобы легко запускать ваш экран, вы должны использовать библиотеки LCD Arduino и добавить их в свой код. В противном случае запуск дисплея может быть очень осложнен. В Интернете есть много бесплатных библиотек, но важным моментом в библиотеках является их совместимость с драйвером ЖК-дисплея. Драйвер вашего ЖК-дисплея должен быть известен вашей библиотеке. В этой статье мы используем библиотеку Adafruit GFX и библиотеку MCUFRIEND KBV и примеры кода. Вы сможете скачать их по сопутствующим ссылкам.

Разархивируйте MCUFRIEND KBV и откройте MCUFRIEND_kbv.CPP. Вы увидите список драйверов, которые поддерживаются библиотекой MCUFRIEND.

Откройте папку с примерами (англ. - Example). Существует несколько примеров кода, которые вы можете запустить на Arduino. Подключите ЖК-дисплей и проверьте некоторые примеры.

Список комплектующих

Для реализации многих проектов, связанных с TFT LCD нам понадобится набор некоторых комплектующих, которые мы уже обсудили выше:

  • 3.5-дюймовый цветной TFT-дисплей ElectroPeak × 1
  • 2,4-дюймовый дисплей TFT LCD ElectroPeak × 1
  • Arduino UNO R3 × 1
  • Arduino Mega 2560 × 1
  • Arduino DUE × 1

Программное обеспечение

Также для работы с Ардуино нам обычно нужна .

Код

Вы должны добавить библиотеку, а затем загрузить код. Если вы впервые запускаете плату Arduino, не волнуйтесь. Просто выполните следующие действия:

  • Перейдите на нашего сайта или на сайт www.arduino.cc/en/Main/Software и загрузите программное обеспечение для вашей ОС. Установите программное обеспечение в соответствии с инструкциями.
  • Запустите среду разработки Arduino, очистите текстовый редактор и скопируйте код в текстовый редактор.
  • Перейдите к эскизу и включите библиотеки. Нажмите "добавить ZIP-библиотеку" и добавьте библиотеки.
  • Выберите плату в "Tools and Boards", выберите свою плату Arduino.
  • Подключите Arduino к компьютеру и установите COM-порт в "Tools and port".
  • Нажмите кнопку «Загрузить» (стрелка).
  • Теперь все настроено!

После загрузки кода примера пришло время узнать, как создавать изображения на ЖК-дисплее.

Библиотека

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h"

В первой строке добавлена основная графическая библиотека для дисплеев (написанная Adafruit).

Вторая добавляет библиотеку, которая поддерживает драйверы экранов дисплея MCUFRIEND Arduino.

#include "TouchScreen.h" // только если вы хотите использовать сенсорный экран #include "bitmap_mono.h" // когда вы хотите отображать растровое изображение из библиотеки #include "bitmap_RGB.h" // когда вы хотите отображать растровое изображение из библиотеки #include "Fonts/FreeSans9pt7b.h" // когда вам нужны другие шрифты #include "Fonts/FreeSans12pt7b.h" // когда вам нужны другие шрифты #include "Fonts/FreeSerif12pt7b.h" // когда вам нужны другие шрифты #include "FreeDefaultFonts.h" // когда вам нужны другие шрифты #include "SPI.h" // использование sdcard для отображения растрового изображения #include "SD.h"

Эти библиотеки сейчас не нужны, но вы можете их добавить.

Основные команды

Класс и объект

//(int CS=A3, int RS=A2, int WR=A1, int RD=A0, int RST=A4) MCUFRIEND_kbv tft(A3, A2, A1, A0, A4);

Эта строка делает объект с именем TFT из класса MCUFRIEND_kbv и обеспечивает связь SPI между ЖК-дисплеем и Arduino.

Запуск ЖК-дисплея

uint16_t ID = tft.readID(); tft.begin(ID);

Функция tft.readID считывает ID с дисплея и помещает его в переменную идентификатора. Затем функция tft.begin получает идентификатор и ЖК-дисплей готов к работе.

Разрешение экрана

tft.width(); //int16_t width(void); tft.height(); //int16_t height(void);

По этим двум функциям вы можете узнать разрешение дисплея. Просто добавьте их в код и поместите выходные данные в переменную uint16_t . Затем прочитайте его из последовательного порта Serial.println(); . Сначала добавьте Serial.begin (9600); в setup() .

Цвет экрана

tft.fillScreen(t); //fillScreen(uint16_t t);

Функция fillScreen меняет цвет экрана на цвет t . Это должна быть 16-битная переменная, содержащая код цвета UTFT .

#define BLACK 0x0000 #define NAVY 0x000F #define DARKGREEN 0x03E0 #define DARKCYAN 0x03EF #define MAROON 0x7800 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define LIGHTGREY 0xC618 #define DARKGREY 0x7BEF #define BLUE 0x001F #define GREEN 0x07E0 #define CYAN 0x07FF #define RED 0xF800 #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define ORANGE 0xFD20 #define GREENYELLOW 0xAFE5 #define PINK 0xF81F

Вы можете добавить эти строки в начало своего кода и просто использовать имя цвета в функциях.

Заполнение пикелей

tft.drawPixel(x,y,t); //drawPixel(int16_t x, int16_t y, uint16_t t) tft.readPixel(x,y); //uint16_t readPixel(int16_t x, int16_t y)

Функция drawPixel заполняет пиксель в x и y по цвету t.

Функция readPixel считывает цвет пикселя в местоположении x и y.

Рисование линий

tft.drawFastVLine(x,y,h,t); //drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t t) tft.drawFastHLine(x,y,w,t); //drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t t) tft.drawLine(xi,yi,xj,yj,t); //drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t t)

Функция drawFastVLine рисует вертикальную линию, которая начинается с местоположения x, y, ее длина - h пикселей, а цвет - t.

Функция drawFastHLine рисует горизонтальную линию, которая начинается с местоположения x и y, длина равна w пикселей, а цвет - t.

Функция drawLine рисует строку, начинающуюся с xi, yi и до xj, yj, цвет - t.

For (uint16_t a=0; a<5; a++) { tft.drawFastVLine(x+a, y, h, t);} for (uint16_t a=0; a<5; a++) { tft.drawFastHLine(x, y+a, w, t);} for (uint16_t a=0; a<5; a++) { tft.drawLine(xi+a, yi, xj+a, yj, t);} for (uint16_t a=0; a<5; a++) { tft.drawLine(xi, yi+a, xj, yj+a, t);}

Эти три блока кода рисуют линии, подобные предыдущему коду с 5-пиксельной толщиной.

Tft.fillRect(x,y,w,h,t); //fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t t) tft.drawRect(x,y,w,h,t); //drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t t) tft.fillRoundRect(x,y,w,h,r,t); //fillRoundRect (int16_t x, int16_t y, int16_t w, int16_t h, uint8_t R , uint16_t t) tft.drawRoundRect(x,y,w,h,r,t); //drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, uint8_t R , uint16_t t)

Функция fillRect рисует заполненный прямоугольник в координатах x и y, w - ширина, h - высота, t - цвет прямоугольника.

Функция drawRect рисует прямоугольник в координатах x и y с шириной w, высотой h и цветом t.

Функция fillRoundRect рисует заполненный прямоугольник с радиусом углов r, в координатах x и y, шириной w и высотой h, цветом t.

Функция drawRoundRect рисует прямоугольник с r радиальными закругленными углами по x и y, с шириной w и высотой h и цветом t.

Рисуем круги

tft.drawCircle(x,y,r,t); //drawCircle(int16_t x, int16_t y, int16_t r, uint16_t t) tft.fillCircle(x,y,r,t); //fillCircle(int16_t x, int16_t y, int16_t r, uint16_t t)

Функция drawCircle рисует круг по координатам x и y, с радиусом r и цветом t.

Функция fillCircle рисует заполненный круг по координатам x и y, радиусом r и цветом t.

For (int p = 0; p < 4000; p++) { j = 120 * (sin(PI * p / 2000)); i = 120 * (cos(PI * p / 2000)); j2 = 60 * (sin(PI * p / 2000)); i2 = 60 * (cos(PI * p / 2000)); tft.drawLine(i2 + 160, j2 + 160, i + 160, j + 160, col[n]); }

Этот код рисует дугу. Можно изменить значение в «for» между 0 и 4000.

Рисование треугольников

tft.drawTriangle(x1,y1,x2,y2,x3,y3,t); //drawTriangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3,// uint16_t t) tft.fillTriangle(x1,y1,x2,y2,x3,y3,t); //fillTriangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3,// uint16_t t)

Функция drawTriangle рисует треугольник с тремя угловыми координатами x, y и z и t цветом.

Функция fillTriangle рисует заполненный треугольник с тремя угловыми координатами x, y, z и t цветом.

Отображение текста

tft.setCursor(x,y); //setCursor(int16_t x, int16_t y)

Этот код устанавливает позицию курсора на x и y.

Tft.setTextColor(t); //setTextColor(uint16_t t) tft.setTextColor(t,b); //setTextColor(uint16_t t, uint16_t b)

Первая строка задает цвет текста. Следующая строка задает цвет текста и его фона.

Tft.setTextSize(s); //setTextSize(uint8_t s)

Этот код устанавливает размер текста величиной s . Само число s меняется в диапазоне от 1 до 5.

Tft.write(c); //write(uint8_t c)

Этот код отображает символ.

Tft.println("www.Electropeak.com"); tft.print("www.Electropeak.com");

Первая функция отображает строку и перемещает курсор на следующую строку.

Вторая функция просто отображает строку.

ShowmsgXY(x,y,sz,&FreeSans9pt7b,"www.Electropeak.com"); //void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { uint16_t x1, y1; uint16_t wid, ht; tft.setFont(f); tft.setCursor(x, y); tft.setTextColor(0x0000); tft.setTextSize(sz); tft.print(msg); }

Эта функция изменяет шрифт текста. Вы должны добавить эту функцию и библиотеки шрифтов.

For (int j = 0; j < 20; j++) { tft.setCursor(145, 290); int color = tft.color565(r -= 12, g -= 12, b -= 12); tft.setTextColor(color); tft.print("www.Electropeak.com"); delay(30); }

Эта функция может заставить текст исчезать. Вы должны добавить её в свой код.

Вращение экрана

tft.setRotation(r); //setRotation(uint8_t r)

Этот код поворачивает экран. 0 = 0°, 1 = 90°, 2 = 180°, 3 = 270°.

Инвертирование цветов экрана

tft.invertDisplay(i); //invertDisplay(boolean i)

Этот код инвертирует цвета экрана.

Tft.color565(r,g,b); //uint16_t color565(uint8_t r, uint8_t g, uint8_t b)

Этот код передает код RGB и получает цветовой код UTFT.

Прокрутка экрана

for (uint16_t i = 0; i < maxscroll; i++) { tft.vertScroll(0, maxscroll, i); delay(10);}

Этот код прокручивает ваш экран. Maxroll - максимальная высота прокрутки.

Сброс

tft.reset();

Этот код сбрасывает экран.

Отображение монохромных изображений

static const uint8_t name PROGMEM = { //Добавьте код изображения здесь. } tft.drawBitmap(x, y, name, sx, sy, 0x0000);

Сначала вы должны преобразовать свое изображение в шестнадцатеричный код. Загрузите программное обеспечение по ссылке ниже. Если вы не хотите изменять настройки программного обеспечения, вы должны инвертировать цвет изображения, отразить изображение горизонтально (зеркально) и повернуть его на 90 градусов против часовой стрелки.

Теперь добавьте его в программное обеспечение и преобразуйте его. Откройте экспортированный файл и скопируйте шестнадцатеричный код в Arduino IDE. x и y - местоположения изображения. sx и sy - размеры изображения. Вы можете изменить цвет изображения на последнем input .

Отображение цветного изображения RGB

const uint16_t name PROGMEM = { //Add image code here. } tft.drawRGBBitmap(x, y, name, sx, sy);

Сначала вы должны преобразовать свое изображение в код. Используйте эту ссылку для преобразования изображения:

Загрузите изображение и скачайте преобразованный файл, с которым могут работать библиотеки UTFT. Теперь скопируйте шестнадцатеричный код в Arduino IDE. x и y - местоположения изображения. sx и sy - размер изображения.

Вы можете ниже качать программу-конвертер изображений в шестнадцатеричный код:

Предварительно созданные элементы

В этом шаблоне мы просто использовали строку и 8 заполненных кругов, которые меняют свои цвета по порядку. Чтобы нарисовать круги вокруг статической точки, вы можете использовать sin(); и cos(); функции. Вы должны задать величину PI. Чтобы изменить цвета, вы можете использовать функцию color565(); и заменить свой код RGB.

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h" MCUFRIEND_kbv tft; #include "Fonts/FreeSans9pt7b.h" #include "Fonts/FreeSans12pt7b.h" #include "Fonts/FreeSerif12pt7b.h" #include "FreeDefaultFonts.h" #define PI 3.1415926535897932384626433832795 int col; void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { int16_t x1, y1; uint16_t wid, ht; tft.setFont(f); tft.setCursor(x, y); tft.setTextColor(0x0000); tft.setTextSize(sz); tft.print(msg); } void setup() { tft.reset(); Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.setRotation(1); tft.invertDisplay(true); tft.fillScreen(0xffff); showmsgXY(170, 250, 2, &FreeSans9pt7b, "Loading..."); col = tft.color565(155, 0, 50); col = tft.color565(170, 30, 80); col = tft.color565(195, 60, 110); col = tft.color565(215, 90, 140); col = tft.color565(230, 120, 170); col = tft.color565(250, 150, 200); col = tft.color565(255, 180, 220); col = tft.color565(255, 210, 240); } void loop() { for (int i = 8; i > 0; i--) { tft.fillCircle(240 + 40 * (cos(-i * PI / 4)), 120 + 40 * (sin(-i * PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 1)*PI / 4)), 120 + 40 * (sin(-(i + 1)*PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 2)*PI / 4)), 120 + 40 * (sin(-(i + 2)*PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 3)*PI / 4)), 120 + 40 * (sin(-(i + 3)*PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 4)*PI / 4)), 120 + 40 * (sin(-(i + 4)*PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 5)*PI / 4)), 120 + 40 * (sin(-(i + 5)*PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 6)*PI / 4)), 120 + 40 * (sin(-(i + 6)*PI / 4)), 10, col); delay(15); tft.fillCircle(240 + 40 * (cos(-(i + 7)*PI / 4)), 120 + 40 * (sin(-(i + 7)*PI / 4)), 10, col); delay(15); } }

Классический текст

В этом шаблоне мы выбрали классический шрифт и использовали функцию для затухания текста.

#include "Adafruit_GFX.h" // Core graphics library #include "MCUFRIEND_kbv.h" // Hardware-specific library MCUFRIEND_kbv tft; #include "Fonts/FreeSans9pt7b.h" #include "Fonts/FreeSans12pt7b.h" #include "Fonts/FreeSerif12pt7b.h" #include "FreeDefaultFonts.h" void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { int16_t x1, y1; uint16_t wid, ht; tft.setFont(f); tft.setCursor(x, y); tft.setTextSize(sz); tft.println(msg); } uint8_t r = 255, g = 255, b = 255; uint16_t color; void setup() { Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setRotation(1); } void loop(void) { tft.invertDisplay(true); tft.fillScreen(WHITE); color = tft.color565(40, 40, 40); tft.setTextColor(color); showmsgXY(50, 40, 1, &FreeSerif12pt7b, " I love those who can smile in trouble,"); delay(40); tft.println(" who can gather strength from distress,"); delay(40); tft.println(" and grow brave by reflection."); delay(40); tft.println(" "Tis the business of little minds to shrink,"); delay(40); tft.println(" but they whose heart is firm,"); delay(40); tft.println(" and whose conscience approves their conduct,"); delay(40); tft.println(" will pursue their principles unto death."); delay(40); tft.println(" "); delay(700); for (int j = 0; j < 20; j++) { tft.setCursor(145, 290); color = tft.color565(r -= 12, g -= 12, b -= 12); tft.setTextColor(color); tft.print(" ---- Da Vinci ----"); delay(30); } while (1); }

Представление/презентация логотипа

В этом шаблоне мы преобразовали файл a.jpg в файл .c и добавили его в код, написали строку и использовали отображаемый код затухания. Затем мы использовали код прокрутки, чтобы переместить экран влево. Загрузите файл .h и добавьте его в папку эскиза Arduino.

#include "Adafruit_GFX.h" // Core graphics library #include "MCUFRIEND_kbv.h" // Hardware-specific library MCUFRIEND_kbv tft; #include "Ard_Logo.h" #define BLACK 0x0000 #define RED 0xF800 #define GREEN 0x07E0 #define WHITE 0xFFFF #define GREY 0x8410 #include "Fonts/FreeSans9pt7b.h" #include "Fonts/FreeSans12pt7b.h" #include "Fonts/FreeSerif12pt7b.h" #include "FreeDefaultFonts.h" void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { int16_t x1, y1; uint16_t wid, ht; tft.setFont(f); tft.setCursor(x, y); tft.setTextSize(sz); tft.println(msg); } uint8_t r = 255, g = 255, b = 255; uint16_t color; void setup() { Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setRotation(1); } void loop(void) { tft.invertDisplay(true); tft.fillScreen(WHITE); tft.drawRGBBitmap(100, 50, Logo, 350, 200); delay(1000); tft.setTextSize(2); for (int j = 0; j < 20; j++) { color = tft.color565(r -= 12, g -= 12, b -= 12); tft.setTextColor(color); showmsgXY(95, 280, 1, &FreeSans12pt7b, "ELECTROPEAK PRESENTS"); delay(20); } delay(1000); for (int i = 0; i < 480; i++) { tft.vertScroll(0, 480, i); tft.drawFastVLine(i, 0, 320, 0xffff); // vertical line delay(5);} while (1); }

Точечная диаграмма

В этом шаблоне мы использовали линии рисования, заполненные круги и функции отображения строк.

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h" MCUFRIEND_kbv tft; uint16_t ox=0,oy=0; int ave=0, avec=0, avet=0; //////////////////////////////////////////////////////////////// void aveg(void) {int z=0; Serial.println(ave); Serial.println(avec); avet=ave/avec; Serial.println(avet); avet=avet*32; for (int i=0; i<24; i++){ for (uint16_t a=0; a<3; a++){ tft.drawLine(avet+a, z, avet+a, z+10, 0xFB21);} // thick for (uint16_t a=0; a<2; a++){ tft.drawLine(avet-a, z, avet-a, z+10, 0xFB21);} delay(100); z=z+20; } } ////////////////////////////////////////////////////////////////// void dchart_10x10(uint16_t nx,uint16_t ny) { ave+=nx; avec++; nx=nx*32; ny=ny*48; tft.drawCircle(nx, ny, 10, 0x0517); tft.drawCircle(nx, ny, 9, 0x0517); tft.fillCircle(nx, ny, 7, 0x0517); delay (100); ox=nx; oy=ny; } /////////////////////////////////////////////////////////////////////// void dotchart_10x10(uint16_t nx,uint16_t ny) { ave+=nx; avec++; nx=nx*32; ny=ny*48; int plus=0; float fplus=0; int sign=0; int y=0,x=0; y=oy; x=ox; float xmines, ymines; xmines=nx-ox; ymines=ny-oy; if (ox>nx) {xmines=ox-nx; sign=1;} else sign=0; for (int a=0; a<(ny-oy); a++) { fplus+=xmines/ymines; plus=fplus; if (sign==1) tft.drawFastHLine(0, y, x-plus, 0xBFDF); else tft.drawFastHLine(0, y, x+plus, 0xBFDF); y++; delay(5);} for (uint16_t a=0; a<2; a++){ tft.drawLine(ox+a, oy, nx+a, ny, 0x01E8);} // thick for (uint16_t a=0; a<2; a++){ tft.drawLine(ox, oy+a, nx, ny+a, 0x01E8);} ox=nx; oy=ny; } //////////////////////////////////////////////////////////////////// void setup() { tft.reset(); Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); } void loop() { tft.invertDisplay(true); tft.fillScreen(0xffff); dotchart_10x10(3, 0); dotchart_10x10(2, 1); dotchart_10x10(4, 2); dotchart_10x10(4, 3); dotchart_10x10(5, 4); dotchart_10x10(3, 5); dotchart_10x10(6, 6); dotchart_10x10(7, 7); dotchart_10x10(9, 8); dotchart_10x10(8, 9); dotchart_10x10(10, 10); dchart_10x10(3, 0); dchart_10x10(2, 1); dchart_10x10(4, 2); dchart_10x10(4, 3); dchart_10x10(5, 4); dchart_10x10(3, 5); dchart_10x10(6, 6); dchart_10x10(7, 7); dchart_10x10(9, 8); dchart_10x10(8, 9); dchart_10x10(10, 10); tft.setRotation(1); tft.setTextSize(2); tft.setTextColor(0x01E8); tft.setCursor(20, 20); tft.print("Average"); int dl=20; for (int i=0;i<6;i++){ for (uint16_t a=0; a<3; a++){ tft.drawLine(dl, 40+a, dl+10, 40+a, 0xFB21);} dl+=16;} tft.setRotation(0); aveg(); while(1); }

Температура

В этом шаблоне мы использовали sin(); и cos(); функции для рисования дуг с желаемой толщиной и отображаемым числом с помощью функции текстовой печати. Затем мы преобразовали изображение в шестнадцатеричный код и добавили его в код и отобразили изображение с помощью функции растрового изображения. Затем мы использовали функцию рисования линий, чтобы изменить стиль изображения. Загрузите файл.h и добавьте его в папку эскиза Arduino.

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h" #include "Math.h" MCUFRIEND_kbv tft; #include "Temperature.h" #define PI 3.1415926535897932384626433832795 int a=1000,b=3500; int n, f; int j, j2 ,lj; int i, i2 ,li; int pct = 0; int d = {20, 20, 20, 20, 20}; uint16_t col = {0x7006, 0xF986, 0x6905, 0x7FF7, 0x024D}; void setup() { tft.reset(); Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setTextSize(2); } void loop() { // put your main code here, to run repeatedly: tft.fillScreen(0xffff); tft.setRotation(1); tft.drawBitmap(350, 70, Temp, 70, 180, 0x0000); tft.fillCircle(385,213,25,tft.color565(255, 0, 0)); for (int p = 0; p < 4000; p++) { j = 120 * (sin(PI * p / 2000)); i = 120 * (cos(PI * p / 2000)); j2 = 110 * (sin(PI * p / 2000)); i2 = 110 * (cos(PI * p / 2000)); tft.drawLine(i2 + 160, j2 + 160, i + 160, j + 160, tft.color565(100, 100, 100)); } ///////////////////////////////////////////////////////////////////// if (b>a){ while (aКруговая диаграмма

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

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h" #include "Math.h" MCUFRIEND_kbv tft; #define PI 3.1415926535897932384626433832795 int n, f; int j, j2; int i, i2; int pct = 0; int d = {10, 60, 16, 9, 10}; uint16_t col = {0x7006, 0xF986, 0x6905, 0x7FF7, 0x024D}; void setup() { tft.reset(); Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setTextSize(2); } void loop() { // put your main code here, to run repeatedly: tft.fillScreen(0x0042); tft.setRotation(1); for (int p = 0; p < 4000; p++) { j = 120 * (sin(PI * p / 2000)); i = 120 * (cos(PI * p / 2000)); j2 = 60 * (sin(PI * p / 2000)); i2 = 60 * (cos(PI * p / 2000)); tft.drawLine(i2 + 160, j2 + 160, i + 160, j + 160, col[n]); } n = 0; for (int a = 0; a < 5; a++) { pct += d[n] * 40; f = 4000 - pct; for (int b = 0; b < f; b++) { j = 120 * (sin(PI * b / 2000)); i = 120 * (cos(PI * b / 2000)); j2 = 60 * (sin(PI * b / 2000)); i2 = 60 * (cos(PI * b / 2000)); tft.drawLine(i2 + 160, j2 + 160, i + 160, j + 160, col); } tft.fillCircle(380, 100 + (30 * n), 10, col[n]); tft.setTextColor(0xffff); tft.setCursor(400, 94 + (30 * n)); tft.print(d[n]); tft.print("%"); n++; } while (1); }

Музыка

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h" MCUFRIEND_kbv tft; #include "Volume.h" #define BLACK 0x0000 int a = 0,b = 4000,c = 1000,d = 3000; int s=2000; int j, j2; int i, i2; int White; void setup() { Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setRotation(1); } void loop(void) { tft.invertDisplay(true); tft.fillScreen(BLACK); tft.drawRGBBitmap(0, 0, test, 480, 320); White = tft.color565(255, 255, 255); while(1){ if (a < s) { j = 14 * (sin(PI * a / 2000)); i = 14 * (cos(PI * a / 2000)); j2 = 1 * (sin(PI * a / 2000)); i2 = 1 * (cos(PI * a / 2000)); tft.drawLine(i2 + 62, j2 + 240, i + 62, j + 240, White); j = 14 * (sin(PI * (a-300) / 2000)); i = 14 * (cos(PI * (a-300) / 2000)); j2 = 1 * (sin(PI * (a-300) / 2000)); i2 = 1 * (cos(PI * (a-300) / 2000)); tft.drawLine(i2 + 62, j2 + 240, i + 62, j + 240, 0x0000); tft.fillRect(50, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(50, 285); tft.print(a / 40); tft.print("%"); a++; } if (b < s) { j = 14 * (sin(PI * b / 2000)); i = 14 * (cos(PI * b / 2000)); j2 = 1 * (sin(PI * b / 2000)); i2 = 1 * (cos(PI * b / 2000)); tft.drawLine(i2 + 180, j2 + 240, i + 180, j + 240, White); j = 14 * (sin(PI * (b-300) / 2000)); i = 14 * (cos(PI * (b-300) / 2000)); j2 = 1 * (sin(PI * (b-300) / 2000)); i2 = 1 * (cos(PI * (b-300) / 2000)); tft.drawLine(i2 + 180, j2 + 240, i + 180, j + 240, 0x0000); tft.fillRect(168, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(168, 285); tft.print(b / 40); tft.print("%"); b++;} if (c < s) { j = 14 * (sin(PI * c / 2000)); i = 14 * (cos(PI * c / 2000)); j2 = 1 * (sin(PI * c / 2000)); i2 = 1 * (cos(PI * c / 2000)); tft.drawLine(i2 + 297, j2 + 240, i + 297, j + 240, White); j = 14 * (sin(PI * (c-300) / 2000)); i = 14 * (cos(PI * (c-300) / 2000)); j2 = 1 * (sin(PI * (c-300) / 2000)); i2 = 1 * (cos(PI * (c-300) / 2000)); tft.drawLine(i2 + 297, j2 + 240, i + 297, j + 240, 0x0000); tft.fillRect(286, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(286, 285); tft.print(c / 40); tft.print("%"); c++;} if (d < s) { j = 14 * (sin(PI * d / 2000)); i = 14 * (cos(PI * d / 2000)); j2 = 1 * (sin(PI * d / 2000)); i2 = 1 * (cos(PI * d / 2000)); tft.drawLine(i2 + 414, j2 + 240, i + 414, j + 240, White); j = 14 * (sin(PI * (d-300) / 2000)); i = 14 * (cos(PI * (d-300) / 2000)); j2 = 1 * (sin(PI * (d-300) / 2000)); i2 = 1 * (cos(PI * (d-300) / 2000)); tft.drawLine(i2 + 414, j2 + 240, i + 414, j + 240, 0x0000); tft.fillRect(402, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(402, 285); tft.print(d / 40); tft.print("%"); d++;} if (a > s) { j = 14 * (sin(PI * a / 2000)); i = 14 * (cos(PI * a / 2000)); j2 = 1 * (sin(PI * a / 2000)); i2 = 1 * (cos(PI * a / 2000)); tft.drawLine(i2 + 62, j2 + 240, i + 62, j + 240, White); j = 14 * (sin(PI * (a+300) / 2000)); i = 14 * (cos(PI * (a+300) / 2000)); j2 = 1 * (sin(PI * (a+300) / 2000)); i2 = 1 * (cos(PI * (a+300) / 2000)); tft.drawLine(i2 + 62, j2 + 240, i + 62, j + 240, 0x0000); tft.fillRect(50, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(50, 285); tft.print(a / 40); tft.print("%"); a--;} if (b > s) { j = 14 * (sin(PI * b / 2000)); i = 14 * (cos(PI * b / 2000)); j2 = 1 * (sin(PI * b / 2000)); i2 = 1 * (cos(PI * b / 2000)); tft.drawLine(i2 + 180, j2 + 240, i + 180, j + 240, White); j = 14 * (sin(PI * (b+300) / 2000)); i = 14 * (cos(PI * (b+300) / 2000)); j2 = 1 * (sin(PI * (b+300) / 2000)); i2 = 1 * (cos(PI * (b+300) / 2000)); tft.drawLine(i2 + 180, j2 + 240, i + 180, j + 240, 0x0000); tft.fillRect(168, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(168, 285); tft.print(b / 40); tft.print("%"); b--;} if (c > s) { j = 14 * (sin(PI * c / 2000)); i = 14 * (cos(PI * c / 2000)); j2 = 1 * (sin(PI * c / 2000)); i2 = 1 * (cos(PI * c / 2000)); tft.drawLine(i2 + 297, j2 + 240, i + 297, j + 240, White); j = 14 * (sin(PI * (c+300) / 2000)); i = 14 * (cos(PI * (c+300) / 2000)); j2 = 1 * (sin(PI * (c+300) / 2000)); i2 = 1 * (cos(PI * (c+300) / 2000)); tft.drawLine(i2 + 297, j2 + 240, i + 297, j + 240, 0x0000); tft.fillRect(286, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(286, 285); tft.print(c / 40); tft.print("%"); c--;} if (d > s) { j = 14 * (sin(PI * d / 2000)); i = 14 * (cos(PI * d / 2000)); j2 = 1 * (sin(PI * d / 2000)); i2 = 1 * (cos(PI * d / 2000)); tft.drawLine(i2 + 414, j2 + 240, i + 414, j + 240, White); j = 14 * (sin(PI * (d+300) / 2000)); i = 14 * (cos(PI * (d+300) / 2000)); j2 = 1 * (sin(PI * (d+300) / 2000)); i2 = 1 * (cos(PI * (d+300) / 2000)); tft.drawLine(i2 + 414, j2 + 240, i + 414, j + 240, 0x0000); tft.fillRect(402, 285, 30, 30, 0x0000); tft.setTextSize(2); tft.setTextColor(0xffff); tft.setCursor(402, 285); tft.print(d / 40); tft.print("%"); d--;} } }

Спидометр

#include "Adafruit_GFX.h" // Core graphics library #include "MCUFRIEND_kbv.h" MCUFRIEND_kbv tft; #define BLACK 0x0000 #include "Gauge.h" #include "Fonts/FreeSans9pt7b.h" #include "Fonts/FreeSans12pt7b.h" #include "Fonts/FreeSerif12pt7b.h" #include "FreeDefaultFonts.h" int a = 1000; int b = 4000; int j, j2; int i, i2; void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { int16_t x1, y1; uint16_t wid, ht; tft.setFont(f); tft.setCursor(x, y); tft.setTextSize(sz); tft.println(msg); } void setup() { Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setRotation(1); } void loop(void) { tft.invertDisplay(true); tft.fillScreen(BLACK); tft.drawRGBBitmap(0, 0, test, 480, 320); if (a < b) { while (a < b) { Serial.println(a); j = 80 * (sin(PI * a / 2000)); i = 80 * (cos(PI * a / 2000)); j2 = 50 * (sin(PI * a / 2000)); i2 = 50 * (cos(PI * a / 2000)); tft.drawLine(i2 + 235, j2 + 169, i + 235, j + 169, tft.color565(0, 255, 255)); tft.fillRect(200, 153, 75, 33, 0x0000); tft.setTextSize(3); tft.setTextColor(0xffff); if ((a/20)>99) tft.setCursor(208, 160); else tft.setCursor(217, 160); tft.print(a / 20); a++; } b = 1000; } ////////////////////////////////////////////////////////////////// while (b < a) { j = 80 * (sin(PI * a / 2000)); i = 80 * (cos(PI * a / 2000)); j2 = 50 * (sin(PI * a / 2000)); i2 = 50 * (cos(PI * a / 2000)); tft.drawLine(i2 + 235, j2 + 169, i + 235, j + 169, tft.color565(0, 0, 0)); tft.fillRect(200, 153, 75, 33, 0x0000); tft.setTextSize(3); tft.setTextColor(0xffff); if ((a/20)>99) tft.setCursor(208, 160); else tft.setCursor(217, 160); tft.print(a / 20); a--; } while (1); }

Веселый человечек

В этом шаблоне мы отображаем простые изображения один за другим очень быстро с помощью функции растрового изображения. Таким образом, вы можете сделать свою анимацию этим трюком. Загрузите файл.h и добавьте его в папку эскиза Arduino.

#include "Adafruit_GFX.h" #include "MCUFRIEND_kbv.h" MCUFRIEND_kbv tft; #include "image.h" #include "Fonts/FreeSans9pt7b.h" #include "Fonts/FreeSans12pt7b.h" #include "Fonts/FreeSerif12pt7b.h" #include "FreeDefaultFonts.h" #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 GREY 0x8410 #define ORANGE 0xE880 void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { int16_t x1, y1; uint16_t wid, ht; tft.setFont(f); tft.setCursor(x, y); tft.setTextColor(WHITE); tft.setTextSize(sz); tft.print(msg); } void setup() { Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.setRotation(1); tft.invertDisplay(true); tft.fillScreen(tft.color565(0,20,0)); showmsgXY(20, 40, 2, &FreeSans9pt7b, "La Linea"); tft.setRotation(0); } void loop(){ while(1){ tft.drawBitmap(20, 180, Line1, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line2, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line3, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line4, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line5, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line6, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line7, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line8, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line9, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line10, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line11, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line12, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line13, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line14, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line15, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line16, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line17, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128,tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line18, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line19, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line20, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line21, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line22, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line23, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line24, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line25, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128,tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line26, 258, 128, WHITE);delay(40); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); tft.drawBitmap(20, 180, Line27, 258, 128, WHITE);delay(60); tft.fillRect(20, 180, 258, 128, tft.color565(0,20,0)); } }

Изображение

В этом шаблоне мы просто показываем некоторые изображения с помощью функций RGBbitmap и bitmap . Просто создайте код для сенсорного экрана и используйте этот шаблон. Загрузите файл.h и добавьте его в папку эскиза Arduino.

#include "Adafruit_GFX.h" // Core graphics library #include "MCUFRIEND_kbv.h" // Hardware-specific library MCUFRIEND_kbv tft; #define BLACK 0x0000 #define RED 0xF800 #define GREEN 0x07E0 #define WHITE 0xFFFF #define GREY 0x8410 #include "images.h" #include "Fonts/FreeSans9pt7b.h" #include "Fonts/FreeSans12pt7b.h" #include "Fonts/FreeSerif12pt7b.h" #include "FreeDefaultFonts.h" int a = 3000; int b = 4000; int j, j2; int i, i2; void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg) { int16_t x1, y1; uint16_t wid, ht; // tft.drawFastHLine(0, y, tft.width(), 0xffff); tft.setFont(f); tft.setCursor(x, y); tft.setTextColor(WHITE); tft.setTextSize(sz); tft.print(msg); delay(1000); } void setup() { Serial.begin(9600); uint16_t ID = tft.readID(); tft.begin(ID); tft.invertDisplay(true); tft.setRotation(1); } void loop(void) { tft.invertDisplay(true); tft.fillScreen(BLACK); tft.drawRGBBitmap(0, 0, test, 480, 320); tft.drawBitmap(20, 20, Line1, 45, 45, 0xffff);//battery tft.drawBitmap(65, 20, Line2, 45, 45, 0xffff);//wifi tft.drawBitmap(125, 25, Line3, 45, 45, 0xffff);//mail tft.drawBitmap(185, 25, Line4, 45, 45, 0xffff);//instagram tft.drawBitmap(245, 25, Line6, 45, 45, 0xffff);//power tft.drawBitmap(20, 260, Line5, 45, 45, 0xffff);//twitter tft.drawBitmap(410, 140, Line7, 45, 45, 0xffff);//rain tft.setTextSize(6); tft.setTextColor(0xffff); tft.setCursor(280, 210); tft.print("20:45"); tft.setTextSize(2); tft.setTextColor(0xffff); showmsgXY(330, 280, 1, &FreeSans12pt7b, "Saturday"); showmsgXY(300, 305, 1, &FreeSans12pt7b, "6 October 2018"); while (1); }

Итог

Скачайте архив с файлами .h ниже:

  • Скорость воспроизведения всех файлов GIF отредактирована, они сделаны быстрее или медленнее для лучшего понимания. Скорость движений зависит от скорости вашего процессора или типа кода, а также от размера и толщины элементов в коде.
  • Вы можете добавить код изображения на главной странице, но он заполняет всю страницу. Таким образом, вы можете сделать файл a.h и добавить в папку эскиза.
  • В этой статье мы только что разобрали отображение элементов на ЖК-дисплее. Следите за следующим урокам, чтобы узнать, как используются сенсорные экраны и SD-карты.
  • Если у вас есть проблемы с включением библиотек, измените знак кавычки "" на <>.

На этом пока всё. Делитесь этим руководством по TFT LCD для Arduino со своими друзьями и коллегами.

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!