меню для ардуино 16×2

LiquidMenu: Arduino библиотека для создания меню на LCD дисплее

Библиотека LiquidMenu обертывает Arduino библиотеку LiquidCrystal с возможностью создания меню. Она упрощает процесс создания меню, абстрагируя элементы меню в иерархически организованные классы.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2 меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2 Пример использования библиотеки LiquidMenu

Содержание

Особенности

Требования

Загрузка

Скачать библиотеку можно по ссылке ниже:

Быстрый старт

Организация классов

Для представления различных элементов меню данная библиотека использует иерархически структурированные классы.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2 Базовая схема иерархии классов меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2 Полная схема иерархии классов

Класс LiquidLine представляет собой строку текста/чисел на дисплее. Чтобы создать новый объект LiquidLine используйте конструктор.

Класс LiquidScreen представляет собой набор строк, которые одновременно отображаются на дисплее (т.е. «текущий экран»).

Класс LiquidMenu объединяет экраны для формирования меню. Данный класс используется для управления меню (переключение экранов, выбор строк, вызов функций и т.д.).

Создание меню

Навигация по меню

Навигация по меню осуществляется из объекта LiquidMenu или, если имеется несколько меню, из объекта LiquidSystem. Экраны могут быть зациклены вперед и назад или конкретный экран может быть указан его объектом или номером:

Фокус и функции обратного вызова

Строки текста/чисел, показанные на дисплее, могут быть интерактивными. Каждая строка обладает прикрепленными к ней функциями обратного вызова (по умолчанию до 8 штук). Они прикрепляются с помощью числа, указанного пользователем:

Чтобы вызвать прикрепленную к строке функцию, необходимо, чтобы на строку был наведен фокус (строка была выбрана). Для циклического перемещения фокуса по строкам, показанным на экране, используйте метод:

Когда строка выбрана, может быть вызвана одна из прикрепленных функций с помощью:

number указывает, какая из прикрепленных функций дожна быть вызвана.

Источник

Многоуровневое меню для Arduino и не только

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Несколько месяцев назад на хабре появилась статья «Реализация многоуровневого меню для Arduino с дисплеем». «Но, погодите, — подумал я. — Я написал такое меню еще шесть лет назад»!

В далеком 2009 году, я написал первый проект на базе микроконтроллера и дисплея под названием «Автомат управления освещением», для которого потребовалось создать такую оболочку меню, в которую влезет тысяча конфигов, а то и более. Проект был успешно рожден, компилируется и способен работать до сих пор, а оболочка менюОС пошла кочевать из проекта в проект, используя лучшие практики Ущербно-Ориентированного программирования. «Хватит это терпеть» сказал я, и переписал код.

Подкатом вы найдете legacy-код отборного качества, сказ о том, как я его переписал, а также инструкции для тех, кто захочет это использовать.

Требования и возможности менюОС

Файловая структура

В качестве примера, будем разбирать следующую структуру меню(слева номер пункта):

Главным догматом менюОС является «Все есть файл». Да будет так.
У каждого файла есть тип, название, родительская папка, прочие параметры
Опишем структурой:

type == T_FOLDER

Основным файлом является папка. Она и позволяет создать древовидную структуру всего меню.
Самая главная здесь — корневая папка под номером нуль. Что бы не произошло, в итоге мы вернемся в нее.
Параметрами папки являются

В корневой папке 0 лежат файлы 1 и 2, всего 2 штуки.
Опишем ее так:

type == T_DFOLDER

В Папке 3 лежит несколько копий одной и той же программы, однако с разными ключами запуска.
Например, в автомате управления освещением имеется возможность установить до 64 суточных программ, с 16 интервалами в каждой. Если описывать каждый пункт, потребуется 1024 файла. На практике достаточно двух. А хлебные крошки скормим программе в виде параметров.

Нехитрая математика подсказывает нам, что если все 256 файлов будут динамическими папками с максимальным числом копий, общее число пунктов меню в системе составит 256^256 = 3.2 x 10^616. Этого ТОЧНО хватит на любой адекватный и не очень случай.

type == T_APP

Приложение. Его задача — прописаться в диспетчере задач (встроенном или внешнем), перехватить управление кнопками и править.

type == T_CONF

Конфиг-файл, ради которого и затеян весь сыр-бор. Позволяет устанавливать булево или числовое значение какого-либо параметра. Работает с int16_t.

type == S_CONF

Интересный(но оставшийся пока только в старом коде) конфиг, работает в связке с T_SFOLDER

type == T_SFOLDER

