Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создание меню на Nokia 5110 LCD с ротационным энкодером на Arduino UNO

Компоненты и расходные материалы

Программное обеспечение и онлайн-сервисы

О проекте

В этом уроке мы создадим собственное меню для популярного дисплея Nokia 5110, чтобы сделать проекты более удобными и функциональными.

На дисплее отображается простое меню. С помощью ротационного энкодера можно навигировать вверх/вниз и выбирать пункты нажатием встроенной кнопки. При выборе пункта открывается экран редактирования параметра. Повторное нажатие возвращает в главное меню. Меню содержит 6 пунктов с прокруткой (на экране видно 3 пункта одновременно).

Шаг 1: Приобретение компонентов

Стоимость проекта менее $10. Необходимые детали:

Шаг 2: Дисплей Nokia 5110

Nokia 5110 — мой любимый дисплей для Arduino-проектов. Базовый графический LCD-экран (контроллер PCD8544), изначально для мобильных телефонов. Очень низкое потребление: 0.4 мА при включённой подсветке, <0.06 мА в спящем режиме. Интерфейс — последовательный (8 проводов). Подробный обзор дисплея доступен в прикреплённом видео. Цена ~$4.

Шаг 3: Ротационный энкодер

Электромеханическое устройство, преобразующее угловую позицию в цифровой код. Используется в промышленности, робототехнике, устройствах ввода. Наш дешёвый энкодер имеет встроенную кнопку и требует 5 проводов для подключения. Цена ~$1.5. Подробный урок по энкодерам прикреплён.

Шаг 4: Сборка проекта

Подключение дисплея:

Подключение энкодера:

Схемотехнический диаграмм доступен в описании видео.

Шаг 5: Код проекта

Используются 4 библиотеки:

Ключевая функция drawMenu() отвечает за отрисовку меню и вызывается каждые несколько миллисекунд.

Глобальные переменные:

int menuitem = 1;    // выбранный пункт меню
int frame = 1;       // видимый фрейм (какие 3 пункта на экране)
int page = 1;        // текущий экран: 1 — главное меню, 2 — редактирование
int lastMenuItem = 1;

Названия пунктов меню вынесены в переменные для лёгкой модификации:

String menuItem1 = "Contrast";
String menuItem2 = "Volume";
String menuItem3 = "Language";
String menuItem4 = "Difficulty";
String menuItem5 = "Light: ON";
String menuItem6 = "Reset";

boolean backlight = true;
int contrast = 60;
int volume = 50;
String language[3] = {"EN", "ES", "EL"};
int selectedLanguage = 0;
String difficulty[2] = {"EASY", "HARD"};
int selectedDifficulty = 0;

В loop() вызывается drawMenu(), затем считывается энкодер и кнопка. Логика навигации:

Код содержит ~400 строк, но структурирован для лёгкого понимания и модификации. Полный скетч прикреплён (файл Nokia5110MenuRotary.ino).

Шаг 6: Тестирование

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

Производственный процесс

  1. Создание потрясающей системы Ambilight для монитора на Arduino
  2. Создание осциллографа на Arduino Nano с дисплеем Nokia 5110 (20 кГц): простое DIY-руководство
  3. Создание анимации и игр на LCD 16×2 с Arduino UNO
  4. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  5. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  6. Веб-сервер на Arduino Uno WiFi: управление LED через браузер
  7. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  8. Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере
  9. Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python
  10. Сборка компактного FM-радио на Arduino Nano и RDA5807M