Управление матрицей светодиодов 8×8: Row-Column Scanning
Пошаговый урок по управлению матрицей светодиодов 8×8 с помощью Arduino методом построчно-столбцового сканирования и двух потенциометров.
Светодиодные дисплеи часто выпускаются в виде матриц LEDs, где строки объединены по общим анодам, а столбцы — по общим катодам (или наоборот). Вот как выглядит такая typical example и её принципиальная схема:
Фотография матрицы светодиодов 8×8
Подобные матрицы — очень удобный инструмент для отображения символов, анимации и простой графики. Чтобы управлять матрицей, нужно подключить и строки, и столбцы к микроконтроллеру. Столбцы соединены с LEDs катодами (см. рисунок 1): чтобы хотя бы один LEDs в столбце мог загореться, на столбец нужно подать LOW. Строки соединены с LEDs анодами: чтобы конкретный светодиод включился, на строку нужно подать HIGH. Если строка и столбец находятся в одном состоянии (оба HIGH или оба LOW), разность потенциалов через светодиод равна нулю — он не светится.
Чтобы зажечь отдельный светодиод, установите его столбец в LOW, а строку — в HIGH. Чтобы управлять несколькими LEDs в одной строке, установите строку в HIGH, затем поочерёдно переключайте столбцы: LOW столбец зажжёт соответствующий светодиод, а HIGH — погасит. Конкретно: сначала переведите нужный столбец в HIGH, затем установите каждый столбец в LOW или HIGH в зависимости от того, должен ли гореть светодиод.
Совет. Пины, переведённые в режим
OUTPUTкомандой PinMode, по умолчанию находятся в состоянии LOW, если вы явно не задали другое значение командой OUTPUT. Это важно помнить при инициализации матрицы, чтобы случайно не зажечь лишние светодиоды.
Готовые матрицы 8×8 широко доступны, но при желании можно собрать матрицу самостоятельно из 64 отдельных LEDs по схеме выше — это хорошая практика для понимания принципа работы.
Порядок подключения строк и столбцов к конкретным пинам микроконтроллера не принципиален: назначение задаётся программно в массивах. Главное — удобство разводки проводов на макетной плате. Типичная схема назначения пинов приведена в таблице ниже.
Таблица соответствия пинов матрицы и пинов Arduino (по схеме выше):
| Matrix pin no. | Row | Column | Arduino pin number |
|---|---|---|---|
| 1 | 5 | - | 13 |
| 2 | 7 | - | 12 |
| 3 | - | 2 | 11 |
| 4 | - | 3 | 10 |
| 5 | 8 | - | 16 (analog pin 2) |
| 6 | - | 5 | 17 (analog pin 3) |
| 7 | 6 | - | 18 (analog pin 4) |
| 8 | 3 | - | 19 (analog pin 5) |
| 9 | 1 | - | 2 |
| 10 | - | 4 | 3 |
| 11 | - | 6 | 4 |
| 12 | 4 | - | 5 |
| 13 | - | 1 | 6 |
| 14 | 2 | - | 7 |
| 15 | - | 7 | 8 |
| 16 | - | 8 | 9 |
---
Необходимые компоненты
- Arduino Board
- Матрица светодиодов 8×8
- 2 потенциометра на 10 кОм
- Соединительные провода
- Макетная плата (breadboard)
- 8 резисторов на 1 кОм
---
Схема подключения
Все 16 выводов матрицы подключаются к 16 пинам Arduino. Четыре аналоговых пина (A2–A5) используются как цифровые выходы (пины 16–19). Порядок пинов задаётся двумя массивами в коде.
Два потенциометра, подключённые к аналоговым входам A0 и A1, управляют положением светящейся точки по горизонтали и вертикали.
Важно! Обязательно добавьте 8 резисторов на 1 кОм последовательно с проводами, выделенными жёлтым на схеме ниже. Без резисторов матрица может выйти из строя из-за превышения допустимого тока через светодиоды.
Схема подключения матрицы светодиодов 8×8 к Arduino UNO через макетную плату
---
Принципиальная схема
Принципиальная схема матрицы светодиодов 8×8 с обозначением строк (ROW), столбцов (COL) и номеров выводов (PIN)
---
Как это работает
Метод row-column scanning (построчно-столбцовое сканирование) основан на том, что в каждый момент времени активна только одна строка. Микроконтроллер быстро перебирает строки одну за другой, устанавливая нужные столбцы в HIGH или LOW. За счёт высокой скорости переключения и инерции зрения человек воспринимает картину как статичную. Этот принцип используется во всех LED-дисплеях, от маленьких матриц до больших табло.
В данном уроке потенциометры задают координаты одной светящейся точки: один управляет строкой, другой — столбцом. Значения считываются через analogRead() и масштабируются в диапазон 0–7.
---
Код
---
Типичные ошибки
- Забыли резисторы — без токоограничивающих резисторов на 1 кОм светодиоды могут перегореть уже при первом включении.
- Перепутаны строки и столбцы — если точка движется не в ту сторону при вращении потенциометра, поменяйте местами массивы
rowsиcolsв коде или переназначьте пины. - Мерцание — если матрица мерцает, скорее всего, цикл сканирования слишком медленный. Уберите лишние задержки (
delay()) из основного цикла. - Горят лишние светодиоды — проверьте, что все неиспользуемые строки переведены в
LOWперед переключением на следующую строку.
---
Как проверить результат
После загрузки скетча поверните потенциометр на A0 — светящаяся точка должна двигаться по горизонтали. Потенциометр на A1 управляет вертикальным положением. Если точка перемещается плавно по всей матрице без посторонних засветок — схема собрана правильно.
---
Дополнительные материалы
Больше базовых примеров вы найдёте в разделе built-in examples.
Подробное описание всех функций и конструкций языка Arduino доступно в language reference.