Как вывести текст на дисплей в индустрии

Обновлено: 07.07.2024

Издание Vice рассказало о первых графических стандартах, благодаря которым можно было сохранять цифровые изображения, делать макеты газет и пускать сказки в телеэфир. Среди них VRML, PCX, BMP, RIPscrip и другие.

Интерфейс созданного в 1980-х графического редактора Paintbrush YouTube

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

Интернет-соединение тогда часто работало со сбоями, так что важным аспектом и для хранения данных и для пересылки была возможность их сжать. Об алгоритмах JPEG, которые дают сжимать изображение как с потерями, так и без них, знают многие. Однако на рынке были и другие форматы — более неоднозначные, нишевые и потому менее распространённые, пишет Vice.

Тип файла: векторная графика

Наиболее распространённое расширение: .nap

NAPLPS — одна из первых попыток создать портативный формат, который позволил бы быстро выводить на экран графику в высоком разрешении. Разработал его Центр коммуникационных исследований Канады — для своей собственной видеотекс- и телетекст-службы Telidon.

NAPLPS сперва использовали в индустрии телевещания, а затем и на компьютерах: например, в развлекательно-информационном онлайн-сервисе Prodigy, который в конце 80-х представили компании Sears и IBM.

Фрагмент передачи с кабельного канала Genesis Storytime, работавшего в США и Канаде в 1980-1990 годах: в течение дня он показывал истории для детей без звука. Вся графика выведена на экран благодаря NAPLPS

Тип файла: растровая графика

Наиболее распространённое расширение: .bsv и .pic

Формат BSAVE назван в честь одноимённой компьютерной команды BSAVE, которая позволяла сохранить необработанное изображение того, что показывает экран. А запустить полученные данные можно было с помощью функции BLOAD. Обе работали в системах на диалекте Microsoft BASIC.

Формат использовали также на ранних инструментах для оцифровки — например, на чертёжной доске VersaWriter. Рисунки с неё для повторного просмотра можно было сохранить в BSAVE.

BSAVE остался в истории графических редакторов потому, что подобный подход к сохранению изображений позже использовали в одной из первых «рисовалок» для компьютеров IBM PC — это PCPaint от компании Mouse Systems.

Успех PCPaint обеспокоил Microsoft, так что та лицензировала конкурентное ПО PC Paintbrush от разработчика ZSoft, на основе которого позже создала свой собственный редактор Microsoft Paint.

Тип файла: растровая графика

Наиболее распространённое расширение: .pcx

В 1990 году графический редактор MS Paint, тогда известный как PC Paintbrush, позволял сохранять изображения лишь в двух форматах. Один из них — PCX. С выходом стандартов, которые поддерживали более высокое разрешение картинок, интерес к PCX угас, пишет издание. Но в конце 80-х он был одним из главных в индустрии.

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

Тип файла: растровая графика

Наиболее распространённое расширение: .tiff и .tif

Формат TIFF представила компания Aldus, которая при поддержке Microsoft и Hewlett-Packard разработала первую настольную издательскую систему PageMaker. Та позволяла делать макеты изданий для печати. Выпуск TIFF состоялся в 1986 году, во время активного развития индустрии компьютерной вёрстки и сканирования.

«Верстальщики и производители сканеров предпочитают TIFF, потому что он совместим с разными операционными системами», — написал в 1987 году журналист Том Стэнтон. Стандартизировала формат Aldus, а поддерживать его продолжила Adobe, поскольку выкупила фирму в 1994 году.

Как отмечает Vice, формат на самом деле продолжают использовать в 2020-х, но делают это в основном только профессионалы соответствующих областей. Так что он перестал быть «мейнстримным» и стал скорее нишевым, в отличие от JPG, говорит издание.

Тип файла: растровая графика

Наиболее распространённое расширение: .bmp и .dib

По словам Vice, BMP — «самый большой подарок», который Microsoft сделала рынку графических стандартов. Разработала формат компания в конце 1980-х для операционных систем MS Windows и OS/2. Он поддерживал относительно высокую глубину цвета и работал в MS Paint вместе с PCX.

