Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Дисплеи chevron_right Управление матрицей светодиодов 8×8: Row-Column Scanning

Управление матрицей светодиодов 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.RowColumnArduino pin number
15-13
27-12
3-211
4-310
58-16 (analog pin 2)
6-517 (analog pin 3)
76-18 (analog pin 4)
83-19 (analog pin 5)
91-2
10-43
11-64
124-5
13-16
142-7
15-78
16-89

---

Необходимые компоненты

  • Arduino Board
  • Матрица светодиодов 8×8
  • 2 потенциометра на 10 кОм
  • Соединительные провода
  • Макетная плата (breadboard)
  • 8 резисторов на 1 кОм

---

Схема подключения

Все 16 выводов матрицы подключаются к 16 пинам Arduino. Четыре аналоговых пина (A2A5) используются как цифровые выходы (пины 16–19). Порядок пинов задаётся двумя массивами в коде.

Два потенциометра, подключённые к аналоговым входам A0 и A1, управляют положением светящейся точки по горизонтали и вертикали.

Важно! Обязательно добавьте 8 резисторов на 1 кОм последовательно с проводами, выделенными жёлтым на схеме ниже. Без резисторов матрица может выйти из строя из-за превышения допустимого тока через светодиоды.

Circuit diagram of the LED matrix. Схема подключения матрицы светодиодов 8×8 к Arduino UNO через макетную плату

---

Принципиальная схема

Schematic of the LED matrix. Принципиальная схема матрицы светодиодов 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.