В этом уроке мы собираемся разработать светодиодный матричный прокручиваемый дисплей 8x8 с использованием Arduino Uno, который будет отображать прокручиваемые алфавиты.
Светодиодная матрица 8x8 содержит 64 светодиода (светоизлучающих диодов), которые расположены в виде матрицы, отсюда и название - светодиодная матрица. Мы собираемся сделать эту матрицу, припаяв эти 64 светодиода к монтажной плате или DOT PCB. Светодиоды могут быть любого цвета, выбирайте те, которые есть в наличии. Затем мы напишем программу для Arduino для управления этой матрицей из 64 светодиодов. UNO, согласно программе, включает соответствующие светодиоды для отображения символов в режиме прокрутки.
Необходимые компоненты:
- Ардуино Уно
- 64 светодиода
- Перфорированная плита с другими паяльными инструментами
- Резистор 1КОм (8 шт.)
- Источник питания (5 В)
Схема и рабочее объяснение:
В матрице размещены 64 светодиода. Итак, у нас 8 столбцов и 8 строк. В этих строках и столбцах собраны все положительные клеммы в ряду. В каждой строке есть одна общая положительная клемма для всех 8 светодиодов в этой строке. Это показано на рисунке ниже,
Итак, на 8 рядов у нас есть 8 общих положительных выводов. Рассмотрим первый ряд, как видно на рисунке, 8 светодиодов от D57 до D64 имеют общий положительный вывод и обозначены как «POSITIVE0». Теперь, если мы хотим, чтобы один или все светодиоды загорелись в первом РЯДЕ матрицы, мы должны запитать PIN0 светодиодной матрицы. Аналогично, если мы хотим зажечь какой-либо светодиод (или все) в любом РЯДЕ, нам нужно запитать соответствующий общий положительный контактный вывод этого соответствующего ряда.
Это еще не конец, и просто оставление МАТРИЧНЫХ РЯДОВ с положительным предложением ничего не даст. Нам нужно заземлить негативы светодиодов, чтобы они светились. Таким образом, в светодиодной матрице 8x8 все отрицательные клеммы светодиодов в любом столбце объединены в восемь общих отрицательных клемм, как и все отрицательные клеммы в первом столбце соединены вместе с PIN-A1 (ОТРИЦАТЕЛЬНЫЙ7). Это показано на рисунке ниже:
На эти контакты следует обращать внимание при пайке светодиодов на Perfboard.
Теперь, если нам нужно заземлить какой-либо светодиод в первом столбце, мы заземлим PIN-A1 (NEGATIVE7) МАТРИЦЫ, и он заземлит все светодиоды в первом столбце. То же самое касается всех остальных семи общих отрицательных столбцов.
Теперь вы знаете, как работает общий положительный и общий отрицательный. Давайте соберем их вместе, чтобы увидеть, как они работают вместе, и окончательный вариант схемы прокрутки светодиодного матричного дисплея 8x8 будет выглядеть так:
Управление светодиодной матрицей 8x8 с использованием мультиплексирования:
Теперь предположим, что мы хотим включить LED57, затем нам нужно запитать PIN0 UNO и заземлить PIN-8 UNO. Теперь для включения LED57 и LED50 нам нужно запитать PIN0, PIN1 и заземлить PIN8, PIN9. Но при этом будут включены не только D57, D50, но и D49, D58. Чтобы этого избежать, мы используем метод, называемый мультиплексированием. Мы уже подробно обсуждали эту технику мультиплексирования в светодиодной матрице 8x8; прочтите эту статью для подробного объяснения. Здесь мы кратко объясняем мультиплексирование.
Человеческий глаз не может уловить частоту более 30 Гц. То есть, если светодиод постоянно горит и гаснет с частотой 30 Гц или более. Глаз видит, что светодиод постоянно включен. Однако это не так, и светодиод будет постоянно включаться и выключаться. Этот метод называется мультиплексированием.
Скажем, например, мы хотим включить только LED57 и LED50, не включая D49 и D58. Хитрость в том, что сначала мы подадим питание на первый ряд, чтобы включить LED57 и дождаться 1 мсек, а затем выключим его. Затем мы подадим питание на второй ряд, чтобы включить LED50 и подождать 1 мсек, затем выключим его. Цикл идет непрерывно с высокой частотой, и LED57 и LED50 будут быстро включаться и выключаться, и нам будет казаться, что оба светодиода постоянно горят. Это означает, что мы обеспечиваем питание только одного ряда за раз, исключая возможность включения других светодиодов в других рядах. Мы будем использовать эту технику, чтобы показать всех персонажей.
Существует также библиотека под названием LedControlMS.h, которая позаботится обо всей этой сложности мультиплексирования, где вам нужно только ввести символ или число, которые вы хотите напечатать на светодиодной матрице, проверьте эту светодиодную матрицу Arduino с проектом MAX7219 для более подробной информации.
Объяснение программирования:
В нашем коде мы записали десятичное значение для каждого символа и запрограммировали эти значения в Arduino. Программа написала, чтобы сдвигать эти значения в следующую строку каждые 0,2 секунды, это будет рассматриваться как прокрутка символов вверх, это очень просто.
Чтобы изменить отображаемые символы, просто замените значение в массиве char ALPHA в соответствии со значениями символов, указанными ниже, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Например, если вы хотите отобразить DAD на светодиодной матрице, сначала замените значения символов в массиве char ALPHA , поместив значения для символов D, A и D из приведенного выше списка:
символ АЛЬФА = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
Итоговые значения теперь составляют 5 * 10 = 50 значений, поэтому
Заменить, for (int x = 0; x <142; x ++) // 150-8 (чтобы остановить переполнение) {…….. На, for (int x = 0; x <42; x ++) // 50-8 (чтобы остановить переполнение) {……..
Так что вам просто нужно изменить номер.
На этом вы выполнили программирование и теперь можете прокручивать любой текст на светодиодной матрице 8x8, проверьте полный код ниже с демонстрационным видео.