Первая версия BMP, впрочем, вызывала неоднозначные реакции. Например, журналист PC Magazine счёл формат худшим среди существующих на тот момент битовых вариаций. Отчасти потому, что изначально разные BMP-изображения отображались лишь на устройствах определённого типа, а аппаратно-независимыми стали лишь после выхода Windows 3.0. в 1990-м.

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

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

Скорее всего, вашему очередному устройству тоже не помешает какой-нибудь небольшой дисплейчик 🙂 Попробуем сделать простые электронные часы! А в качестве табло используем распространенный и дешевый символьный жидкокристаллический дисплей 1602. Вот прямо такой, как на картинке:

ЖК дисплей и DHT11 на Ардуино

Кроме 16х2, достаточно популярным считается символьный дисплей 20х4 (четыре строки по 20 символов), а также графический дисплей с разрешением 128х64 точек. Вот они на картинках:

AMC2004A-B-Y6WFDY_arduino_10

CFAG12864BYYH

Подключение символьного ЖК дисплея 1602

У дисплея 1602 есть 16 выводов. Обычно они нумеруются слева-направо, если смотреть на него так как на картинке. Иногда выводы подписываются, типа: DB0, DB1, EN и т.п. А иногда просто указывают номер вывода. В любом случае, список выводов всегда одинаковый:

Принципиальная схема подключения дисплея к Ардуино Уно

lcdx1&potx1_схема

Внешний вид макета

lcdx1_bb

На всякий случай еще и в виде таблички:

ЖК дисплей 16021246111213141516
Ардуино УноGND+5V456789+5VGND

Для работы с ЖК дисплеями различных размеров и типов, в редакторе Arduino IDE имеется специальная библиотека LiquidCrystal. Чтобы подключить библиотеку, запишем первой строчкой нашей программы следующее выражение:

Далее, нам потребуется указать какие выводы Ардуино мы использовали для подключения дисплея. Эту информацию мы укажем при инициализации модуля:

Напоминаю, в нашем дисплее имеется две строки, по 16 символов в каждой.

Полностью программа будет выглядеть так:

Загружаем её на Ардуино Уно, и смотрим что творится на дисплее. Может быть три основных ситуации 🙂

Программируем часы

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

Здесь все понятно: часы, минуты, секунды, месяц, число, год.

Для вывода даты используем кучу функции:

А еще нам нет смысла выводить данные на дисплей чаще чем раз в секунду, поэтому между двумя итерациями сделаем паузу в 1000 миллисекунд.

Итак, сложив все вместе, получим такую программу:

Загружаем скетч на Ардуино Уно, и наблюдаем за ходом часиков! 🙂 Для того чтобы закрепить полученные знания, рекомендую прокачать наши часы до полноценного будильника. Всего-то на всего потребуется добавить пару кнопок и зуммер 🙂

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

Многие производители продают символьные ЖК-дисплеи размером 20x4 со встроенным расширителем GPIO. Символьный дисплей напрямую подключается к расширителю GPIO, который затем подключается к устройству Raspberry Pi через последовательный протокол I2C.

Предварительные требования

Существует множество производителей символьных ЖК-дисплеев. Большинство конструкций похожи, и производители не видят никакой разницы в функционале. Для справки: это руководство было разработано для LCD2004.

Подготовка Raspberry Pi

Используйте команду raspi-config , чтобы убедиться, что следующие две службы включены:

Дополнительные сведения о raspi-config см. в документации по Raspberry Pi.

Подготовка оборудования

Используйте соединительные провода, чтобы подключить четыре контакта на расширителе I2C к устройству Raspberry Pi следующим образом:

  • DGND к заземлению
  • VCC к 5V
  • SDA к SDA (GPIO 2)
  • SCL к SCL (GPIO 3)

При необходимости ознакомьтесь со следующими рисунками:

