Светодиодная матрица 8х8 своими руками

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

На предыдущих уроках мы научились управлять группой из восьми светодиодов при помощи сдвигового регистра. Это оказалось немного сложнее, чем зажигать 1-2 светодиода напрямую с выводов общего назначения. Проблема, которую нам тогда предстояло решить, заключалась в ограниченном количестве управляемых выводов у контроллера Ардуино. Апогеем же наших изысканий стало использование динамической индикации для управления сразу тремя индикаторами-цифрами. Теперь пришло время еще немного усложнить задачу: учимся работать со светодиодной матрицей.

Матричный индикатор

А что будет, если мы разместим светодиоды не в виде цифры или шкалы, а в виде сетки? Получится уже вполне себе графический индикатор. То есть такой, на котором можно отобразить не только число, но и какое-то изображение.

Такая сетка называется матричным индикатором, а в случае использования светодиодов — светодиодной матрицей. Разрешение матричного индикатора — это количество точек по горизонтали и вертикали. Например, самые распространенные индикаторы имеют разрешение 8×8 точек.

Если требуется светодиодная матрица с большим разрешением, то её просто-напросто составляют из нескольких 8×8 индикаторов. Как это делать, мы увидим позже. А пока разберемся как соединяются все 64 светодиода внутри матрицы.

Конечно, можно бы было как и в случае семисегментного индикатора соединить все светодиоды общим катодом или анодом. В этом случае нам бы потребовалось либо 64 вывода контроллера, либо 8 сдвиговых регистров. Оба варианта весьма расточительны.

Более правильный вариант — объединить светодиоды в группы по 8 штук с общим катодом. Пусть это будут столбцы матрицы. Затем, параллельные светодиоды в этих столбцах объединить снова в группы по 8 штук уже с общим анодом. Получится вот такая схема:

Предположим, стоит задача зажечь светодиод R6C3. Для этого нам потребуется подать высокий уровень сигнала на вывод R6, а вывод C3 соединить с землей.

Светодиодная матрица на Ардуино, схема

Не выключая эту точку, попробуем зажечь другую — R3C7. Положительный контакт питания соединим с R3 и землю с C7. Но в таком случае строки R6 и R3 будут пересекаться с колонками C3 и C7 не в двух, а в четырех местах! Следовательно и зажжется не две, а четыре точки. Проблема!

Светодиодная матрица на Ардуино, схема

Очевидно, что помочь сможет всё та же динамическая индикация. Если мы будем включать точки R6C3 и R3C7 по-очереди очень быстро, то сможем использовать персистентность зрения — способность интерпретировать быстро сменяющиеся изображения как одно целое.

Светодиодная матрица и сдвиговые регистры

В нашем уроке мы будем подключать к Ардуино Уно самую простую светодиодную матрицу 8×8 красного свечения. Нумерация выводов начинается с нижнего левого угла. При этом, нумерация ног 1-16 не связана никакой логикой с нумерацией колонок и строк C и R.

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

Принципиальная схема светодиодная матрица Ардуино

Важное замечание №1. Необходимо, чтобы резисторы в этой схеме были на линиях, идущих от первого сдвигового регистра. Этот сдвиговый регистр отвечает за колонки. При таком подключении, каждый резистор будет задавать ток только для одного светодиода на каждом шаге динамического алгоритма. Следовательно, все светодиоды будут светиться равномерно.

Важное замечание №2. Указанная выше схема носит сугубо ознакомительный характер. Правильнее будет включить в разрыв между вторым регистром и матрицей дополнительную силовую микросхему, например транзисторную сборку ULN2003.

Программа

Чтобы было веселей, попробуем высветить на индикаторе смайлик. Как уже было сказано, для вывода изображения на матрицу воспользуемся динамической индикацией. А именно, будем высвечивать нашу картинку построчно. Сначала зажжем нужные колонки в самой верхней строке, затем во второй, в третьей, и так все 8 строк.

За колонки у нас будет отвечать первый сдвиговый регистр, а за строки второй. Следовательно, вывод строки будет состоять из двух последовательных записей в регистр: сначала передаем код строки, затем код точек в этой строке.

