Графическое представление данных на миниатюрном дисплее

Просмотров:
445
Добавлено:
14.11.2021
Графическое представление данных
При конструировании разнообразных изделий с использованием микроконтроллеров (МК) часто возникает необходимость визуализации различных входных или выходных данных. При этом хочется, чтобы восприятие информации было эстетически приятным. Среди наиболее доступных устройств, позволяющих имитировать внешний вид шкал различных приборов и индикаторов, следует отметить OLED-дисплей с диагональю 0,96 дюйма. разрешением 128x64 пикселей под управлением контроллера SSD1306 с интерфейсом I 2С (рис. 1). Основной его недостаток — это малые размеры, и если требуется отображать изменение со временем 3—4 параметров, приходится существенно напрягать зрение. Выход из ситуации автор увидел в разделении параметров индикации по отдельным экранам Таким образом, можно сделать псевдоприборную панель из отдельных одинаковых элементов (рис. 2) под конкретную конструкцию.

Для экспериментов по разработке набора шкал было использовано устройство, схема показана на рис. 3. Для аппаратной имитации изменения условного значения параметра был использован переменный резистор R1. В зависимости от значения напряжения на входе АО модуля А1 функция analog Read(AO) возвращает значения в диапазоне целых чисел от 0 до 1023. Для программной реализации была выбрана графическая библиотека OLEDJ2C (1). Её автор — Henning Kar Isen. Описание практического использования функций библиотеки можно найти в (2. 3).
Графическое представление данных
Среди графических элементов автор статьи использовал точку, отрезок, прямоугольник, а также символы букв и цифр имеющихся в библиотеке размеров. Кроме этого, использованы картинки различного размера в фоновом и спрайтовом режимах индикации. Для анимации использовалось программирование поступательного и вращательного движения изображений и символов, а также их трансформация. Ниже приводятся краткие описания некоторых индикаторов из проекта.
Графическое представление данных
Индикатор 1 (см. рис. 2) имитирует линейную подвижную шкалу—ленту с пределами измерений 0—15 единиц и ценой деления 0.25. Указатель — рамка, которая находится в центре и неподвижна. На изображении выставлено значение 6. Файл скетча индикатора — schkala

Индикатор 2 имитирует неподвижную шкалу "стрелочного" прибора с пределами измерений 0—6 и ценой деления 0,2. Указатель-стрелка вращается в пределах угла 180 градусов.
Графическое представление данных
На изображении выставлено значение 3,7. Файл скетча индикатора — schkala А.

Индикатор 3 имитирует подвижную круговую шкалу с пределами измерений 0—12 и ценой деления 1/3. Указатель — неподвижное кольцо. На изображении выставлено значение 6. Файл скетча индикатора — schkala E.

Индикатор 4 имитирует динамичную иконку скорости течения жидкости. С её увеличением капли движутся быстрее, высота контура стаканчика увеличивается. Файл скетча индикатора — proba_i2c (рис. 4).
Графическое представление данных
Индикатор 5 отображает построение графика в режиме реального времени Он состоит из десяти вертикальных отрезков. меняющих свою высоту за счёт координаты у верхнего конца. Множество отрезков, соединяющих соседние точки, образуют сам график. Текущее значение величины отображается на крайнем правом отрезке, смещаясь за каждый интервал времени влево на место соседнего отрезка — так происходит динамичное построение графика. Файл скетча индикатора — schkala_G

Индикатор 6 иносказательно отображает работу индикатора — лампы 6Е5С, знаменитый "зеленый глаз". В зависимости от значения величины изменяется размер видимой радужки глаза. Файл скетча этого индикатора — schkala_D.

Индикатор 7 построен по принципу сетки календаря, плавно изменяющееся значение приводит к перемещению окружности—окуляра по числам месяца слева направо, сверху вниз Файл скетча индикатора — schkala_F

Индикатор 12 — это шкала прогресса процесса, визуально состоит из подвижного ползунка с числовой индикацией в интервале 0—99 и канала движения. Файл скетча индикатора — schkalaEE
Графическое представление данных
Для общего управления комплектом экранов с использованием одного МК автор выбрал вариант, предложенный в (4]. Схема этого устройства показана на рис. 4. Оно позволяет управлять тремя дисплеями, хотя теоретически ЭТО число может быть увеличено до 17. Выводы модуля А1 10—12 поочередно позволяют коммутировать обновлённую информацию на каждом из экранов А2—A4. Подача на выход логической 1 разрешает, подача логического 0 запрещает передачу данных на соответствующий экран. Пример совместной работы экранных модулей для индикаторов 4. 5,15 приведен в файле скетча proba i2c

Не менее интересным вариантом использования экранов является принцип. при котором два или более дисплея образуют единый информационный экран. Примеры такого подхода к созданию шкал и индикаторов показаны на рис. 5 Индикатор 1 символизирует шкалу радиоприёмника с городами (станциями), индикатор 2 — счётчик на два знакоместа, индикатор 3 — круговую шкалу с подвижной стрелкой-указателем, индикатор 4 — набор "часовых стрелочных" шкал. Вариации соответствующих скетчей приведены в файлах schkala_1, zif_0_99, schkala2, schkala_4.

В процессе макетирования различных шкал обнаружилась неприятная особенность используемой библиотеки. Её работа нарушала корректную работу функции millis(). Изучая многочисленные жалобы и наблюдения в Интернете по этому поводу, удалось найти для практического применения успешное решение [5].

Файлы проекта и gif-аннимация работы шкал имеются на сайте редакции. Автор надеется, что читатели предложат собственные варианты использования дисплея, и проект продолжит своё развитие.










Теги:
Комментарии (0)
Написать
Кликните на изображение чтобы обновить код, если он неразборчив
Похожие темы: