Подключение дисплея от магнитолы к ардуино
Совсем недавно недорогие микроконтроллеры, такие как Arduino, открыли новые двери для тех, кто хочет сделать интересные приспособления для своих автомобилей. В этой статье мы рассмотрим популярный проект, связанный с Аrduino в автомобиле, который использует эту популярную открытую аппаратную плату.
Возможность применения Arduino в автомобиле для его улучшения
Самый распространенный проект на Ардуино для автомобиля – установка в машине ЖК-дисплея с особыми функциями и показателями.
Когда Ардуино-дисплей в авто находится в движении, отображаются: процент нагрузки двигателя, напряжение батареи, температура в салоне и температура охлаждающей жидкости двигателя (есть несколько других статистических данных о транспортном средстве, которые могут отображаться, если нужны). Помимо дисплея и микроконтроллера, понадобятся различные датчики для создания этого Аrduino проекта для автомобиля.
Если Аrduino для автомобиля совместим с IDE Teensy 3.6, то читается анимированный растровый образ машины и резервные датчики. Каждый из четырех датчиков на своем месте, так же, как и анимационная картинка автомобиляоторая меняет цвет, исходя из того, насколько близко объект находится к машине (только зеленый означает Какие датчики можно подключить к Ардуино
В конечном итоге, пользователь получит отличное приспособление, контролирующие все возможные параметры автомобиля. Список деталей, которые понадобятся для создания этого ЖК-дисплея Ардуино для автомобиля, приведен ниже:
- Адаптер Freematics OBD-II.
- Резервные датчики.
- 7-дюймовый ЖК-дисплей TFT.
- Драйвер для дисплея LCD на базе SPI.
- Микропроцессор Teensy 3.6.
- Специальный уровень Shifter.
- 74HC125 Tri State Buffer IC.
- Карта памяти MicroSD Card.
- Провод, конденсаторы и резисторы.
- Датчик температуры DS18B20.
- Разделитель OBD-II.
- Микроконтроллер Ардуино.
Подключение, запуск и настройка автоустройств на Ардуино
Для загрузки эскиза проекта Ардуино для авто в виде ЖК-дисплея в Teensy 3.6 вам необходимо установить Teensyduino. Затем вам нужно будет заменить библиотеки Adafruit_RA8875 и Adafruit_GFX в расположении библиотеки Teensy (а не на вашем типичном месте в документах). На Mac операционной системе нужно щелкнуть правой кнопкой мыши по значку приложения Arduino в приложениях, а затем перейти в:
/Содержание/Java/hardware/teensy/avr/libraries
В Windows данная папка находится под основным диском C, в файлах программ x86, Arduino, а затем в папке с аппаратным обеспечением. Как только вы это сделаете, вам нужно будет изменить расположение эскиза в приложении Arduino, отредактировав его в настройках – обычно библиотеки “Тинси” размещаются по следующему адресу:
/Applications/Arduino.app/Contents/Java/hardware/teensy/avr
Из-за проблемы с внутренним температурным датчиком пользователь устанавливает температурный датчик модуля DS18B20.
В zip-файле, который находится по ссылке выше, вы увидите 4 эскиза Аrduino.
- Загрузите эскиз display_code, если вы хотите использовать внутренний температурный датчик модуля OB2 I2C OBD-II.
- Загрузите эскиз display_code_with_new_temperature_sensor, если вы хотите использовать модуль DS18B20.
Вскоре после установки дисплея пользователь поймет, что дисплей работает даже тогда, даже когда автомобиль выключен.
Заглянув в разводку OBD-II, электронщик обнаружит, что линия питания 12 В к разъему OBD-II всегда подключается непосредственно к батарее. Чтобы обойти это, необходимо купить разветвитель OBD-II и отрезать провод, идущий на контакт 16 на одном из двух разъемов на сплиттере, а затем подключить этот разрезаемый провод к добавлению проводки.
Затем, используя мультиметр, необходимо заглянуть в коробку предохранителей на стороне водителя и протестировать существующие предохранители, чтобы узнать, какой предохранитель получил питание после того, как ключ был включен в зажигание.
В конце пользователь подключает добавочный провод к предохранителю, который нужен для того, чтобы дисплей теперь включался только тогда, когда автомобиль работает и находится на ходу. Проведите некоторое исследование того, как правильно добавить схему к вашему автомобилю. Многие подобные проекты описаны на нашем сайте с подробными разъяснениями.
Кроме того, пользователь может добавить кнопку “стоп-старт” на Ардуино для своего дисплея с параметрами для автомобиля.
Где-то далеко, в закромах своего сарая я нашел не что иное, как два 27MHz пульта от какой-то машинки, о чем свидетельствовало изображение машинки на дисплее. Один пульт не работал, другой был тоже не нужен, ведь машинки то нету. Распаяв плату я получил резисторы и конденсаторы, но самым интересным был дисплей. Решив, что его нужно подключить к Arduino полез в Яндекс искать его. Это был самый большой провал в моей жизни. Ни Яндекс, ни Google не знают такой фирмы производящей дисплеи, как Melodate не знали. Судя по маркировке это Melodate MD-2072.
У него подключение шлейфом, а еще сзади есть два контакта под динамик, который я благополучно оторвал, из-за того, что тот пищал при любых телодвижениях на экране.
Распиновка на плате была, но. соответствовало действительности разве, что GND и VDD. Остальное, как оказалось - направления движения. Долго мучашись с постоянным прописыванием функции digitalWrite() и вспомианием, какой пин относится к какому действию я решил написать библиотеку. Подключать дисплей надо именно так, как нарисовано в титульной картинке. Но. тут не так все просто. Это во Fritzing взял, перевернул, и все прекрасно, а на самом деле пришлось немного подумать.
Точнее думать не особо-то и надо было - снял облочку, да поменял местами проводки GND и VDD.
Итак, мы подключили дисплей, как надо, а теперь собственно библиотека. Всего в ней 9 комманд.
Также есть команды для выключения определенных действий. Например
Отключаем частично экран:
Еще есть функции:
Загружаем скетч либо из примеров в библиотеке, либо скопировав отсюда (они одинаковые) в нашу *duino и видим, что все работает. Хочу также предупредить, что если у Вас, что-то идет не по коду, то скорее всего :
А. Контакты перемкнулись
Б. Неправильное подключение
В. На экран смотреть нужно сверху вниз, а не под углом
Г. Доткнуть пинцетом контакты
Да, согласен, дисплей более, чем неинформативен, но например информацию о состоянии реле, или других не сильно информационно загруженных вещей показывать можно, ведь это не сложно.
Паяем все, что лудится. Чиним все, что поломалось. Собираем безделушки из гаражного хлама.
пятница, 30 октября 2015 г.
Бегущая строка на дисплее от магнитолы. Железо.
Нашел недавно у себя в закромах панельку от магнитолы Hyundai H-CDM8057 с LCD дисплеем, решил его запустить и написать на нем что-нибудь. Что-нибудь оригинальное, "Hello world", например. Для этих целей пригодится китайский клон Arduino Uno, который я прикупил на Алиэкспресс не так давно. Осталось разобраться, что куда подключать, и что куда передавать.
Разобрав панельку, увидел на плате контроллер с надписью PT6523 (аналог LC75823). Теперь бегом в гугл за технической документацией на этот девайс, и за схемой самой магнитолы (ссылки есть внизу страницы). PT6523 является драйвером для LCD дисплеев, и может контролировать до 156 сегментов. Работает он на частоте до 38КГц.
Рассмотрим коннектор панельки по-подробнее (3-я страница мануала от магнитолы):
- 5V, питание контроллера, подключаем к "+" питания
- INH, выключатель дисплея, в случае, если на плате не впаян резистор R133, впаиваем его (номинал 20. 100 КОм). Если он впаян, то никуда подключать не надо.
- DATA, передача данных, подключаем к 11 контакту ардуино.
- CLK, тактовый сигнал, подключаем к 13 контакту ардуино.
- CE, управляющий сигнал, сообщает о начале передачи данных, подключаем к 10 пину ардуино.
- EN-B и
- EN-A, выходы крутилки-регулятора громкости. Подключаем к 2 и 7 пинам.
- GND, минус или земля, подключаем к "-" питания.
- KIN1 и
- KIN0, выходы кнопок управления, можно никуда не подключать
- REM, сигнал с пульта дистанционного управления. У меня его нет, никуда не подключал.
- LED-C, минус диодов подсветки, уже подключен к GND.
- B-LIGHT, подсветка дисплея. Судя по схеме магнитолы, требует 10В, однако, работает и от 5. Можно соединить с первым контактом разъема.
- LAMP, подсветка клавиатуры, можно не подключать.
В настоящее время на рынке Arduino-комплектующих присутствует множество разнообразных TFT дисплеев. С точки зрения пользователя они отличаются друг от друга, главным образом, размерами, разрешающей способностью, способами подключения и дополнительным функционалом. Большинство таких дисплеев оборудовано сенсорным экраном, делающим управление системой более удобным и позволяющим избавиться от традиционных кнопок, джойстиков, энкодеров и других механических приспособлений.
1. Базовая библиотека UTFT. Общие сведения
Список поддерживаемых библиотекой дисплеев и их основные особенности приводятся в сопроводительном документе “UTFT Supported display modules & controllers”, который поставляется вместе с библиотекой.
Эта библиотека является базовой и содержит только основной функционал вывода на дисплей. К ней существует несколько дополнений, в которых реализованы дополнительный функции, такие как управление при помощи сенсорного экрана (U_Touch), работа с экранными кнопками (UTFT_Buttons), расширенный набор функций для рисования графических примитивов (UTFT_Geometry), использование встроенных в некоторые дисплеи шрифтов и иконок (UTFT_CTE) и т. д.
Базовая библиотека позволяет работать с подгружаемыми шрифтами. Шрифты хранятся в виде массивов данных, которые размещаются в отдельных файлах и подключаются к тексту программы.
2. Начало работы с библиотекой
3. Команды библиотеки
InitLCD – инициализирует дисплей и задает горизонтальную или вертикальную ориентацию. В качестве параметра указывается идентификатор ориентации.
Будучи заданной без параметров команда устанавливает горизонтальную ориентацию. Если указать параметр PORTRAIT или 0 – будет выбрана вертикальная ориентация, если указать LANDSCAPE или 1 – горизонтальная.
При горизонтальной ориентации разъемы контроллера располагаются слева, при вертикальной – внизу. Остальные варианты не предусмотрены. Задание в качестве параметра других чисел, кроме 0 и 1 приводит к искаженному выводу информации на дисплей.
Эта команда обычно используется в разделе void setup() но ее можно использовать и в основном цикле программы, как, например, здесь:
clrScr – очищает дисплей, стирая всю отображаемую на дисплее информацию и заливая дисплей черным цветом. Параметров не имеет.
При очистке дисплея заданный цвет фона (см. команду setBackColor) не сбрасывается и остается прежним, но дисплей все равно заливается черным цветом. Для того, чтобы очистить дисплей с другим цветом фона необходимо использовать команду fillScr. Работу команды clrScr иллюстрирует следующий пример:
После сброса контроллера происходит инициализация дисплея, затем через 1 секунду очистка (дисплей становится черным) и еще через секунду выводятся символы, при этом мы видим, что заданный перед очисткой цвет фона не изменился.
Прежде чем рассматривать следующие несколько команд необходимо рассмотреть особенности задания цветов в командах библиотеки.
Система кодирования цветов
Цвета в библиотеке задаются несколькими способами. Внутренним форматом представления данных о цвете является формат RGB565. В этом формате цвет кодируется 16-битным значением, в котором уровень красного и синего кодируется пятью битами, а зеленого – шестью. Большинство команд библиотеки, работающих с цветом, воспринимает значения, заданные в виде трех чисел, разделенных запятой. Каждое из этих чисел отвечает за уровень соответствующего цвета (R, G, B). Допустимые значения каждого числа – от 0 до 255.
Таким образом, цвета задаются пользователем в формате RGB888, а внутри библиотеки используется RGB565. Преобразование форматов выполняется внутри библиотеки по следующей формуле:
word color = ((r&248) >3);
где color – значение цвета в формате RGB565, а r, g, и b – значения цветов, задаваемые пользователем. Именно в таком формате возвращают значения и все функции определения текущего цвета.
При задании цвета необходимо учитывать, что не все сочетания задаваемых значений r, g, и b будут давать разные цвета. Поэтому, например, значения уровня красного 255 и 253 дают один и тот же уровень красного. Приведенная ниже программа выводит на дисплей максимальные и минимальные значения r, g и b, допустимые для получения цвета, заданного в программе в командах установки цвета. Для выполнения расчета подставьте в параметры команды myGLCD.setBackColor десятичные значения r, g и b для выбранного цвета, скомпилируйте и запустите программу. На дисплее отобразится код цвета в системе RGB565, возвращенный функцией myGLCD.getBackColor, а также минимальные и максимальные значения r, g и b, позволяющие получить данный цвет.
Некоторые стандартные цвета можно задавать при помощи идентификаторов:
VGA_BLACK – черный,
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 – морская волна
Если вы хотите узнать RGB коды для этих цветов – подставьте идентификатор цвета вместо трех чисел в команду myGLCD.setBackColor в приведенной выше программе, после компиляции и запуска на дисплее отобразятся нужные коды.
Итак, продолжим рассмотрение команд библиотеки:
fillScr – очищает дисплей, стирая всю отображаемую на дисплее информацию и заливая его указанным в качестве параметра цветом фона.
Цвет фона задается тремя числами или идентификатором цвета, например, так:
fillScr(0,0,0); // черный цвет
fillScr(255,255,255); // белый цвет
fillScr(255,128,0); // оранжевый цвет
fillScr(VGA_RED); // стандартный красный цвет
Эта команда, так же как и clrScr не изменяет заданный цвет фона для команд печати, поэтому при печати на дисплее, залитом заданным цветом необходимо дополнительно указывать цвет фона (см. команду setBackColor).
getBackColor –возвращает текущее значение цвета фона. Параметров не имеет.
Эти две функции возвращают значение типа word, cоответствующее текущему заданному цвету в формате RGB565. Это значение можно передавать в качестве параметра в командах setColor, SetBackColor и fillScr например так:
setColor(32586);
эта команда дает тот же самый цвет, что и setColor(120,232,80) или setColor(125,233,84), в чем можно убедиться при помощи рассмотренной выше программы декодирования цветов RGB565.
getDisplayXSize – возвращает значение ширины дисплея в пикселях при выбранной ориентации. Параметров не имеет.
getDisplayYSize – возвращает значение высоты дисплея в пикселях при выбранной ориентации. Параметров не имеет.
Эти две функции можно проиллюстрировать следующим примером:
getFont – возвращает указатель на адрес текущего шрифта в памяти контроллера.
Рассмотрим пример. Чуть выше мы уже говорили о том, что первые четыре байта в массиве данных шрифта содержат информацию о свойствах шрифта. Эту информацию для текущего шрифта можно получить непосредственно из памяти контроллера и использовать в программе. Следующая программа помещает в переменные и выводит на дисплей размеры символа в пикселях, код первого символа и количество символов текущего шрифта, заданного командой setFont.
Аналогичным образом можно получить доступ к любому байту текущего шрифта.
getFontXsize – возвращает горизонтальный размер (ширину) символа текущего шрифта в пикселях. Параметров не имеет.
getFontYXsize – возвращает вертикальный размер (высоту) символа текущего шрифта в пикселях. Параметров не имеет.
Эти функции могут быть полезны при вычислении координат для команд печати. Примеры использования этих функций для расчета координат приведены в описании команд печати.
Далее мы рассмотрим несколько команд, предназначенных для вывода на дисплей символьной информации, т. е. команды печати.
- LEFT –текст выравнивается по левой границе дисплея
- CENTER – текст выравнивается по центру дисплея
- RIGHT – текст выравнивается по правой границе дисплея
Для разделения выводимых значений пробелом расчетное значение X должно быть увеличено на ширину одного символа. А здесь печать осуществляется в две строки:
Еще один опциональный параметр позволяет печатать строки, наклоненные под углом от 0 до 359 градусов. Вращение задается относительно координат печати (левый верхний угол). Нулевое значение угла приводит к обычной горизонтальной печати, далее по мере увеличения угла происходит вращение текста по часовой стрелке на заданный угол. Приведенный ниже пример позволяет получить забавный графический эффект:
printNumI – выводит на дисплей целое число или содержимое целочисленной переменной. В качестве параметров передаются выводимое значение и координаты верхнего левого угла области печати. Опциональные параметры позволяют управлять форматом вывода.
Координаты печати задаются так же, как и для команды print. При печати чисел со знаком в позиции X выводится знак числа, а затем – первая цифра. При печати беззнаковых чисел или положительных значений в позиции X выводится первая цифра числа.
Выводимое на печать значение может быть передано в виде целого числа:
myGLCD.printNumI(1250,0,0);
или переменной одного из целочисленных типов:
int Num = 1324;
myGLCD.printNumI(Num,0,0);
Также возможно вывести результат любой функции или выражения, представляющий собой целочисленное значение:
myGLCD.printNumI(myGLCD.getFontYsize()*2,0,0);
При работе с целочисленными значениями необходимо помнить, что в Arduino DUE тип int хранится как и тип long в виде 4-х байтового числа с диапазоном допустимых значений от –2,147,483,648 до 2,147,483,647.
Типы unsigned int и unsigned long командой printNumI не поддерживаются, т. е. значение может быть передано команде, но будет выведено на дисплей как число со знаком. Тип char наоборот трактуется как беззнаковый.
Дополнительные опциональные параметры этой команды позволяют задать формат вывода чисел. Параметр length определяет минимальное количество знакомест (включая знак числа), занимаемых выводимым числом на дисплее. Если количество разрядов числа меньше, чем заданное значение length – недостающее количество знакомест дополняется слева нужным количеством символов. Параметр filler позволяет задать символ (по умолчанию — пробел), которым будет дополняться число. Комбинация этих символов позволяет, в частности, организовать вывод чисел, выровненных по правой границе или дополнять незначащими нулями значения при выводе времени или даты. Т. е. вместо привычной конструкции:
byte Day = 2;
byte Month = 9;
int Year = 2013;
if (Day
myGLCD.print("0",0,0);
myGLCD.printNumI(Day,16,0);
>else <
myGLCD.printNumI(Day,0,0);>
myGLCD.print(".", 32,0);
if (Month
myGLCD.print("0",48,0);
myGLCD.printNumI(Month,64,0);
>else <
myGLCD.printNumI(Month,48,0,2,'0');>
myGLCD.print(".", 80,0);
myGLCD.printNumI(Year,96,0);
можно просто написать:
byte Day = 2;
byte Month = 9;
int Year = 2013;
myGLCD.printNumI(Day,0,0,2,'0');
myGLCD.print(".", 32,0);
myGLCD.printNumI(Month,48,0,2,'0');
myGLCD.print(".", 80,0);
myGLCD.printNumI(Year,96,0);
не правда ли так гораздо лучше?
drawPixel – выводит на дисплей точку. Цвет точки определяется текущим значением цвета, устанавливаемым командой setColor().
Координаты X и Y передаются в качестве параметров.
Параметры могут быть заданы числами, переменными, результатами функций или выражений. Параметры могут представлять собой вещественное число, но при этом дробная часть будет отбрасываться. Необходимо также следить, чтобы координаты точки не выходили за пределы дисплея, в противном случае точка может оказаться совсем не там, где вы ожидаете ее увидеть ;) Для контроля выхода за пределы дисплея можно воспользоваться рассмотренными ранее функциями getDisplayXsize() и getDisplayYsize().
Пример использования команды drawPixel – следующая конструкция выведет на дисплей синусоиду, построенную из отдельных точек:
for (int x=0; x
int y=(sin(x)*10)+100;
myGLCD.drawPixel(x*10,320-y);
Следующая группа команд требует в качестве параметров координаты двух точек, определяющих размер изображаемой фигуры.
drawLine – выводит на дисплей линию заданную координатами начальной и конечной точек.
Направление рисования линии зависит от расположения начальной и конечной точек. Например, строка:
myGLCD.drawLine(10,20,100,200);
рисует текущим цветом линию между точками с координатами X=10, Y=20 для первой точки и X=100, Y=200 для второй. Строка:
myGLCD.drawLine(100,200,10,20);
рисует точно такую же линию между такими же точками, но направление рисования будет противоположным.
drawRect – выводит на дисплей прямоугольник, заданный координатами двух противоположных углов.
Координаты задаются так же, как и для команды drawLine.
drawRoundRect – выводит на дисплей прямоугольник со скругленными углами, заданный координатами двух противоположных углов.
Минимальный размер сторон прямоугольника ограничен 5 пикселями. При задании сторон меньшего размера прямоугольник не может быть выведен на дисплей.
fillRect – выводит на дисплей закрашенный прямоугольник, заданный координатами двух противоположных углов.
Прямоугольник рисуется и закрашивается текущим цветом.
fillRoundRect – выводит на дисплей закрашенный прямоугольник со скругленными углами, заданный координатами двух противоположных углов.
Эта команда функционирует так же, как и команда drawRoundRect.
Две следующих команды предназначены для рисования окружностей и кругов и требуют трех параметров: X и Y координат центра окружности (или круга) и радиуса.
drawCircle – выводит на дисплей окружность, определяемую координатами центра и радиусом.
Радиус окружности не должен принимать отрицательные значения, так как в этом случае она будет отображаться неправильно.
Следующая команда выводит на дисплей окружность с радиусом 50 пикселей и центром в точке с координатами X=100 и Y=120:
drawCircle(100,120,50);
fillCircle – выводит на дисплей закрашенный текущим цветом круг, определяемый координатами центра и радиусом.
При отрицательных значениях радиуса круг не отображается.
Итак, мы рассмотрели команды рисования графических примитивов. Кстати, для библиотеки UTFT существует дополнение UTFT_Geometry, которое позволяет выводить на дисплей треугольники (контурные и заполненные), дуги окружностей и сектора кругов. Работу с этим дополнением мы рассмотрим в одной из следующих статей.
А сейчас осталось совсем немного: две команды, позволяющие отобразить на дисплее специально подготовленное растровое изображение:
В результате работы конвертера мы получим файл с расширением .c, в котором будет храниться информация о картинке и закодированное изображение. Этот файл необходимо поместить в папку Вашего проекта и объявить в программе массив при помощи спецификатора extern так же, как мы это делали для шрифтов. Только в квадратных скобках обязательно нужно указать размер массива в 16-ричном формате (это значение находится в первом элементе массива, его можно посмотреть открыв полученный в результате конвертирования файл в любом текстовом редакторе).
Не забудьте после копирования и подключения массива закрыть и снова открыть файл программы. При этом файл массива откроется на соседней вкладке рядом с текстом программы. Текст нашей программы будет выглядеть так:
Возможна еще одна форма вызова этой команды с дополнительными параметрами, позволяющая поворачивать изображение на заданный угол. Параметров в этом случае должно быть три: deg – угол поворота картинки rox – X координата центра вращения, roy – Y-координата центра вращения. Угол поворота задается в градусах (от 0 до 359), а координаты центра вращения rox и roy отсчитываются от левого верхнего угла картинки. Рассмотрим пример. В качестве изображения используем файл info.c, поставляемый вместе с библиотекой (он находится в подпапке /examples/Arduino (ARM)/UTFT_Bitmap корневой папки библиотеки). Размер картинки 32x32 пикселя, объем массива 0x400. Следующая программа выведет на дисплей вращающуюся вокруг своей оси картинку:
К сожалению, одновременно использовать вращение и масштабирование невозможно.
И в завершение еще несколько команд:
lcdOff – отключает дисплей. Параметров не имеет.
lcdOn – включает дисплей. Параметров не имеет.
После выполнения команды lcdOff() дисплей отключается и не реагирует ни на какие команды до тех пор, пока не будет выполнена команда lcdOn().
Эти две команды, согласно утверждению разработчика, реализованы только для дисплеев с контроллером PCF8833, поэтому на нашем дисплее они просто игнорируются.
setContrast – устанавливает контраст дисплея. Параметр – величина контраста.
В качестве параметра задается условная величина, определяющая контраст дисплея: от 0 (минимальный контраст) до 64 (максимальный контраст).
Эта команда также реализована только для дисплеев с контроллером PCF8833, поэтому на нашем дисплее изменения контраста не произойдет и команда будет проигнорирована.
Заключение
Итак, мы научились пользоваться всеми командами базовой библиотеки UTFT. В следующих статьях мы поговорим о дополнениях к этой библиотеке, позволяющих расширить ее возможности. На очереди – рисование треугольников, дуг и секторов, работа с сенсорным экраном, а также работа с текстовыми и графическими кнопками на дисплее, управляемыми при помощи сенсорного экрана. В дальнейшем мы планируем рассмотреть и встроенные возможности нашего дисплея – работу со внутренней памятью дисплейного модуля, зашитыми в его ПЗУ шрифтами и иконками.
Читайте также: