Отображаем числа светодиодом

от автора

Привет! Интернет вещей (IoT) уже на слуху у каждой бабушки или у дедушки. В стайке, теплице или гараже, наверняка, уже стоит умная розетка. Перейдём к делу. Надо узнать влажность и температуру, но дисплей по какой-то причине использовать не предоставляется возможным.

Список причин:

  • дорого стоит;
  • боится влаги;
  • лень паять;
  • мелкий шрифт, который совсем не видать;
  • бабушка обеспокоена эстетикой внутри теплицы, а ещё она ценит минимализм;
  • всё перечисленное вместе.

В таком случае есть отличный повод использовать цветовой подход к отображению информации. Всё бы ничего, да вот основных цветов совсем никудышно мало — каких-то семь (из радуги). А сможете различить голубой от синего или жёлтый от оранжевого? Если Вы и сможете, то бабушка на вряд ли. Что делать? Убрать такие странные цвета! Оставим: Красный, Жёлтый, Зелёный, Синий, Фазан Фиолетовый и Белый (неожиданно, да?). Сколько получилось? 6. А цифр-то 10, да ещё и минус для отрицательных чисел, плавающая точка и разделитель. Проявим смекалку и сделаем мигалку! Фиолетовый — это будет 5, а шесть это будет 5 + 1, а 1 будет Красный. Как раз уложились. Хух! В таблице 1 наглядно показаны цвета для соответствующих символов.

Таблица 1

Цифра (или символ) Цвет
Ноль мигает ФИОЛЕТОВЫЙ
Один горит КРАСНЫЙ
Два горит ЖЁЛТЫЙ
Три горит ЗЕЛЁНЫЙ
Четыре горит СИНИЙ
Пять горит ФИОЛЕТОВЫЙ
Шесть мигает ФИОЛЕТОВЫЙ / КРАСНЫЙ
Семь мигает ФИОЛЕТОВЫЙ / ЖЁЛТЫЙ
Восемь мигает ФИОЛЕТОВЫЙ / ЗЕЛЁНЫЙ
Девять мигает ФИОЛЕТОВЫЙ / СИНИЙ
Минус (-) мигает БЕЛЫЙ / КРАСНЫЙ
Точка (.) мигает БЕЛЫЙ
Конец строки (\n) горит БЕЛЫЙ

Для того, чтобы отобразить число, необходимо, разумеется, скачать и подключить библиотеку. Затем объявить пользовательскую callback-функцию void callback(int, int, int) R, G, B — каналы (от 0 до 255), которая будет обращаться к аппаратной части (зажигать светодиод). Вызвать функцию lightf, где первый аргумент будет указатель на эту самую callback-функцию, затем строка с форматом, которая полностью аналогична printf-ной и сколько угодно аргументов. Не забывайте использовать символ новой строки \n, после каждого спецификатора в форматной строке.

У меня под рукой лежит Базовое устройство M5Stack FIRE со встроенными Neopixel-панелями, для пробы как ничто лучше подойдёт. Видео с демонстрацией скетча, отображающего число Пи с точностью до 6 знаков после запятой можно посмотреть тут.

Я не просто так в самом начале сказал про IoT. Если серьёзно, то данный подход отлично подойдёт для отображения PIN-кода для сопряжения устройств и т. п.

Любите и не забывайте своих стариков. Спасибо за внимание!

Ссылка на библиотеку вот


ссылка на оригинал статьи https://habr.com/ru/post/476858/


Комментарии

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

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