Особый вид папки вынесен ближе к конфигу, так как является одной из его разновидностей.
Представьте себе, у вас в системе зашита возможность работы по RS-485 по протоколам A,B или C. Помещаем в папку кучку файлов вида S_CONF и выбираем из них необходимый. Более того, когда мы зайдем в папку вновь, курсор подсветит активный вариант.
mode1, mode2 аналогичны для T_FOLDER. Дочерними файлами являются только T_SCONF

Результаты рефакторинга

Создание своего проекта

Настройка проекта включает в себя следующие пункты:

Создание файлов

Создадим массивы по ранее рассмотренной структуре

Создадим массив для конфигов:

Настройка кнопок

Я предпочитаю подключать кнопки с замыканием на землю и подтягивающим резистором к питанию, который всегда в наличии в МК.
меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2
В файле hw/hwdef.h укажем названия регистров и расположение кнопок:

Настройка дисплея

Сейчас проект тащит за собой библиотеку GLCDv3, что не есть хорошо. Исторически так сложилось.
Ссылка на google-code — https://code.google.com/p/glcd-arduino

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

Рассмотрим пример приложения, использующий базовые функции меню.
menuos/app/sampleapp.cpp

Создадим класс со следующей структурой:

И набросаем основные функции:

И функция, которая будет вызываться каждую секунду:

Теперь в menu.cpp пропишем, что по номеру 2 будет вызываться наша программа:

Соберем проект и посмотрим, что у нас получилось:
меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Источник

Энкодер управление меню на дисплее

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Рассмотрим, как сделать меню с энкодером Ардуино на дисплее LCD 1602 I2C. Мы представим два примера: меню для включения светодиодов и меню на дисплее с управлением от энкодера яркостью светодиодов. Рекомендуем вам ознакомиться с подключением к Arduino дисплея LCD 1602 Arduino и модуля энкодер Ардуино. Если вы уже подключали данные модули, то можно приступать к этому мини проекту.

Меню на Ардуино LCD 1602 с энкодером

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Примеры меню с модулем энкодера и жк дисплеем, размещенные на этой странице, вы сможете адаптировать под свои нужды. Во многих проектах на Ардуино требуется для пользователя создать возможность для настройки или управления устройством на микроконтроллере. Энкодер позволяет сделать простое и нативное меню на LCD дисплее для управления светодиодами, микро серво Ардуино или для других задач.

Как сделать меню с энкодером на дисплее

Для этого проекта нам потребуется:

Скетч. Управление энкодером меню дисплея LCD

В первом, более простом примере, в меню дисплея имеется три пункта которые можно менять с помощью вращения ручки энкодера. При нажатии на тактовую кнопку энкодера, включается выбранный цвет RGB светодиода. В зависимости от положения курсора на дисплее, при помощи условного оператора if включается нужный цвет. Соберите схему, как показано на картинке выше и загрузите следующую программу.

Пояснения к коду:

Скетч. Двухуровневое меню с энкодером Ардуино

В следующем примере меню имеет второй уровень для регулировки яркости каждого светодиода отдельно. Переход из одного меню в другое происходит при нажатии кнопки энкодера, при котором меняется значение глобальной переменной w в скетче. Схема подключения светодиодов и модулей к микроконтроллеру остается прежней, как на картинке выше, следует лишь загрузить в плату следующий код программы.

Пояснения к коду:

Заключение. Мы рассмотрели два примера создания меню с энкодером на дисплее 1602 IIC Arduino. Если вы уловили всю суть управления меню с помощью энкодера (датчик угла поворота), то легко сможете использовать представленные примеры в своих собственных проектах с дисплеем на Ардуино. Если у вас еще остались вопросы по данной теме, то вы можете их оставлять в комментариях к этой записи.

Источник

Простое меню на Arduino и ЖК дисплее

В разнообразных проектах на основе платы Arduino достаточно часто возникает задача создания меню, отображаемого на экране ЖК дисплея 16х2 и управляемого с помощью кнопок. В данной статье мы рассмотрим один из самых простых способов создания подобного меню (какой я только нашел в интернете). В этом проекте мы с помощью данного меню будем управлять светодиодом, но его легко можно адаптировать под любые другие электронные проекты на основе платы Arduino.

Необходимые компоненты

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

Схема проекта

Схема проекта меню на основе платы Arduino и ЖК дисплея 16х2 представлена на следующем рисунке.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2На следующем рисунке эта схема показана применительно к ее сборке на макетной плате.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Далее на нескольких рисунках последовательно представлен процесс сборки этой схемы на макетной плате.