В этой программе мы также воспользуемся ускоренной версией функции digitalWrite. Это необходимо для того, чтобы процесс динамической индикации проходил очень быстро. В противном случае, мы увидим заметное мерцание матрицы.

Исходный код

Основная часть этой программы, включая переменные data_pin, sh_pin, st_pin, next_flick, to_flick и функцию fill уже известны нам из уроков про сдвиговый регистр и про динамическую индикацию.

Массив data хранит восемь строк нашей картинки. Для экономии памяти мы записали каждую комбинацию точек в бинарном виде.

Функция latchOn открывает защелку регистра. Это нужно делать только после заполнения обоих сдвиговых регистров.

После загрузки программы на Ардуино, на индикаторе появится смайл.

Анимация на светодиодной матрице

А теперь доработаем программу таким образом, чтобы изображение на индикаторе менялось каждые пол секунды. Для этого вспомним еще раз урок про выполнение действий по таймеру.

Загружаем программу на Ардуино и наблюдаем результат.

Масштабирование светодиодной матрицы

Светодиодная матрица с разрешением 8×8 подойдет для отображения двух цифр или простого символа. Если требуется вывести на индикатор какое-то более или менее полезное изображение, необходимо объединить матрицы. Делается это с помощью добавления новых сдвиговых регистров как по вертикали, так и по горизонтали.

Следует отметить, что быстродействия контроллера Ардуино Уно в связке со сдвиговыми регистрами хватит разве что на дисплей 16×16. Дальнейшее увеличение размеров светодиодного дисплея приведет к появлению заметного мерцания.

Задания

  • Гипноз. Запрограммировать контроллер таким образом, чтобы на светодиодной матрице с периодом в 1 секунду появлялись концентрические окружности с постоянно увеличивающимся радиусом.
  • Игра змейка. Реализовать на светодиодной матрице 8×8 такую известную игру, как змейка. В схему необходимо добавить четыре кнопки для управления направлением движения, а также зуммер для сигнализации события съедания яблок (или что там ест змея…).
  • Электронный уровень. Добавить в схему акселерометр. Написать программу, которая будет отображать на светодиодной матрице точку, координаты которой зависят от наклона всего устройства. Например, когда устройство зафиксировано параллельно земле (перпендикулярно вектору гравитации), то точка находится в центре. При наклоне электронного уровня влево, точка пропорционально смещается право.

К размышлению

1. У нас в RobotClass как раз есть такой модуль с I2C интерфейсом. Легко подключается к Ардуино. Познакомиться с этим модулем можно на уроке «Модуль матрицы 8×8 с I2C интерфейсом от ROC«.

2. В одном из следующих уроков мы также научимся управлять индикатором с помощью микросхемы MAX7219. Такой способ позволяет легко объединять несколько матриц в один большой дисплей, без необходимости сильно усложнять электрическую схему.

Как работает декоративная скульптура из светодиодов? Можно ли её собрать самостоятельно? Сколько нужно светодиодов и что нужно кроме них? На все эти вопросы вы найдете ответ в этой статье.

Led куб – что нужно для самостоятельной сборки

Если вы увлекаетесь самоделками, любите ковыряться в схемах электроники – попробуйте собрать светодиодный куб своими руками. Для начала нужно определиться с размерами. Поняв принцип работы устройства, вы можете модернизировать схему как с целью увеличения светодиодов, так и с меньшим их количеством.

Светодиодный куб 8x8x8 своими руками

Давайте разберем как это работает на примере куба со стороной в 8 светодиодов. Такой куб может испугать начинающих, но если вы будете внимательным при изучении материалов – вы с лёгкостью освоите его.

Чтобы собрать led cube 8x8x8 вам понадобится:

  • 512 светодиодов (например 5мм);
  • сдвиговые регистры STP16CPS05MTR – 5 шт;
  • микроконтроллер для управления, см. Arduino Uno или любую другую плату;
  • компьютер для программирования системы;

Принцип работы схемы

Маленькие светодиоды типа 5 мм потребляют незначительный ток – 20 мА, но вы собираетесь зажигать их довольно много. Источник питания 12В и 2А прекрасно подойдет для этого.

Подключить все 512 светодиодов индивидуально у вас не выйдет потому, что вряд ли вы найдете микроконтроллер (МК) с таким количеством выводов. Чаще всего встречаются модели в корпусах с количеством ног от 8 до 64. Естественно вы можете найти варианты и с большим количеством ножек.

Как же подключить столько светодиодов? Элементарно! Сдвиговый регистр – микросхема которая может преобразовывать информацию из параллельного вида в последовательный и наоборот – из последовательного в параллельный. Преобразовав последовательный в параллельный вид, вы получите из одной сигнальной ножки 8 и более, в зависимости от разрядности регистра.

Ниже приведена диаграмма иллюстрирующая принцип работы сдвигового регистра.

Схема работы сдвигового регистра

Когда на последовательный вход Data вы подаете значение бита, а именно ноль или единицу, она по фронту тактового сигнала Clock передается на параллельный выход номер 0, не забывайте, что в цифровой электронике нумерация идёт с нуля).

Как применить эти знания в построении LED куба? Дело в том, что можно применить не совсем обычный сдвиговый регистр, а специализированный драйвер для светодиодных экранов — STP16CPS05MTR. Он работает по такому же принципу.

Как соединять светодиоды?

Разумеется, что использование драйвера не полностью решит проблемы связанную с подключением большого количества светодиодов. Для подключения 512 светодиодов понадобится 32 таких драйвера, а от микроконтроллера еще больше управляющих ножек.

Поэтому мы пойдём другим путём и объединим светодиоды в строки и столбцы, таким образом мы получим двухмерную матрицу. Лед куб же занимает все три оси. Доработав идею объединения светодиодного куба 8x8x8 у которого светодиоды объединены в группы, можно прийти к такому выводу:

Объединить слои светодиодов (этажи) в схемы с общим анодом (катодом), а столбцы в схемы с общим катодом (или анодом, если на этажах объединяли катоды).

Чтобы управлять такой конструкцией нужно 8 x 8 = 16 управляющих пинов на колонки, и по одной на каждый этаж, всего этажей тоже 8. Итого вам нужно 24 управляющих канала.

Схема куба на 24 управляющих канала

На колодку input подаются сигнал с трех ножек микроконтроллера.

Чтобы зажечь необходимый светодиод, например, расположенный на первом этаже, в первой строке третий по счету, вам нужно подать минус на столбец номер 3, а плюс на этаж номер 1. Это справедливо если вы собрали этажи с общим анодом, а столбцы – катодом. Если наоборот, соответственно и управляющие напряжения должны быть инвертированы.

Практические рекомендации для успешной сборки

Для того, чтобы вам было удобно спаивать куб из светодиодов вам нужно:

Для корректной работы куба из светодиодов нужно собрать его по слоям с общим катодом, а столбцы – анодом. Подключить к выводам Arduino то что на схеме обозначено, как input в такой последовательности:

№ вывода ArduinoНазвание цепи
2LE
3SDI
5CLK

Что делать если у меня нет таких навыков?

Если вы не уверены в своих силах и знаниях электроники, но хотите себе такое украшение для рабочего стола, вы можете купить готовый куб. Для любителей мастерить простенькие электронные поделки, есть отличные варианты проще с гранями 4x4x4.

Куб 4x4x4

Куб с размером грани 4 диода

Готовые наборы для сборки можно приобрести в магазинах с радиодеталями, а также их огромный выбор на aliexpress.

Сборка такого куба разовьет у начинающего радиолюбителя навыки пайки, точность, правильность и качество соединений. Навыки работы с микроконтроллерами пригодятся для дальнейших проектов, а с помощью Arduino вы можете научится программировать простые игрушки, а также средства автоматизации для быта и производства.

Можно предположить, что самым простым (и часто первым) устройством на базе Arduino является автомат световых эффектов. В конце концов, нельзя просто так взять и не собрать автомат световых эффектов на Arduino.


