Привет! Интернет вещей (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/
Добавить комментарий