В этом проекте мы спроектируем матричный светодиодный дисплей 8х8, для чего мы подключим светодиодную матрицу 8х8 к плате Arduino Uno. Светодиодная матрица 8х8 содержит 64 светодиода, которые упорядочены в форме матрицы, поэтому такая структура и называется светодиодной матрицей.
Подобную матрицу можно изготовить и самостоятельно, но это достаточно утомительный процесс. В настоящее время можно приобрести светодиодные матрицы различных форм и размеров. Пример подобной компактной матрицы представлен на рисунке ниже. Стоимость подобной матрицы примерно такая же, как и стоимость 64 светодиодов.
Светодиодная матрица содержит 16 контактов, из них 8 общих положительных контактов и 8 отрицательных общих контактов. Для непосредственного подключения светодиодной матрицы к плате Arduino Uno нам необходимо задействовать 16 ее контактов. Но часто бывает достаточно проблематично выделить 16 свободных контактов для подключения светодиодной матрицы. В этом случае целесообразно подключать светодиодную матрицу к плате Arduino Uno через управляющий чип. Обычно такой чип сразу продается вместе со светодиодной матрицей как показано на приведенном рисунке.
На светодиодной матрице можно будет, к примеру, показывать различные символы алфавита. Но прежде чем подключать светодиодную матрицу к плате Arduino Uno, необходимо сначала скачать специальную библиотеку для работы с ней. Сделать это можно по следующему адресу - https://github.com/shaai/Arduino_LED_matrix_sketch/archive/master.zip.
После скачивания этого архива его необходимо распаковать в каталог ARDUINO, а если точнее, то необходимо найти в нем подкаталог “library” и извлечь скачанный архив туда. После перезапуска программы библиотека будет готова к использованию.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Светодиодная матрица 8х8 (купить на AliExpress).
- Источник питания с напряжением 5 В.
- Конденсатор 100 мкФ (соединенный по питанию) (купить на AliExpress).
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Работа схемы
В схеме необходимо сделать следующие соединения между платой Arduino Uno и светодиодной матрицей:
PIN2 ------------------LOAD or CHIPSELECT of LED module
PIN3------------------CLOCK of LED module
PIN4 ------------------DATAIN of LED module
+5V ------------------VCC of LED module
GND ------------------GND of LED module
Схема устройства представлена на следующем рисунке.
Исходный код программы
После скачивания библиотеки для работы со светодиодной матрицей нам будут доступны специальные функции для работы с этой матрицей:
#include "LedControlMS.h"
#define NBR_MTX 1
LedControl lc=LedControl(4,3,2, NBR_MTX);
lc.writeString(0,"CIRCUITDIGEST");
lc.clearAll();
Первым делом мы должны подключить заголовочный файл для работы со специальными функциями скачанной библиотеки. Это делается с помощью команды #include "LedControlMS.h".
При работе со светодиодными матрицами нам доступна такая опция, что мы можем подключать к плате Arduino Uno не одну светодиодную матрицу, а несколько, и работать с ними как с единым дисплеем. Такая функция может пригодиться когда нам, например, будет нужен дисплей, который может отображать несколько символов одновременно, а не один, как в рассматриваемом нами примере. Поэтому мы должны сообщить Arduino сколько светодиодных дисплеев мы к ней будем подключать.
В используемой нами светодиодной матрице основных 3 контакта и весь основной обмен данными между Arduino Uno и матрицей происходит через них. Эти контакты имеют следующие наименования:
- DATAIN (контакт приема данных);
- CLOCK (контакт времени);
- CHIPSELECT (контакт приема команд).
Поэтому мы должны сообщить плате Arduino Uno к каким ее контактам мы подключили эти 3 контакта светодиодной матрицы. Это делается с помощью команды “LedControl lc=LedControl(4,3,2, NBR_MTX); ”. Далее в нашем примере с помощью команды “lc.writeString(0,"CIRCUITDIGEST");” мы сообщаем плате Arduino Uno какую строку символов следует отобразить на светодиодной матрице, в нашем случае это будет строка ”CIRCUITDIGEST”, каждый символ отобразить один раз.
Также следует помнить о том, что необходимо очистить память дисплея светодиодной матрицы перед тем как передавать туда данные. Делается это с помощью команды ”lc.clearAll();".
Далее представлен полный текст программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include "LedControlMS.h" //pin 4 подсоединен к DataIn // pin 3 подсоединен к CLK //pin 2 подсоединен LOAD #define NBR_MTX 1 // количество дисплеев, с которыми мы будем работать LedControl lc=LedControl(4,3,2, NBR_MTX);// void setup() { for (int i=0; i< NBR_MTX; i++) { lc.shutdown(i,false); /* установим яркость в среднее значение */ lc.setIntensity(i,8); /* очистим дисплей */ lc.clearDisplay(i); delay(100); } } void loop() { lc.writeString(0,"CIRCUITDIGEST"); // передадим символы на дисплей lc.clearAll(); //очистим дисплей delay(1000); } |