Приветствую уважаемые читатели! Продолжаем знакомство с LED матрицей 16 на 16 адресных светодиодов WS2812B. В этой статье мы подключим к матрице инкрементальный энкодер EC11 с кнопкой и будем управлять с помощью энкодера различными цветовыми эффектами матрицы.
Т.к. в функции loop() мы будем устанавливать паузы в выполнении скрипта с помощью функции delay(), то размещать здесь же код, работающий с энкодером, нельзя. Во время действия функции delay() скетч стоит на паузе и никакие блоки кода не выполняются. Следовательно и чтение положения регулятора энкодера не происходит.
Разместим блоки кода, отслеживающие положение ручки экодера, в отдельные функции, которые будут вызываться по прерыванию.
Прерывание позволяет приостановить выполнение основного блока кода, до выполнения функции, связанной с данным прерыванием. Прерывание может быть вызвано при разных, заранее определенных, условиях.
Для работы с прерываниями в Arduino IDE есть стандартная функция attachInterrupt(). Которая в качестве первого аргумента получает номер прерывания (у Arduino UNO для работы с прерываниями предусмотрено 2 пина: второй и третий), далее идет название функции и условие срабатывания.
Таким образом, итоговая схема с LED матрицей, энкодером, блоком питания выглядит как на картинки ниже.
Воспользуемся примерами из библиотеки FastLed, которые можно найти в папке examples этой библиотеки. О библиотеке FastLed, ее установке и основах работы с ней, я подробно рассказывал в своей прошлой статье о LED матрице - https://zen.yandex.ru/media/id/5ebd73d6fce1527a111c230d/led-matrica-16x16-adresnyh-svetodiodov-ws2812-obzor-ustanovka-biblioteki-podkliuchenie-k-arduino-5ec0346791f40d603f005f55. Добавляем в наш скетч некоторые эффекты из примеров этой библиотеки.
В первом примере, мы используем энкодер для изменения яркости матрицы. Вращая регулятор энкодера вправо, мы увеличиваем яркость, влево – уменьшаем. Нажатие на кнопку энкодера осуществляет переход к следующему эффекту.
Во втором примере с помощью энкодера мы изменяем скорость воспроизведения анимации.
В третьем примере, мы c помощью ручки энкодера управляем самой отрисовкой анимации, а именно меняем палитру цветов.
Вот такой получился пример возможностей управления LED матрицей с помощью энкодера. Если будут вопросы по схеме или скетчу задавайте в комментариях.
В следующей статье мы будем выводить на матрицу различные картинки, в том числе анимацию, а так же я покажу, как преобразовать символы любого шрифта в массив, для вывода на матрицу текстовой информации. Например, в виде бегущей строки.
Скетч из статьи можно загрузить по ссылке - https://yadi.sk/d/NfL7fUfqA-RhAQ
Ниже размещено видео, где всё более подробно рассказано и наглядно показано.
_________________________________________________________
Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!