В этой статье я покажу, как подключить светодиодную матрицу 8×8 к Arduino и вывести на нее символы.
Вот так выглядит матрица с драйвером max7219:
Подключение:
Led matrix -> Arduino
Vcc -> 5v
GND -> GND
DIN -> pin 2
CS -> pin 4
CLK -> pin 3
Для управления воспользуемся библиотекой LedControlMS, в которую я внес некоторые изменения.
Для вывода символа на экран используется функция displayChar, которая принимает 3 параметра:
- номер матрицы;
- номер символа;
- с какого столбца начинать.
Если вы используете только одну матрицу — ставьте 0. Если вы подключили несколько — номер той, на какую будете выводить, начиная с нуля.
Для каждого символа в библиотеке есть номер. Но можно его там не искать, а использовать функцию getCharArrayPosition(ch), которая вернет номер символа ch.
Начинать можно с 0, 1 или 2 столбца, т.к. каждый символ занимает 6 столбцов.
Код программы, выводящий посимвольно «Arduino!»:
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 28 29 30 31 32 33 34 35 36 37 38 |
#include "LedControlMS.h" /* Configuring the LEDMatrix: Digital 2 is conneted to DIN (Data IN) Digital 3 is connected to CLK (CLocK) Digital 4 is connected to CS (LOAD) 5V is connected to VCC GND is connected to GND There is only one MAX7219 display module. */ #define NBR_MTX 1 LedControl lc = LedControl(2, 3, 4, NBR_MTX); String sentence = "Arduino!"; int letterCounter = 0; /* wait time between updates of the display */ unsigned long delaytime = 300; void setup() { letterCounter = 0; for (int i = 0; i < NBR_MTX; i++) { lc.shutdown(i, false); //keep the screen on lc.setIntensity(i, 8); // set brightness to medium values lc.clearDisplay(i); //clear the display after each letter } } void loop() { char ch = sentence[letterCounter]; //define character ch letterCounter++; if (letterCounter > sentence.length() - 1) letterCounter = 0; //sets up loop lc.displayChar(0, lc.getCharArrayPosition(ch), 1); //display each character on the screen delay(500); lc.clearAll(); } |