Интерфейс I2C (обратная сторона дисплея) GPIO Raspberry Pi
Изображение обратной стороны символьного дисплея с расширителем I2C GPIO.
Диаграмма, показывающая схему контактов верхнего контактного ряда GPIO Raspberry Pi. Изображение взято с Raspberry Pi Foundation.

Изображение взято с Raspberry Pi Foundation.

Для упрощения подключения к заголовку GPIO рекомендуется использовать коммутационную плату GPIO в сочетании с монтажной платой для макетирования или тестирования.

Создайте приложение

Выполните следующие действия в предпочитаемой среде разработки.

Замените содержимое Program.cs кодом из этого примера.

В приведенном выше коде:

Объявление using создает экземпляр I2cDevice , вызывая метод I2cDevice.Create и передавая новый класс I2cConnectionSettings с параметрами busId и deviceAddress . Класс I2cDevice представляет шину I2C. Объявление using гарантирует, что объект удален и аппаратные ресурсы освобождены должным образом.

Адрес устройства для расширителя GPIO зависит от микросхемы, используемой производителем. Расширители GPIO, оснащенные PCF8574, используют адрес 0x27 , а расширители с микросхемами PCF8574A используют 0x3F . Обратитесь к документации по ЖК-дисплею.

Другое объявление using создает экземпляр Pcf8574 и передает I2cDevice конструктору. Этот экземпляр представляет расширитель GPIO.

Другое объявление using создает экземпляр Lcd2004 для представления дисплея. Конструктору передается несколько параметров, описывающих настройки, которые будут использоваться для взаимодействия с расширителем GPIO. Расширитель GPIO передается в качестве параметра controller .

Цикл while выполняется бесконечно. Каждая итерация:

  1. Очищает экран.
  2. Устанавливает курсор в первую позицию в текущей строке.
  3. Записывает текущее время для отображения в текущей позиции курсора.
  4. Выполняет итерацию счетчика текущей строки.
  5. Переходит в спящий режим на 1000 мс.

Запустите приложение на устройстве Raspberry Pi, перейдя в каталог развертывания и запустив исполняемый файл.

Наблюдайте за отображением текущего времени в каждой строке на символьном ЖК-дисплее.

Если дисплей светится, но текст не отображается, попробуйте настроить контрастность с помощью регулятора на обратной стороне экрана.

Завершите выполнение программы, нажав сочетание клавиш CTRL+C .

Поздравляем! Вы вывели текст на ЖК-монитор, используя расширитель GPIO I2C.

Для урока Вам понадобится следующие детали:

Также Вам понадобится скачать и установить библиотеки Adafruit_GFX и Adafruit_SSD1306 и среду Arduino IDE. Если не знаете/забыли как это сделать, то вернитесь к уроку по среде Arduino IDE.

После установки необходимых библиотек, для OLED 128 × 64 нужно отредактировать файл Adafruit_SSD1306.h. Найдите строки:

Если у нужно пользоваться дисплеем 128 × 32 или 96 × 16 тогда раскомментируйте нужную строку, а остальные закомментируйте.

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

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

OLED дисплеи подключаются к Arduino по стандартному интерфейсу I2C (есть модели, которые подключаются по SPI). Подключите OLED к Arduino, воспользовавшись следующими схемами:

Электрическая принципиальная схема:


Схема подключения на макетной плате:


Итак, схема у нас уже собрана. Подключите модуль Arduino к компьютеру. Далее откройте среду разработки Arduino IDE. Вам нужно только записать в Arduino следующую программу:

Текст программы:

Adafruit _ SSD1306 display ( OLED_RESET ) ; // создаём объект "дисплей" display . begin ( SSD1306_SWITCHCAPVCC , 0x3C ) ; // инициализация дисплея по интерфейсу I2C, адрес 0x3C display . setTextSize ( 1 ) ; // установка размера шрифта display . setTextColor ( WHITE ) ; // установка цвета текста display . setCursor ( 0 , 0 ) ; // установка курсора в позицию X = 0; Y = 0 display . print ( "Hello, world!" ) ; // записываем в буфер дисплея нашу фразу

Читайте также: