Компания DWIN постоянно расширяет линейку продуктов, добавляя новые модели. Около года назад был разработан дисплей с энкодером, без сенсорного дисплея. Дисплей содержит матрицу 240х240 пикселей в которой отображается только центральный круг диаметром 240 пикселей. Пиксели за данной зоной не отображаются.
Дисплей имеет два интерфейса UART и питание 5В.
Стандартно для всех дисплеев DWIN основной интерфейс для обмена информацией это UART2.
Одним из недостатков этого дисплея является отсутствие в стандартной версии ПО событий о работе энкодера. Так как дисплей не содержит сенсорную панель, то создание ПО для дисплея становится затруднено.
Создадим кастомное ПО которое будет содержать события нажатия и поворота энкодера. А также обязательно содержать обработку стандартного протокола.
Полный проект, как всегда будет приложен в конце статьи ссылкой на гитхаб.
Для реализации задуманного функционала возьмем уже рабочий открытый проект от производителя и немного его модифицируем. В проекте от производителя работает только функция переключения между страницами при повороте энкодера, а так как он в 95% случаев связан с внешним контроллером, то этот функционал нам не нужен, с помощью событий от энкодера мы сами определим, какой результат нам необходим для каждого события.
В основном цикле оставим обработчик UART2 и функцию Encoder_DGUS();
из Encoder_DGUS() удалим всё лишнее, оставив только функцию обработчика энкодера.
Модифицируем функцию, чтобы можно было различить 4 события,
1 - поворот в левую сторону;
2 - поворот в правую сторону;
3 - нажатие;
4 - удержание более двух секунд.
Функция отправки данных будет формировать стандартный пакет с адреса 8000, и полезной нагрузкой кода события.
Компилируем файл и получаем bin файл для загрузки на дисплей.
Для тех кто не хочет вникать в код, будет отдельно выложен файл для загрузки на дисплей.
Создадим проект в DGUS, в котором будет только одна переменная по адресу 5000, чтобы проверить работоспособность стандартного протокола на интерфейсе UART2.
загружаем проект на дисплей. Видим, что переменная из проекта есть, и отображает нули.
При вращении энкодера видно, что команды отправляются верно, нажатие также отрабатывает так как было заложено.
При записи по адресу 5000 числа 5, видно, что оно отобразилось на дисплее и отправило ответное сообщение о корректном принятии пакета.
Итого, мы получили файл ПО позволяющий обрабатывать события энкодера на внешнем контроллере и также обеспечили возможность работы по стандартному протоколу DWIN.
Контакты для обратной связи:
Email: rvb@dwin-global.ru
VK: https://vk.com/radchenko_vb
Telegram: https://t.me/Radchenko_VB
Сообщество VK https://vk.com/public208909284
Русскоязычный сайт: https://dwin-global.ru/