4.01.8. Лабораторная работа №4.1.8.md
Адресная светодиодная матрица
Тема работы
Мы уже умеем управлять обычными и RGB-светодиодами
. Но если мы хотим создать бегущую строку или анимированное изображение, нам понадобится много светодиодов, и для каждого потребуется свой пин. Или нет? В этой лабораторной работе мы познакомимся с адресными светодиодами и матрицей 8x8 на их основе. Мы научимся управлять каждым из 64 светодиодов индивидуально, используя всего один пин Рудирона
, и выведем на матрицу флаг России.
Цель
- Понять принцип работы адресных светодиодов и матриц.
- Научиться работать с библиотекой
Rudiron_NeoPixel
для управления адресными устройствами. - Понять, как задавать цвет каждого пикселя и обновлять изображение на матрице.
- Создать эффектный проект с выводом статического изображения.
Оборудование и материалы
- Отладочная плата
Рудирон
. - Макетная плата.
- Адресная светодиодная матрица 8x8.
- Соединительные провода.
- USB-кабель для подключения
Рудирона
. - Компьютер с
Arduino IDE
и установленной библиотекойRudiron_NeoPixel
.
Ход работы
-
Как работают адресные светодиоды?
Секрет адресных светодиодов (самые популярные —
WS2812B
илиNeoPixel
) в том, что каждый из них — это не простоRGB-светодиод
, а маленькая система со встроенным микроконтроллером!- Последовательное соединение. Все светодиоды в матрице или ленте соединены в одну длинную цепочку. У каждого есть вход (
DIN
) и выход (DOUT
). Сигнал отРудирона
приходит на вход первого светодиода, а выход первого соединён со входом второго, и так далее. - Протокол одного провода.
Рудирон
по одному проводу отправляет длинный «поезд» данных. В этом поезде — «вагоны» для каждого светодиода. В каждом «вагоне» лежит информация о цвете (24 бита: 8 на красный, 8 на зелёный, 8 на синий). - Адресация. Первый светодиод в цепочке «отцепляет» от поезда первый вагон, забирает из него свой цвет и зажигает свои кристаллы. Оставшийся поезд он передаёт дальше, на выход (
DOUT
). Второй светодиод забирает следующий вагон, и так до конца цепочки.
Этот умный механизм позволяет управлять сотнями светодиодов, используя всего один пин микроконтроллера!
- Последовательное соединение. Все светодиоды в матрице или ленте соединены в одну длинную цепочку. У каждого есть вход (
-
Матрица 8x8 - подключение «змейкой»
В матрице 64 светодиода расположены в виде сетки 8x8. Но для контроллера это всё та же одна длинная лента из 64 светодиодов. Они подключены «змейкой»: первая строка идёт слева направо (пиксели 0-7), вторая — справа налево (пиксели 8-15), третья — снова слева направо, и так далее. Это важно учитывать при программировании координат.
-
Сборка схемы и установка библиотеки
- Скачайте и установите библиотеку
Rudiron_NeoPixel
из репозитория: Rudiron Libraries. - Подключите матрицу:
5V
матрицы — к пину 5VРудирона
.GND
матрицы — к пину GNDРудирона
.DIN
(вход данных) матрицы — к пину 2Рудирона
.
- Скачайте и установите библиотеку
-
Написание и загрузка кода
Напишем программу, которая нарисует на матрице флаг России.
- Установите перемычку
PRG | RUN
в положениеPRG
. -
В
Arduino IDE
введите следующий код:#include <Rudiron_NeoPixel.h> #define PIN 2 // Пин, к которому подключена матрица #define NUMPIXELS 64 // Общее количество светодиодов (8x8) // Создаём объект для управления матрицей Rudiron_NeoPixel pixels; void setup() { // Инициализируем матрицу pixels.attach(PIN, NUMPIXELS); } void loop() { // Рисуем флаг России // Белая полоса (верхние 2 или 3 строки) for (int i = 0; i < 24; i++) { pixels.setPixelColor(i, pixels.Color(150, 150, 150)); // Неяркий белый } // Синяя полоса (средние 2 или 3 строки) for (int i = 24; i < 40; i++) { pixels.setPixelColor(i, pixels.Color(0, 0, 255)); } // Красная полоса (нижние 2 или 3 строки) for (int i = 40; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); } // ОБЯЗАТЕЛЬНО! Отправляем данные на матрицу, чтобы она обновилась pixels.show(); // Больше ничего не делаем, флаг будет гореть постоянно while(true); }
- Нажмите кнопку «Upload», чтобы загрузить код на плату.
- Установите перемычку
-
Проверка работы
Сразу после загрузки ваша матрица должна загореться цветами российского флага: верхние строки — белым, средние — синим, нижние — красным.
Результаты
Вы успешно взяли под контроль целую матрицу из 64-х RGB-светодиодов
, используя всего один пин Рудирона
! Вы научились программно задавать цвет каждому пикселю и выводить статичное изображение.
Анализ результатов
pixels.attach(PIN, NUMPIXELS)
. Инициализирует библиотеку, сообщая ей, на каком пине находятся светодиоды и сколько их всего в цепочке.pixels.setPixelColor(n, color)
. Устанавливает цвет для светодиода с номеромn
. Важно, что в этот момент сам светодиод ещё не меняет цвет. Команда лишь записывает информацию в буфер в памяти микроконтроллера.pixels.Color(r, g, b)
. Удобная функция для создания 24-битного значения цвета из трёх компонент.pixels.show()
. Это самая главная команда. Именно она отправляет весь «поезд» данных из буфера на матрицу, заставляя все светодиоды обновить свой цвет одновременно.
Выводы
В этой лабораторной работе вы освоили адресные светодиоды — одну из самых эффектных и популярных технологий в DIY-электронике. Вы поняли, как с помощью специального протокола и библиотеки можно управлять огромным количеством пикселей, что открывает дорогу к созданию бегущих строк, анимаций, собственных экранов и систем декоративной подсветки.
Вопросы для самопроверки
- В чём главное преимущество адресных светодиодов перед обычными?
- Объясните своими словами, что такое «змеевидное» подключение в матрице.
- Какая команда физически отправляет данные на матрицу и заставляет её обновиться?
- Что произойдёт, если убрать команду
pixels.show()
из кода? - Как изменить код, чтобы нарисовать флаг Беларуси?
Вы научились рисовать светом!
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home