Однако, просто подключить два десятка светодиодов к портам платы Arduino не очень продуктивно. Гораздо интереснее подключить к данной аппаратной платформе светодиодную матрицу. Разумеется, светодиодные матрицы существуют и достаточно широко используются, но, как правило, они собраны из светодиодов одного цвета свечения. Автору показалось интересным изготовить матрицу из разноцветных светодиодов. Основой устройства послужила макетная плата.


На нее установлено 8 столбцов, каждый из которых состоит из 5 светодиодов с различными цветами свечения. По сути, матрица представляет собой систему вертикальных и горизонтальных проводников, соединенных в узлах сетки через светодиоды. Таким образом, если подать на заданный столбец высокий логический уровень, а на строку низкий, то загорится светодиод, расположенный на пересечении заданного столбца и строки. Светодиоды подключаются через резисторы R1-R8 сопротивлением 300 Ом.


Очевидным преимуществом подобного способа включения является, то что к ограниченному количеству портов можно подключить гораздо больше датчиков или исполнительных устройств.


В данном случае к 13 портам удалось подключить 40 светодиодов.




Предложенная программа LEDM86 иллюстрирует работу матрицы. В программе имеется функция ST_, в которой сначала принудительно гасятся все светодиоды, а затем по заданному номеру строки и столбца зажигается один светодиод. В качестве иллюстрации в программе осуществляется зажигание одного светодиода по указанным координатам, проход бегущего огня по одной строке и проход бегущего огня по всей матрице.

Видео работы матрицы

Практически такую матрицу можно использовать для имитации работы телевизора. Разноцветная, хаотическая подсветка темной комнаты может создать у квартирных воров впечатление, что в помещении включен телевизор, а значит хозяева дома. При этом возможности Arduino позволяют включать светодиоды по достаточно сложному алгоритму, так что бы создавалось впечатление того, что в темной комнате работает телевизор, картинка на котором постоянно изменяется. Автор - Denev.

Форум по обсуждению материала САМОДЕЛЬНАЯ СВЕТОДИОДНАЯ МАТРИЦА


Что такое OLED, MiniLED и MicroLED телевизоры - краткий обзор и сравнение технологий.


Приводятся основные сведения о планарных предохранителях, включая их технические характеристики и применение.


Про использование технологии беспроводного питания различных устройств.


Микрофоны MEMS - новое качество в записи звука. Описание технологии.

Игра в змейку (Snake Game) стала очень популярной с момента появления мобильных телефонов. Сначала она появилась на мобильных телефонах с черно-белым экраном и ее популярность вскоре после этого стала стремительно расти. Вышло очень много версий данной игры для мобильных устройств различных форматов.

Внешний вид устройства для игры в змейку на светодиодной матрице

Также игра в змейку стала очень популярной самоделкой для энтузиастов в электронике. В этой статье мы рассмотрим реализацию данной игры с помощью платы Arduino Uno и светодиодной матрицы 8х8.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. Переменный резистор (потенциометр) 1 кОм (купить на AliExpress).
  4. Светодиодная матрица 8x8 (точечный дисплей матричного типа) (купить на AliExpress).
  5. Регистр сдвига 74HC595 (купить на AliExpress).
  6. Кнопки.
  7. Макетная плата.
  8. Соединительные провода.
  9. Источник питания с напряжением 5 В.

Общие принципы построения устройства для игры в змейку

Игра в змейку не является простой игрой в плане ее создания. Но в этой статье мы постарались сделать так, чтобы ее изготовление для вас стало достаточно простым делом. Для отображения игры мы использовали точечный дисплей матричного типа 8х8 красного цвета (со светодиодами красного цвета). ЖК дисплей будет использоваться для отображения счета игры. Кнопки будут использоваться для начала игры и задания направления движения змейки. Плата Arduino Uno будет управлять всем процессом. Схема расположения контактов точечного дисплея матричного типа 8х8 представлена на следующем рисунке.

