====== Светодиодная матрица 8×8 (Troyka-модуль) ====== [[amp>product/troyka-led-matrix?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Troyka Led Matrix]] — цепочка из шестидесяти четырёх красных светодиодов, собранная на одноюнитовом модуле. {{ :продукты:troyka-led-matrix:troyka-led-matrix.4.jpg |}} Обычно подключение светодиодных матриц ассоциируется кропотливой работой и острой нехваткой пинов на платах. Мы добавили драйвер управления матрицей. Теперь модуль управляется по скоростному интерфейсу I²C и занимает всего два пина микроконтроллера. ===== Видеообзор ====== {{youtube>CNZs8dNcxKg?large}} ===== Подключение и настройка ===== Светодиодная матрица общается с управляющей электроникой по [[Видеоуроки:7-i2c-и-processing|I²C/TWI]]. При подключении к [[amp>collection/arduino?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Arduino]] или [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Iskra JS]] удобно использовать [[amp>/product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Troyka Shield]]. {{ :продукты:troyka-led-matrix:troyka-led-matrix_sheme_troyka-shield.png?nolink |}} С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Troyka Slot Shield]] можно обойтись без лишних проводов.{{ :продукты:troyka-led-matrix:troyka-led-matrix_sheme_troyka-slot-shield.png?nolink |}} ===== Примеры работы ===== Рассмотрим несколько примеров работы светодиодных матриц с [[amp>collection/arduino?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Arduino]]. ==== Вывод случайных пикселей ==== Мы будем поочерёдно добавлять и удалять случайные пиксели. В итоге получится довольно забавная мерцающая картина, которая пригодится для создания «инопланетных» интерфейсов в декорациях квестов. // библиотека для работы I²C #include "Wire.h" // библиотека для работы со светодиодной матрицей #include "TroykaLedMatrix.h" // создаём объект matrix для работы с матрицей TroykaLedMatrix matrix; void setup() { // начало работы с матрицей matrix.begin(); // очищаем матрицу matrix.clear(); } void loop() { // заполняем матрицу случайным пикселем matrix.drawPixel(random(8),random(8)); // очищаем на матрице случайный пиксель matrix.clearPixel(random(8),random(8)); // ждём 50 мс delay(50); } ==== Вывод изображений ==== Методы библиотеки позволяют выводить изображение форматом 8×8. В качестве примера выведем сердце на матрицу. // библиотека для работы I²C #include "Wire.h" // библиотека для работы со светодиодной матрицей #include "TroykaLedMatrix.h" // создаём объект matrix для работы с матрицей TroykaLedMatrix matrix; // массив картнки сердца const uint8_t heart[] { 0b00000000, 0b01100110, 0b11111111, 0b11111111, 0b11111111, 0b01111110, 0b00111100, 0b00011000, }; void setup() { // начало работы с матрицей matrix.begin(); // очищаем матрицу matrix.clear(); // отображаем на матрице сердце matrix.drawBitmap(heart); } void loop() { } {{ :продукты:troyka-led-matrix:troyka-led-matrix_heart.png?nolink |}} ==== Регулировка яркости матрицы ==== Контроллер матрицы позволяет регулировать яркость светодиодной матрицы. В качестве примера будем изменять яркость свечения в зависимости от положения потенциометра. Для этого добавьте к проекту [[amp>product/troyka-potentiometer?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Потенциометр (Troyka-модуль)]] // библиотека для работы I²C #include "Wire.h" // библиотека для работы со светодиодной матрицей #include "TroykaLedMatrix.h" // создаём объект matrix для работы с матрицей TroykaLedMatrix matrix; // массив картнки сердца const uint8_t heart[] { 0b00000000, 0b01100110, 0b11111111, 0b11111111, 0b11111111, 0b01111110, 0b00111100, 0b00011000, }; void setup() { // начало работы с матрицей matrix.begin(); // очищаем матрицу matrix.clear(); // отображаем на матрице сердце matrix.drawBitmap(heart); } void loop() { // считываем значение с потенциометра int sensorValue = analogRead(A3); // в зависимоти от занчения регулятора // устанавливаем яркость светодиодной матрицы if (sensorValue < 100) { matrix.setCurrentLimit(ROW_CURRENT_05MA); } else if (sensorValue >= 100 && sensorValue < 200) { matrix.setCurrentLimit(ROW_CURRENT_10MA); } else if (sensorValue >= 200 && sensorValue < 300) { matrix.setCurrentLimit(ROW_CURRENT_15MA); } else if (sensorValue >= 300 && sensorValue < 400) { matrix.setCurrentLimit(ROW_CURRENT_20MA); } else if (sensorValue >= 400 && sensorValue < 500) { matrix.setCurrentLimit(ROW_CURRENT_25MA); } else if (sensorValue >= 500 && sensorValue < 600) { matrix.setCurrentLimit(ROW_CURRENT_30MA); } else if (sensorValue >= 600 && sensorValue < 700) { matrix.setCurrentLimit(ROW_CURRENT_35MA); } else if (sensorValue >= 700 && sensorValue < 800) { matrix.setCurrentLimit(ROW_CURRENT_40MA); } else if (sensorValue >= 800 && sensorValue < 900) { matrix.setCurrentLimit(ROW_CURRENT_45MA); } else if (sensorValue >= 900 && sensorValue < 1000) { matrix.setCurrentLimit(ROW_CURRENT_45MA); } else { matrix.setCurrentLimit(ROW_CURRENT_50MA); } } {{ :продукты:troyka-led-matrix:troyka-led-matrix_heart-brightness.gif?nolink |}} ==== Вывод символов ==== Если подключить встроенный в библиотеку шрифт, возможно выводить любой символ из таблицы ASCII. В качестве примера выведем по символьно слово «Amperka». // библиотека для работы I²C #include "Wire.h" // библиотека для работы со светодиодной матрицей #include "TroykaLedMatrix.h" // создаём объект matrix для работы с матрицей TroykaLedMatrix matrix; void setup() { // начало работы с матрицей matrix.begin(); // очищаем матрицу matrix.clear(); // устанавливаем шрифт matrix.selectFont(FONT_8X8_BASIC); } void loop() { // выводим поочерёдно слово «Amperka» matrix.drawSymbol('A'); delay(1000); matrix.drawSymbol('M'); delay(1000); matrix.drawSymbol('P'); delay(1000); matrix.drawSymbol('E'); delay(1000); matrix.drawSymbol('R'); delay(1000); matrix.drawSymbol('K'); delay(1000); matrix.drawSymbol('A'); delay(1000); // очищаем матрицу matrix.clear(); delay(1000); } {{ :продукты:troyka-led-matrix:troyka-led-matrix_printsymbolsamperka.gif?nolink |}} ==== Строка из матриц ==== Одна матрица хорошо, а три ещё лучше. Драйвер управления светодиодной матрицей имеет функцию выбора адреса с возможностью подключения до четырёх матриц. Установите ещё две матрицы на Troyka Slot Shield, заранее модернизировав их для работы с разными адресами. Следующий код будет отображать на трёх матрицах могучий язык «C++». // библиотека для работы I²C #include "Wire.h" // библиотека для работы со светодиодной матрицей #include "TroykaLedMatrix.h" // создаём объекты matrix для работы с матрицами // для каждой матрицы передаём свой адрес // подробнее читайте на: // http://wiki.amperka.ru/продукты:troyka-led-matrix TroykaLedMatrix matrix1(0x60); TroykaLedMatrix matrix2(0x61); TroykaLedMatrix matrix3(0x62); void setup() { // начало работы с матрицами matrix1.begin(); matrix2.begin(); matrix3.begin(); // очищаем матрицы matrix1.clear(); matrix2.clear(); matrix3.clear(); // устанавливаем шрифт matrix1.selectFont(FONT_8X8_BASIC); matrix2.selectFont(FONT_8X8_BASIC); matrix3.selectFont(FONT_8X8_BASIC);; // выводим на каждую матрицу по символу из строки «C++» matrix1.drawSymbol('C'); matrix2.drawSymbol('+'); matrix3.drawSymbol('+'); } void loop() { } {{ :продукты:troyka-led-matrix:troyka-led-matrix_lot-of-matrix.png?nolink |}} ===== Элементы платы ===== {{ :продукты:troyka-led-matrix:troyka-led-matrix_annotation.png?nolink |}} ==== Светодиодная матрица ==== Светодиодная матрица ''788BS'' — это панель из 64 красных светодиодов. === Принципиальная схема === {{ :продукты:troyka-led-matrix:troyka-led-matrix_788bs_schematic.png?nolink |}} ==== Драйвер светодиодной матрицы ==== Драйвер ''IS31FL3728'' представляет из себя контроллер светодиодной матрицы ''8''×''8''. Общение с управляющей платой осуществляется по протоколу I²C. Контроллер в разы облегчает работу с матрицей и уменьшает количество занятых пинов до двух: ''SDA'' и ''SCL''. Приятным бонусом является выбор адреса контроллера, благодаря чему есть возможность подключить до четырёх матриц к управляющей плате по двум проводам. ==== Площадки выбора адреса ==== Соедините капелькой припоя контакты специальных перемычек на модуле. Это позволит использовать до 4 матриц в одном проекте. {{ :продукты:troyka-led-matrix:troyka-led-matrix_address.gif?nolink |}} ==== Контакты подключения трёхпроводных шлейфов ==== //Группа питания и сигнальный// * Сигнальный пин (S) — входной пин аудио сигнала. Используется только в режиме эквалайзера. При обычной работе с модулем не используется. * Питание (V) — соедините с питанием микроконтроллера * Земля (G) — соедините с землёй микроконтроллера //Шина I2C// * Сигнальный (D) — подключите к пину ''SDA''микроконтроллера. * Сигнальный (C) — подключите к пину ''SCL''микроконтроллера. ===== Принципиальная и монтажная схемы ===== {{:продукты:troyka-led-matrix:troyka-led-matrix_schematic.png?direct&490 |}} {{:продукты:troyka-led-matrix:troyka-led-matrix_layout_top.png?direct&150 |}} {{:продукты:troyka-led-matrix:troyka-led-matrix_layout_bottom.png?direct&150 |}} ===== Характеристики ===== * Контроллер матрицы: IS31FL3728 * Модуль матрицы: светодиодная матрица 788BS * Количество светодиодов: 64 * Рабочее напряжение: 3,3–5 В * Потребляемый ток: до 2 А * Габариты: 25,4×25,4 мм ===== Ресурсы ===== * [[amp>product/troyka-led-matrix?utm_source=man&utm_campaign=troyka-led-matrix&utm_medium=wiki|Светодиодная матрица (Troyka-модуль)]] в магазине * [[https://github.com/amperka/hardware-drawings/blob/master/troyka-led-matrix.svg|Векторное изображение светодиодной матрицы]] * [[https://github.com/amperka/TroykaLedMatrix|Библиотека для Arduino]] * [[http://wiki.amperka.ru/js:led-matrix|Описание библиотеки для Espruino]] * {{:продукты:troyka-led-matrix:troyka-led-matrix_788bs_datasheet.pdf|Даташит на матрицу 788BS}} * {{:продукты:troyka-led-matrix:troyka-led-matrix_31fl3728_datasheet.pdf|Даташит на контроллер матрицы 31FL3728}}