Возможно, вы задумывались, как при помощи Arduino и TFT дисплея можно красиво и удобно вывести большой объём текстовой и графической информации? В данном уроке мы постараемся ответить на этот вопрос и даже написать программу для небольшого интерфейса. Использовать для этого мы будем TFT дисплей напрямую подключаемый к Arduino.
Цель урока: Подключение TFT дисплея.
Познакомится с TFT дисплеями. Научится работать с библиотекой UTFT.
Что из себя представляет TFT дисплей?
TFT расшифровывается, как Thin-film-transistor (тонкоплёночный транзистор), своё название он получил за то, что каждый пиксель на дисплее представляет из себя небольшой полевой транзистор, который выглядит, как тонкая плёнка покрывающая дисплей.
Управление происходит путём взаимодействия с пикселями, которым мы можем задать нужный цвет. В данном уроке будет использоваться уже готовая библиотека, для упрощения задачи и понимания.
TouYinger G4 — ремонт портативного DLP-проектора
Как подключить дисплей к Arduino MEGA?
Используемый дисплей представляет собой плату, которая просто надевается сверху на Arduino MEGA, что сильно упрощает работу с ней. Стоит убедиться, что все порты хорошо соединены с Arduino, иначе вы можете столкнуться со статичным белым экраном. На картинке ниже вы можете наглядно увидеть, как выглядит подключение дисплея.
Также подключим две кнопки к пинам 7 и 8, как показано на схеме ниже.
Важно, что обычные провода, используемые для макетных плат слишком высокие, поэтому стоит использовать самодельные провода, которые можно изготовить с помощью обычного макетного провода и ножниц. На картинке ниже вы можете наглядно увидеть разницу в высоте между проводами. Как вариант, можно при наличии навыков и паяльника можно припаять провода снизу Arduino.
Первый скетч для дисплея.
Для работы с дисплеем будет использоваться готовая библиотека. В файлах библиотеки вы также можете найти документацию с подробным описанием всех функций.
Начнём с самой главной функции, без которой не будут работать все остальные. InitLCD(), эта функция инициализирует дисплей, для начала работы с ним, её необходимо прописать в setup(). В данной функции, так же можно указать ориентацию экрана, указав, как аргумент одну из констант PORTRAIT (вертикальная ориентация) или LANDSCAPE (горизонтальная).
Далее идёт функция fillSrc(Color), эта функция заливает весь дисплей одним цветом.
Гобо проектор 35 вт, с высоты 6 метров. 15000 рублей
Функция setColor(Color) можно выбрать цвет, которым будут выводится текст, фигуры и т.д. В библиотеке предустановлено несколько констант, отвечающих за цвет, но вы можете так же использовать любой цвет в RGB. Например, setColor(255,255,255).
Функция setFont(Font), используется для выбора шрифта, которым будет выводиться текст. Изначально в библиотеке предустановлено 3 шрифта, это:
Дополнительные шрифты, а также информацию об их размере и какие символы в них входят, вы можете найти здесь.
Для установки шрифта сначала нужно перейти на сайт, и скачать любой выбранный шрифт.
После этого, необходимо скачанный файл со шрифтом перекинуть в папку со скетчем.
И в конце нужно просто подключить шрифт прописав перед setup(), следующую команду extern uint8_t Название шрфита[ ];
Важно заметить, что для подключения любого из трёх стандартных шрифтов, скачивать и перекидывать их в папку со скетчем не нужно. Требуется только в начале скетча их подключить через команду extern.
Стоит так же учитывать, что каждый подключённый шрифт занимает довольно много памяти, так что не рекомендую подключать слишком много шрифтов.
#include UTFT LCD(TFT32MEGA_2, 38, 39, 40, 41); extern uint8_t DotMatrix_M[]; void setup() < LCD.InitLCD(); LCD.setFont(DotMatrix_M); >void loop() < // put your main code here, to run repeatedly: >
Для того, чтобы вывести на экран какую-либо информацию, необходимо использовать одну из трёх функций, print(char[ ], x, y, [ r ]), printNumI(int, x, y, [len], [sym]), printNumF(float , dec, x , y, [sym1], [len], [sym2]).
Разница между ними в типе выводимых данных, одна функция выводит только строки, типа char[ ], другая только целочисленные переменные, а последняя только переменные с плавающей точкой.
print(char[ ], x, y[r ]);
char[ ] – строковая переменная;
x, y – координаты начала строки;
r – угол поворота строки относительно координат x,y. (необязательный параметр)
printNumI(int, x, y, [len], [sym]);
int – целочисленная переменная;
x, y – координаты начала строки;
len – количество выводимых разрядов числа (необязательный параметр);
sym – Символы заменяющий недостающие разряды, если len больше, чем количество разрядов в числе (необязательный параметр).
printNumF(float , dec, x , y, [sym1], [len], [sym2]);
float – переменная с плавающей точкой;
dec – Количество выводимых разрядов, после запятой;
x, y – Координаты;
sym1 – Символ вместо запятой, разделитель (необязательный параметр);
len – Количество выводимых разрядов. Учитываются разряды, как перед запятой, так и после (необязательный параметр);
sym2 – Символы заменяющий недостающие разряды, если len больше, чем количество разрядов в числе (необязательный параметр).
Как итог, мы вывели 4 строки разными шрифтами, вручную настроенным цветом и с разным типом данных:
- Для вывода значка батареи мы использовали шрифт «battery_24x48», а также указали, что строку необходимо повернуть на 90 градусов. Для вывода этого значка мы использовали стандартную функцию print().
- Обычную строку типа char[ ], «Hello World!», мы вывели стандартным шрифтов «BigFont» при помощи функции print().
- Целочисленную переменную мы вывели шрифтом «DotMatrix_M», и указали в функции, что количество разрядов равно 5, а пустые разряды необходимо заменить на 0. Для вывода этого числа использовалась функция printNumI().
- Переменную с плавающей точкой мы вывели функцией, printNumF(), используя шрифт «Inconsola». В этой функции мы указали, что после разделителя должно быть два разряда, а всё число содержит 6 разрядов. Так же мы заменили стандартный разделить на тире.
#include UTFT LCD(TFT32MEGA_2, 38, 39, 40, 41); extern uint8_t battery_24x48[]; extern uint8_t BigFont[]; extern uint8_t DotMatrix_M[]; extern uint8_t Inconsola[]; int integer = 256; float floating = 2.56789; void setup() < LCD.InitLCD(); LCD.fillScr(VGA_BLACK); LCD.setColor(0, 255, 0); //Вывод «уровня заряда» LCD.setFont(battery_24x48); LCD.print(«8»,32, 32,90); LCD.setColor(162, 0, 254); //Вывод надписи «Hello Wrold!» LCD.setFont(BigFont); LCD.print(«Hello World!», 240, 160); LCD.setColor(255, 169, 2); //Вывод целочисленной переменной LCD.setFont(DotMatrix_M); LCD.printNumI(integer, 240, 192, 5, ‘0’); LCD.setColor(255, 255, 255); //Вывод переменной с плавающей запятой LCD.setFont(Inconsola); LCD.printNumF(floating, 2, 240, 224, ‘-‘, 6, ‘0’); >void loop()
Немного усложним задачу.
Теперь попробуем вывести прямоугольник, а также цифры, переключаемые кнопками.
В предыдущем примере информация выводилась один раз в функции setup(), теперь попробуем обновлять выводимые данные в процессе работы программы. Если просто выводить данные, то при каждом обновлении дисплей будет мерцать, чтоб решить данную проблему, есть два способа.
Первый — это обновлять экран только по необходимости, для этого используются две булевые переменные, start и upd. Первая используется для вывода рамки по краям экрана, вторая для переключения счётчика. Устанавливаем значение переменной в true, когда требуется обновить экран и после обновления сбрасываем в false.
Второй способ, это обновление экрана частями, как вы можете увидеть в условии if(upd), мы сначала рисуем черный прямоугольник и только потом уже выводим текст, это также помогает избавится от проблемы, когда куски более длинного числа остаются на экране, если вывести поверх более короткое число.
Ниже представлен пример, где сначала выводится число 123 зелёного цвета, а потом на тех же координатах число 45 красного цвета. Как вы можете увидеть, получилось число 453, где отлично видно, что 3 осталась от предыдущего числа.
#include UTFT LCD(TFT32MEGA_2, 38, 39, 40, 41); extern uint8_t SevenSegNumFont[]; void setup() < LCD.InitLCD(); LCD.fillScr(VGA_BLACK); LCD.setFont(SevenSegNumFont); LCD.setColor(VGA_GREEN); LCD.printNumI(123,240,160); delay(30000); LCD.setColor(VGA_RED); LCD.printNumI(45,240,160); >void loop()
Эту проблему можно решить и немного другим способом, если вы выводите какое-либо числа и знайте, максимум разрядов, которое оно может содержать, можно использовать функции printNumI и printNumF. В этих функциях можно указать количество разрядов и символ, которым будут заменяться недостающие разряды.
Устранение дребезга.
Для устранения дребезга используется библиотека Bounce2, её вы можете найти в менеджере библиотек ArduinoIDE или скачать по ссылке.
Сейчас я кратко расскажу, как с ней работать. В самом начале мы объявляем массив классов, там мы указываем количество кнопок, в данном примере две.
После чего уже в функции setup(), мы конфигурируем кнопки, указываем, что мы используем пины 7 и 8 в режиме входа с подтягивающим резистором, а также интервал 25 мс, это время необходимое для считывания состояния кнопки.
Далее в функции loop(), мы каждый цикл обновляем состояние кнопки при помощи функции update(). Считываем же состояние при помощи функции fell(), она проверяет уровень логического сигнала, и если на кнопке уровень логического нуля, то возвращает ИСТИНА.
Давайте пройдёмся по алгоритму работу программы.
В начале мы инициализируем дисплей. Затем идёт конфигурация пинов 7 и 8 при помощи библиотеки Bounce2. После чего идёт вывод рамки и строки «Counter:» и настройка цвета и шрифта последующего текста.
Далее мы проверяем нажаты ли кнопки и в зависимости от того, какая кнопка нажата мы увеличиваем или уменьшаем переменную-счётчик. А также выставляем флаг обновления дисплея, upd в значение true.
В конце программы, мы проверяем значение переменной upd, если true, то мы выводим новое значение поверх старого, но так как переменная counter имеет тип uint8_t она может принимать значения от 0 до 255, включительно. Зная это, мы в функции printNumI указываем, что всегда выводим трёхзначное число с нулём вместо пустых разрядов.
#include #include UTFT LCD(TFT32MEGA_2, 38, 39, 40, 41); //Объявление дисплея, для работы с библиотекой. //В функции указывается к каким пинам Ардуино подключены пины дисплея //TFT32MEGA_2 — тип дисплея //38 — RS — Register Select //39 — WR — Write/Read //40 — CS — Chip Select //41 — RST — Reset // — ALE — ОПЦИОНАЛЬНО! Используется для переключаемых 16-и битных плат //Подключение шрифта extern uint8_t BigFont[]; extern uint8_t SevenSegNumFont[]; Bounce * buttons = new Bounce[2]; //Создаём массив типа «Bounce» для работы с кнопками bool upd = true; uint8_t counter = 0; void setup() < LCD.InitLCD(); buttons[0].attach( 7 , INPUT_PULLUP ); //Настраиваем пин 7 buttons[0].interval(25); buttons[1].attach( 8 , INPUT_PULLUP ); //Настраиваем пин 8 buttons[1].interval(25); LCD.fillScr(VGA_BLACK); //Заливаем фон чёрным цветом LCD.setColor(VGA_WHITE); //выводим красивую рамку по краям LCD.drawRoundRect(10, 10, 470, 310); LCD.setFont(BigFont); //Выводим надпись «Counter:» LCD.print(«Counter:», 128, 0); LCD.setFont(SevenSegNumFont); //Вывод счётчика LCD.setColor(VGA_WHITE); >void loop() < buttons[0].update(); //Обновляем кнопку (Необходимо производить каждый цикл) buttons[1].update(); if (buttons[0].fell()) //увеличиваем счётчик, если кнопка нажата < counter++; upd = true; //Устанавливаем флаг >if (buttons[1].fell()) //Уменьшаем счётчик, если кнопка нажата < counter—; upd = true; //Устанавливаем флаг >if (upd) < LCD.printNumI(counter, 178, 110, 3, ‘0’); upd = false; //Сбрасываем флаг >>
Источник: arduino-tex.ru
Черно белое изображение файла
Цель: разобраться в устройствах отображения информации.
Ход выполнения работы
1. Рассмотрите монитор в лаборатории. Какие характеристики
он имеет? С помощью программы «PC Wizard 2010» уточните характеристики монитора.
Текущий дисплей : 1366×768 pixels на 60 Hz в True Colors (32-. )
Touch Support : Нет
Число мониторов : 1
Тип монитора : Samsung S19B300
Видеоадаптер : NVIDIA GeForce GT 430
nVidia CUDA : Да
2. Составьте схемы мультимедийного TFT-проектора и полиси-
ликонового мультимедийного проектора из учебника. Выясните,
к какому типу проекторов относится проектор в лаборатории.
Схема поли-силиконового мультимедийного проектора:
3. Составьте схему оверхед-проектора.
4. Решите задачи по вариантам. Рекомендуется в табличном процессоре составить формулы для выполнения вычислений. Результаты вычислений импортируйте в текстовый документ электронного
Вариант 7
1. Черно-белое изображение файла типа JPG имеет размер
768 х 768 пикселов. Определите информационный объем файла.
1)768*768 /8= 73728 байт
2. Для хранения растрового изображения размером 64×64 пик.
села отвели 1 024 Кбайт памяти. Каково максимально возможное
число цветов в палитре изображения?
1024* 1024 = 1048576 бит
1048576: 4096 = 256 бит
256= 2^8 = 8 цвета
3. Укажите минимальный объем памяти (в килобайтах), достаточный для хранения любого растрового изображения размером
256 х 128 пикселов, если известно, что в изображении используется
палитра из 256 цветов. Саму палитру хранить не нужно.
4. В процессе преобразования растрового графического файла
количество цветов уменьшилось с 256 до 32. Во сколько раз уменьшился информационный объем файла?
Ответ:уменьшится в 1,6 раз
5. Монитор позволяет получать на экране 26 666 256 цветов. Какой объем памяти в байтах занимает один пиксел?
Решение
1) 26 666 256 = 2^24.
6. Разрешение монитора — 1 024 х 768 точек, глубина цвета —
64 бит. Каков необходимый объем видеопамяти для данного графического режима?
1)1024*768*64/8= 6291456 байт
1. В чем заключается принцип действия монитора на основе
Принцип действия мониторов на основе ЭЛТ заключается в том, что испускаемый электронной пушкой пучок электронов, попадая на экран, покрытый специальным веществом — люминофором, вызывает его свечение
2. Какие характеристики относятся к основным для ЭЛТ-монито
Диагональ экрана монитора – расстояние между левым нижним и правым верхним углом экрана, измеряемое в дюймах. Размер видимой пользователю области экрана обычно несколько меньше, в среднем на 1″, чем размер трубки.
Производители могут указывать в сопровождающей документации два размера диагонали, при этом видимый размер обычно обозначается в скобках или с пометкой «Viewable size», но иногда указывается только один размер — размер диагонали трубки. В качестве стандарта для ПК выделились мониторы с диагональю 15″, что примерно соответствует 36-39 см диагонали видимой области. Для работы в Windows желательно иметь монитор размером, по крайней мере, 17″. Для профессиональной работы с настольными издательскими системами (НИС) и системами автоматизированного проектирования (САПР) лучше использовать монитор размером 20″ или 21.».
Размер зерна экрана определяет расстояние между ближайшими отверстиями в цветоделительной маске используемого типа. Расстояние между отверстиями маски измеряется в миллиметрах. Чем меньше расстояние между отверстиями в теневой маске и чем больше этих отверстий, тем выше качество изображения. Все мониторы с зерном более 0,28 мм относятся к категории грубых и стоят дешевле. Лучшие мониторы имеют зерно 0,24 мм, достигая 0,2 мм у самых дорогостоящих моделей.
Разрешающая способность монитора определяется количеством элементов изображения, которые он способен воспроизводить по горизонтали и вертикали. Мониторы с диагональю экрана 19″ поддерживают разрешение до 1920 * 14400 и выше.
3. В чем состоит особенность мультимедийных мониторов?
В мультимедийных мониторах акустические колонки устанавливаются внутри его корпуса и располагаются либо по бокам от экрана, либо под экраном. При наличии встроенной акустической системы накладываются специфические требования на форму и конструкцию корпуса монитора, поскольку он должен иметь не только хороший дизайн, но и обеспечивать необходимые резонансные свойства для получения качественного звука.
4. На каких физических явлениях основано функционирование
Экраны LCD-мониторов (LiquidCrystalDisplay, жидкокристаллические мониторы) сделаны из вещества (цианофенил), которое находится в жидком состоянии, но при этом обладает некоторыми свойствами, присущими кристаллическим телам. Фактически это жидкости, обладающие анизотропией свойств (в частности оптических), связанных с упорядоченностью в ориентации молекул.
5. Какие факторы необходимо принимать во внимание при выборе
Диагональ экрана и рабочее разрешение монитора
Выбор мониторов в магазинах огромный. Но какой формат выбрать? Почти квадратный 5:4 или широкоформатный 16:9?
Устаревающий формат 5:4, в основном это 17- и 19-дюймовые мониторы. Таких остается в продаже все меньше. Нужно иметь в виду, что у этих мониторов, несмотря на разные размеры экрана, одинаковое разрешение 1280×1024 пикселей. Но если на 19-дюймовом экране стандартную страницу А4, раскрыв ее во весь экран, можно читать, то эта же страница на 17-дюймовом экране выглядит мелко.
Сейчас в магазинах продаются в основном широкоформатные мониторы 16:9. Учитывая, что на домашнем компьютере пользователь смотрит фильмы, то такой формат придется весьма кстати. Изображение будет во весь экран. Да и широкое изображение более физиологично, более привычно для наших глаз.
Разрешение монитора. В магазинах продаются сейчас в основном мониторы с разрешением 1366×768, 1920×1080. Первые — дешевле. Но 1920×1080 (FullHD- разрешение) — это разрешение современных LCD- телевизоров. Самые качественные фильмы — именно в таком разрешении.
Поэтому если думать о перспективе — значит, нужно покупать монитор с разрешением 1920×1080. Выставить другое разрешение, как это было возможно у ЭЛТ-мониторов не получится. Дело в том, что матрица ЖК- монитора может полноценно работать только в своем рабочем разрешении. Другие разрешения поддерживаются, вы их можете выставить, но качество будет безобразное.
Во первых, произойдет искажение изображения из-за нарушения пропорции сторон. Во-вторых, размытие изображения как оборотная сторона относительно большого размера пикселя и его строго прямоугольной формы. Поэтому в ЖК-мониторах, в отличие от ЭЛТ- мониторов, должно стоять только его «родное», рабочее разрешение.
Размер экрана монитора. Продаются широкоформатные мониторы от 18,5”. Разрешение таких неболь-ших мониторов — 1366×768. Если все равно, какой монитор, лишь бы в Интернет выходить, то такого монитора вполне достаточно. Если же вы хотите купить монитор с разрешением 1920×1080, то такие мониторы имеют размер экрана от 21,5”.
Но при одинаковом разрешении 1920×1080 на экране монитора помещается одинаковый объем информации. И если на 23-дюймовом экране страницу можно читать на расстоянии, то на 21,5-дюймовом экране текст будет мелковат, хоть очки одевай!
Так что для комфортной работы за монитором с разрешением экрана 1920×1080 самый подходящий размер экрана — 23 дюйма.
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась — это был конец пары: «Что-то тут концом пахнет». 8526 — | 8113 — или читать все.
Отключите adBlock!
и обновите страницу (F5)
очень нужно
Что ты хочешь узнать?
Ответ
- Комментарии (9)
- Отметить нарушение
1. Черно-белое изображение файла типа JPG имеет размер
768 х 768 пикселов. Определите информационный объем файла.
1)768*768 /8= 73728 байт
2. Для хранения растрового изображения размером 64×64 пик.
села отвели 1 024 Кбайт памяти. Каково максимально возможное
число цветов в палитре изображения?
1024* 1024 = 1048576 бит
1048576: 4096 = 256 бит
256= 2^8 = 8 цвета
3. Укажите минимальный объем памяти (в килобайтах), достаточный для хранения любого растрового изображения размером
256 х 128 пикселов, если известно, что в изображении используется
палитра из 256 цветов. Саму палитру хранить не нужно.
Главное нужно указать файл изображения на вашем компьютере или телефоне, нажать кнопку OK. Остальные настройки выставлены по умолчанию.
Пример цветной, чёрно-белой фотографии с автоматической гамма-коррекцией и просто чёрно-белой фотографии:
Ремонт проектора
Ремонт проектора — задача непростая. Доверяйте ее только специалистам. Помните: неквалифицированное вмешательство увеличивает стоимость ремонта в несколько раз либо вовсе делает производство ремонта проектора нерентабельным!
Ремонт проекторов требует не только высокую квалификацию от мастера, но и соответствующие условия и приборы, поэтому ремонт проекторов мы осуществляем только в сервисном центре.
Принципиальная схема блока питания мультимедийного проектора EIKI LC-XB41 построенного на микросхеме STR-Z2156
(нажмите для увеличения)
Если вы уже столкнулись с необходимостью ремонта проекторов фирм Sharp, Epson, HP, NEC, Sanyo, Sony, Toshiba, Acer, Panasonic, Hitachi, LG, Benq, Mitsubishi, Fujitsu, JVC, ViewSonic, InFocus и других производителей наши инженеры произведут ремонт проектора качественно, с гарантией, в самые кратчайшие сроки и по разумным ценам.. Специалисты нашей компании имеют многолетний опыт работы в области ремонта домашних кинотеатров и офисного проекционного оборудования, они смогут оказать вам квалифицированную помощь при любой поломке, будь то ремонт плат питания, управления, шинного преобразователя, пультов управления, замена лампового блока, ламп, и т. д.
- Ремонт проектора>>
- Ремонт проекционных телевизоров>>
Сервисный центр «MTechnic» осуществляет профилактику, диагностику и ремонт LCD-телевизоров, ремонт проекторов, ремонт проекционных телевизоров и ремонт плазменных панелей следующих марок: AKG, Audio — Technica, AVerMedia, Behringer, BenQ, Braun Photo Technik, Dataton, Draper, EIKI, Electro-Voice, Epson, Fender, Hitachi, InFocus, InterM, Medium, Mitsubishi, NEC, OptiVote, Optoma, Panasonic, Polycom, PRODISPLAY, Projecta, ProjectionDesign, Reflecta, Reversa, Sanyo, ScreenMedia, Sennheiser, Shure, SIH Brackets, SMART, SMS, Sony, Soundking, Tandberg, TLS, Virtual Ink, АВП и других производителей.
Территория охвата: ремонт проектора в Москве, ремонт проектора в Зеленограде , ремонт проектора в Московской области (МО) .
Для вашего удобства работает наша курьерская служба, подробнее в разделе » контакты »
Источник: www.mtechnic.ru