Когда мы будем подавать питание на схему на ЖК дисплее будет высвечиваться приветственная запись “Press Start To Play”. После этого в процессе игры ЖК дисплей будет отображать ее счет. На светодиодной матрице будет отображаться две точки, символизирующих змею (snake) и одна точка, символизирующая еду (food).

После этого пользователь должен будет нажать среднюю кнопку чтобы начать игру – по умолчанию змея начнет двигаться вверх. Затем пользователь сможет изменять направление движения змеи при помощи нажатия кнопок, расположенных вокруг кнопки начала игры – это будут кнопки движения влево, движения вправо, вверх и вниз. Всегда, когда змея достигает еды (светящейся точки, символизирующей ее), ее длина увеличивается на одну точку и она начинает двигаться быстрее чем раньше. При этом счет игры увеличивается на 5. А когда змея ударяется об стену (то есть достигает края светодиодной матрицы) игра заканчивается – и на ЖК дисплее высвечивается надпись “Game Over”. Чтобы начать игру заново необходимо нажать кнопку старта.

Структурная схема работы устройства приведена на следующем рисунке.

Структурная схема устройства для игры в змейку на светодиодной матрице

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема устройства для игры в змейку на светодиодной матрице 8х8 с помощью Arduino

Для подключения светодиодной матрицы к плате Arduino Uno мы использовали регистры сдвига 74HC595 поскольку без них у нас на Arduino физически не хватит свободных контактов для подключения светодиодной матрицы. Один регистр сдвига будет управлять столбцами матрицы, а другой – строками. Регистры сдвига (их контакты управления) подключены к контактам Arduino 14 и 16. Контакты DS этих регистров подключены к контактам Arduino 15 и 17. Кнопки подключены к следующим контактам Arduino:
- старт – к контакту 3;
- кнопка движения влево – к контакту 4;
- кнопка движения вправо – к контакту 6;
- кнопка движения вверх – к контакту 2;
- кнопка движения вниз – к контакту 5.

ЖК дисплей подключен к Arduino в 4-битном режиме. Его контакты RS и EN непосредственно подсоединены к контактам 13 и 12 Arduino, а его контакты данных d4-d7 – к контактам 11, 10, 9, 8 Arduino.

Исходный код программы

Для написания программы по управлению змейкой на Arduino нам необходимо сначала подключить необходимые заголовочные файлы и инициализировать контакты, которые нам понадобятся.

void setup()
<
lcd.begin(16,2);
pinMode(ds_col, OUTPUT);
pinMode(sh_col, OUTPUT);
pinMode(st_col, OUTPUT);
pinMode(ds_row, OUTPUT);
pinMode(start, INPUT);
. .
. .

После этого в функции loop мы начнем игру.

void show_snake(int temp)
<
for(int n=0;n
<
int r,c;
for(int k=0;k
<
. .
. .

В программе мы будем использовать следующие функции для считывания направления движения змейки от кнопок.

void read_button()
<
if(!digitalRead(left))
<
move_r=0;
move_c!=-1 ? move_c=-1 : move_c=1;
while(!digitalRead(left));
. .
. .

В этом проекте мы создадим собственную 10х10 LED матрицу, при помощи светодиодов WS2812B RGB и платы Arduino.


Для начала ознакомимся с видео.

Данный ролик дает нам практически всю необходимую информацию по созданию матрицы. Однако некоторые шаги мы опишем более подробно чуть ниже.

Материалы

  • Светодиоды WS2812B LEDs;
  • Блок питания 5V 4A;
  • Разъем для блока питания;
  • Плата Arduino Nano.




Постройка кейса и проводка

Первым делом создаем сетку из пенополистирола.



Затем вырезаем два квадрата размером 245х245 мм. Один из фанеры, второй – из акрилового стекла. Первый послужит основанием, а квадрат из стекла будет закрывать матрицу сверху.

Далее вырезаем из фанеры последние части корпуса, которые будут боковыми сторонами. Их размер 48х255 мм. Лишние 10 мм послужат для создания замка и крепления сторон друг к другу.



Создание проводки подробно описано в видеоролике в самом начале статьи.

Вот мы и сделали это. Мы только что создали свою собственную LED матрицу!

Читайте также: