В этом проекте мы спроектируем матричный светодиодный дисплей 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); } |