Подключение LED матрицы MAX7219 к Arduino
Сегодня мы научимся использовать светодиодную матрицу MAX7219 с платой Arduino UNO. И несмотря на то, что на первый взгляд применение платы может показаться достаточно непростым, на самом деле подключить ее и использовать очень легко.

Что нам понадобится:
- LED матрица MAX7219;
- Соединительные провода;
- Плата Arduino UNO;
- USB кабель;
- ПК.
Подключение
Процесс подключения совсем несложен. Необходимо подключить 5 контактов матрицы к плате:
- Vcc — 5v
- Gnd — Gnd
- DIN (DataIN) — 11
- CS (LOAD) — 10
- CLK – 13
На этом все, процесс подключения окончен. Остается только программирование.
Код
Данный код просто прокручивает заданный текст. При желании вы можете изменить буквы или вставить вместо них другие символы.

/* This code is a public example. dil = 11 cs = 10 clk = 13 */ #include #include PROGMEM prog_uchar CH[] = < 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // ! 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // " 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // # 4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $ 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // % 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // & 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // ' 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // ( 3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // ) 5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // * 5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // + 2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // , 4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // - 2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // . 4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // / 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0 3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1 4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2 4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3 4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4 4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5 4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6 4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7 4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8 4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9 2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // : 2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ; 3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // < 3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // = 3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ? 5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @ 4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A 4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B 4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C 4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D 4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E 4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F 4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G 4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H 3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I 4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J 4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K 4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L 5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M 5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O 4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P 4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q 4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R 4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S 5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T 4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U 5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V 5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W 5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X 5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y 4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z 2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [ 4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash 2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ] 3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat 4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _ 2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // ` 4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a 4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b 4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c 4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d 4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e 3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f 4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g 4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h 3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i 4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j 4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k 3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l 5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m 4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n 4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o 4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p 4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q 4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r 4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s 3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t 4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u 5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v 5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w 5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x 4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y 3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z 3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // < 1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // | 3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // >4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~ >; int data = 11; // 8, DIN pin of MAX7219 module int load = 10; // 9, CS pin of MAX7219 module int clock = 13; // 10, CLK pin of MAX7219 module int maxInUse = 1; //change this variable to set how many MAX7219’s you’ll use MaxMatrix m(data, load, clock, maxInUse); // define module byte buffer[10]; // active sentenses char string1[] = » ABCDEFGHIJKLMNOPQRSTUVWXYZ «; void setup() < m.init(); // module initialize m.setIntensity(0); // dot matix intensity 0-15 Serial.begin(9600); // serial communication initialize >void loop() < byte c; // this is the code if you want to entering a message via serial console while (Serial.available() >0) < byte c = Serial.read(); Serial.println(c, DEC); printCharWithShift(c, 100); >delay(100); m.shiftLeft(false, true); // 1st block — print the active sentences // comment this block when using the 2nd messages block printStringWithShift(string1, 100); //printStringWithShift(string2, 100); //printStringWithShift(string3, 100); //printStringWithShift(string4, 100); //printStringWithShift(string5, 100); //printStringWithShift(string6, 100); // 2nd block — print sentences just for tests // uncomment this block to use it /* printStringWithShift(string7, 100); printStringWithShift(string8, 100); printStringWithShift(string9, 100); printStringWithShift(string10, 100); printStringWithShift(string11, 100); */ > void printCharWithShift(char c, int shift_speed) < if (c < 32) return; c -= 32; memcpy_P(buffer, CH + 7*c, 7); m.writeSprite(maxInUse*8, 0, buffer); m.setColumn(maxInUse*8 + buffer[0], 0); for (int i=0; i> void printStringWithShift(char* s, int shift_speed) < while (*s != 0)< printCharWithShift(*s, shift_speed); s++; >> void printString(char* s) < int col = 0; while (*s != 0) < if (*s < 32) continue; char c = *s - 32; memcpy_P(buffer, CH + 7*c, 7); m.writeSprite(col, 0, buffer); m.setColumn(col + buffer[0], 0); col += buffer[0] + 1; s++; >>
Тестирование
После загрузки кода мы можем в полной мере насладиться полученным результатом. Фото не передают всю картину в полной мере, поэтому лучше посмотреть видео.
На этом возможности использования матрицы не заканчиваются. Одновременно можно подключить до восьми матриц одновременно. И для этого понадобиться всего 3 лишних контакта. CS, CLK, 5В и Gnd всех матриц можно соединить вместе, а DATAOUT первой матрицы подключить к DATAIN следующей матрицы и т.д.
Статья является авторским переводом с сайта instructables.com.
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Подключение LED матрицы 8*8 к Arduino через сдвиговые регистры
Эта статья создана для тех, кто купил голую матрицу 8х8 и сдвиговые регистры 74hc595 и не знает как это все подключить. Я долго искал в интернете инструкции о том, как подключить вышеперечисленные компоненты, но находил либо не для моих регистров либо с нерабочими скетчами, поэтому решил, что все-таки придется поработать руками и головой, чтобы порадовать себя картинками 8*8. Найдя в интернете даташиты к матрице и сдвиговым регистрам, нарисовал следующую схему:
12-я нога у обеих микросхем (latch pin), для экономии портов общая, т.к нет смысла защелкивать регистры в разное время. Часть пинов матрицы ( аноды ) подключены через токоограничивающие резисторы номиналом 220ом. Все остальное по схеме предельно просто. На всякий случай картинки с распиновкой матрицы.
Изображения придется выводить построчно (иначе с подобными матрицами никак), с маленькой задержкой (человеческий глаз практически не различает задержки в 1мс). В скетче старался все пояснять. При загрузке в плату на дисплее будут отображаться цифры, которые мы отправим в монитор порта ардуино.(см. видео) Фото готового устройства (на экране зигзаг, в скетче его изображение хранится в массиве pic)
В дальнейшем попробую сделать на этом дисплее что-нибудь интересное.
Прикрепленные файлы:
- cxemNetMatrix8x8.ino (4 Кб)
- matrix.rar (188 Кб)
Теги:
nikitosing
Опубликована: 20.08.2017
0
0
Вознаградить Я собрал 0 0
Оценить статью
- Техническая грамотность
Светодиодная матрица. Урок 17. Ардуино

Привет! Что может быть лучше rgb светодиода? Конечно 256 светодиодов вместе. Да еще и адресуемых. Это значит, что мы сможем зажечь любой из 256 светодиодов из программы на Ардуино. Сегодня в обзоре светодиодная матрица WS2812B (SK6812).
В предыдущей статье мы говорили о гироскопе GY-521. Это тоже очень интересный модуль для Ардуино. Посмотрите тот обзор, если пропустили или уже забыли.

Характеристики
- Можно использовать только внутри сухих помещений.
- Напряжением 5 вольт.
- Рабочая температура матрицы от -25 до + 80 °C Работая при температуре ниже — 25 лента может «тормозить» или вообще не выполнять команды контроллера. Однако изменения при переохлаждении не фатальны. При повышении температуры, диоды продолжат полноценно работать.
Подключение
- +5V — питание 5 вольт на плате
- GND — земля
- DIN — пин для данных на плате Ардуино
Матрица работает от 5 вольт. А значит мы сможем подключить ее напрямую к Ардуино. Однако, для реальных проектов рекомендую сделать для нее отдельное питание от аккумулятора или блока питания. В соответствии с характеристиками производителя при ярком белом свете, матрица потребляет 76,8 Вт. А ток может быть от 12 до 18 А, в соответствии с таблицей производителя.
Кроме того, сигнальный контакт DIN подключим через резистор, чтобы оградить контакт Ардуино от перепадов напряжения.

Библиотека FastLed
Для работы со светодиодными матрицами уже написано не мало библиотек. Сегодня используем одну из них. И посмотрим на примеры программ из нее. С помощью менеджера библиотек установим FastLED и откроем пример из меню File -> Examples -> FastLED -> DemoReel100
В начале скетча есть раздел с настройками матрицы. Нам нужно изменить несколько параметров. Поставим количество светодиодов равное 256, а яркость уменьшим, чтобы потреблять меньше тока, на 8.
Контакт DIN подключен к 3 контакту Ардуино.
#define DATA_PIN 3 //#define CLK_PIN 4 #define LED_TYPE WS2811 #define COLOR_ORDER GRB #define NUM_LEDS 256 CRGB leds[NUM_LEDS]; #define BRIGHTNESS 8 #define FRAMES_PER_SECOND 120
Остальную программу изменять не будем, загрузим скетч в Ардуино и посмотрим на результат.
Теперь попробуем использовать код из примера и напишем свой небольшой скетч.
Объявим настройки матрицы и инициализируем их.
#include #define NUM_LEDS 256 #define DATA_PIN 3 #define BRIGHTNESS 8 CRGB leds[NUM_LEDS]; void setup() < FastLED.addLeds(leds, NUM_LEDS); // GRB ordering FastLED.setBrightness(BRIGHTNESS); >
А цикле loop() возьмем каждый отдельный светодиод и будем зажигать и гасить его в цикле. Таким образом мы сможем обратиться к каждому конкретному светодиоду.
void loop() < for (int i = 0; i >
Полный текст программы
#include #define NUM_LEDS 256 #define DATA_PIN 3 #define BRIGHTNESS 8 CRGB leds[NUM_LEDS]; void setup() < FastLED.addLeds(leds, NUM_LEDS); // GRB ordering is assumed FastLED.setBrightness(BRIGHTNESS); > void loop() < for (int i = 0; i >
Возможные проблемы
При подключении питания матрицы к Ардуино. Контроллер может сильно нагреться в процессе использования. Особенно, если включить все светодиоды на большой яркости. В этом случае, пожалуйста, используйте отдельное питание.
Заключение
Мы рассмотрели светодиодную матрицу 16х16 светодиодов. Подключили ее к Ардуино и научились обращаться к каждому светодиоду. Это сильно поможет нам в будущих проектах.
Где купить
- Светодиодная матрица
- Arduino nano
- Набор датчиков
- Arduino Uno
Как подключить светодиодную матрицу
Светодиодные устройства при правильном подключении способны создавать неповторимые визуальные эффекты. Они могут пригодиться вам для улучшения атмосферы заведения. Как подключить светодиодную матрицу? В этой статье собраны способы подключения оборудования, способного подавать сигналы о неисправности других приспособлений, их бесперебойном функционировании. При желании вы можете самостоятельно соединить светодиодные приспособления без специализированных навыков, уникального оборудования. Подсоединение поможет вам отслеживать неполадки в системе освещения.
Способы подключения
Все устройства схожи между собой в принципе работы. Мы используем включение и выключение светодиодов для формирования двухмерной картинки. В качестве способов выделяют:
- Подсоединение светодиодов к пинам контроллера. Для матрицы размером 8 на 8 понадобится 64 пина, существенно сокращает возможности подходящих контроллеров.
- Соединение путем динамической индикации на несколько разрядов. То есть для изделия 8 на 8 понадобится 16 пинов. Существенная экономия ресурсов контроллера поможет сократить количество используемых пинов.