Сначала подключаем ЖК дисплей – питание и общий провод.

Затем подключаем контакты для передачи данных ЖК дисплея. Здесь использован 8-битный способ подключения ЖК дисплея к плате Arduino, но можно упростить схему, использовав 4-битный режим.

Подключаем контакт 16 ЖК дисплея на землю, а к контакту 15 дисплея подключаем резистор сопротивлением 1 Ом. Автор проекта (ссылка на оригинал приведена в конце статьи) рассчитал сопротивление данного резистора исходя из даташита на используемую им модель ЖК дисплея (LMB 162ABC). Если фоновая подсветка дисплея (Backlight) вам не нужна, то эти контакты можно оставить неиспользованными.

Далее подключаем светодиод к контакту 9 платы Arduino через токоограничивающий резистор 220 Ом.

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

Исходный код программы (скетча)

Автор проекта разработал его код таким образом, чтобы его можно было легко адаптировать (изменять) под другие проекты. Схема меню, реализуемая кодом программы, показана на следующем рисунке.

При первоначальном нажатии кнопки вы можете выбрать пункт Navigate (навигация) или Execute (исполнение).

Пункт Execute (исполнение) : в этом пункте мы будем управлять светодиодом – включать/выключать, плавно угасать или мигать.

Пункт Navigate (навигация) : этот пункт меню мы будем использовать для навигации с помощью кнопок.

На следующем рисунке видно как автор проекта с помощью ленты подписал названия кнопок для упрощения навигации по меню.

Далее представлен исходный код программы для реализации меню.

Источник

Текстовый экран 16×2: инструкция по подключению и примеры использования

Текстовый экран 16×2 пригодится для вывода показаний датчиков, отображения простых меню, подсказок и приветствий. меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Видеообзор

Примеры работы для Arduino

В качестве примера подключим дисплей к управляющей плате Arduino Uno.

Подключение к Arduino

ВыводОбозначениеПин Arduino Uno
1GNDGND
2VCC5V
3VOGND
4RS11
5R/WGND
6E12
7DB0
8DB1
9DB2
10DB3
11DB45
12DB54
13DB63
14DB72
15VCC5V
16GNDGND

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Для упрощения работы с LCD-дисплеем используйте встроенную библиотеку Liquid Crystal. В ней вы найдёте примеры кода с подробными комментариями.

Вывод текста

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Кириллица

Существует два способа вывода кириллицы на текстовые дисплеи:

Рассмотрим оба способа более подробно.

Таблица знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.

Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

Сравните две строки кода для вывода надписи «Яeee»:

Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Переключение страниц знакогенератора

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

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2Полную таблицу символов с кодами можно найти в документации к экрану.

Использование библиотеки LiquidCrystalRus

Совсем не обязательно мучатся со знакогенератором, чтобы вывести русский символ. Для решения проблемы скачайте и установите библиотеку LiquidCrystalRus.

Это копия оригинальной библиотеки LiquidCrystal с добавлением русского языка. Добавленный в библиотеку код трансформирует русские символы UTF8 в правильные коды для текстового экрана.

В качестве примера выведем фразу «Привет от Амперки» на дисплей.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Примеры работы для Espruino

В качестве примера подключим дисплей к управляющей плате Iskra JS.

Подключение к Iskra JS

ВыводОбозначениеПин Iskra JS
1GNDGND
2VCC5V
3VOGND
4RSP11
5R/WGND
6EP12
7DB0
8DB1
9DB2
10DB3
11DB4P5
12DB5P4
13DB6P3
14DB7P2
15VCC5V
16GNDGND

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Для работы с LCD-дисплеем из среды Espruino существует библиотека HD44780.

Вывод текста

Для вывода программы приветствия, воспользуйтесь скриптом:

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Кирилица

Вывод кирилицы на дисплей с помощью платформы Iskra JS доступен через встроенную в дисплей таблицу знакогенератора.

Таблица знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.

Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

Сравните две строки кода для вывода надписи «Яeee»:

Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2

Переключение страниц знакогенератора

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

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

меню для ардуино 16x2. Смотреть фото меню для ардуино 16x2. Смотреть картинку меню для ардуино 16x2. Картинка про меню для ардуино 16x2. Фото меню для ардуино 16x2Полную таблицу символов с кодами можно найти в документации к экрану.

Комнатный термометр

Дисплей удобен для отображения показаний модулей и сенсоров. Сделаем задатки «Умного Дома», а именно «комнатный термометр».

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *