Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

MAX7219 — драйвер светодиодных индикаторов | RadioLaba.ru

          #include <P16F628A.INC>

            LIST        p=16F628A    

            __CONFIG    H’3F10′             ;Конфигурация микроконтроллера

                                    

            

Sec           equ         20h               ;регистры хранения временных данных для

Sec1          equ         21h               ;подпрограмм паузы

Sec2          equ         22h               ;  

scetbit       equ         23h               ;регистр счета битов для передачи по протоколу spi

dat_ind       equ         24h               ;регистр хранения данных для передачи по протоколу spi

adr_ind       equ         25h               ;регистр хранения адреса для передачи по протоколу spi

dat_tmp       equ         26h               ;промежуточный регистр данных для передачи по протоколу spi

adr_tmp       equ         27h               ;промежуточный адресный регистр для передачи по протоколу spi

shet          equ         28h               ;вспомогательный регистр счета

data_1        equ         29h               ;начальный регистр хранения данных для вывода на матрицу

 

#DEFINE       din         PORTB,5           ;линия входа данных драйвера MAX7219

#DEFINE       cs          PORTB,6           ;линия выбора драйвера MAX7219

#DEFINE       clk         PORTB,7           ;линия тактирования драйвера MAX7219

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

              org         0000h             ;начать выполнение программы с адреса 0000h

              goto        Start             ;переход на метку Start

          

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Основная программа

                                            

Start         movlw       b’01000000′       ;установка выходных защелок порта B

              movwf       PORTB

              

              movlw       b’00000111′       ;выключение компараторов

              movwf       CMCON

 

              bsf         STATUS,RP0        ;выбрать 1-й банк    

              movlw       b’00011111′       ;настройка линий ввода\вывода порта B  

              movwf       TRISB             ;RB0-RB4 на вход, остальные на выход

              bcf         STATUS,RP0        ;выбрать 0-й банк                

              

              call        init_lcd          ;вызов подпрограммы инициализации драйвера(MAX7219)

              

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Последовательная запись 8-ми байт в регистры ОЗУ, из которых составляется буква ‘R’ на матрице

;запись байтов в регистры ОЗУ производится с помощью косвенной аддресации

                                            

met_1         movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       b’01111000′       ;запись 1-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000100′       ;запись 2-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000100′       ;запись 3-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01111000′       ;запись 4-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01010000′       ;запись 5-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01001000′       ;запись 6-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000100′       ;запись 7-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00000000′       ;запись 8-го байта в регистр ОЗУ

              movwf       INDF              ;

                                            ;

              call        vivod             ;вызов подпрограммы вывода данных на матрицу                  

              call        paus_2s           ;вызов подпрограммы паузы 2 сек

              

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Последовательная запись 8-ми байт в регистры ОЗУ, из которых составляется буква ‘L’ на матрице

;запись байтов в регистры ОЗУ производится с помощью косвенной аддресации

                                            

              movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       b’01000000′       ;запись 1-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000000′       ;запись 2-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000000′       ;запись 3-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000000′       ;запись 4-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000000′       ;запись 5-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000100′       ;запись 6-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01111100′       ;запись 7-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00000000′       ;запись 8-го байта в регистр ОЗУ

              movwf       INDF              ;

                                            ;

              call        vivod             ;вызов подпрограммы вывода данных на матрицу                  

              call        paus_2s           ;вызов подпрограммы паузы 2 сек

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Последовательная запись 8-ми байт в регистры ОЗУ, из которых составляется цифра 15 на матрице

;запись байтов в регистры ОЗУ производится с помощью косвенной аддресации

                                            

              movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       b’00101111′       ;запись 1-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01101000′       ;запись 2-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10101000′       ;запись 3-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00101111′       ;запись 4-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00100001′       ;запись 5-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00100001′       ;запись 6-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00101111′       ;запись 7-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00000000′       ;запись 8-го байта в регистр ОЗУ

              movwf       INDF              ;

                                            ;

              call        vivod             ;вызов подпрограммы вывода данных на матрицу                  

              call        paus_2s           ;вызов подпрограммы паузы 2 сек

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Последовательная запись 8-ми байт в регистры ОЗУ, из которых составляется узор 1 на матрице

;запись байтов в регистры ОЗУ производится с помощью косвенной аддресации

                                            

              movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       b’00111100′       ;запись 1-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000010′       ;запись 2-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10111101′       ;запись 3-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10100101′       ;запись 4-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10100101′       ;запись 5-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10111101′       ;запись 6-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000010′       ;запись 7-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00111100′       ;запись 8-го байта в регистр ОЗУ

              movwf       INDF              ;

                                            ;

              call        vivod             ;вызов подпрограммы вывода данных на матрицу                  

              call        paus_2s           ;вызов подпрограммы паузы 2 сек

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Последовательная запись 8-ми байт в регистры ОЗУ, из которых составляется узор 2 на матрице

;запись байтов в регистры ОЗУ производится с помощью косвенной аддресации

                                            

              movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       b’11100111′       ;запись 1-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’11000011′       ;запись 2-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10100101′       ;запись 3-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00011000′       ;запись 4-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00011000′       ;запись 5-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10100101′       ;запись 6-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’11000011′       ;запись 7-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’11100111′       ;запись 8-го байта в регистр ОЗУ

              movwf       INDF              ;

                                            ;

              call        vivod             ;вызов подпрограммы вывода данных на матрицу                  

              call        paus_2s           ;вызов подпрограммы паузы 2 сек

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Последовательная запись 8-ми байт в регистры ОЗУ, из которых составляется узор 3 на матрице

;запись байтов в регистры ОЗУ производится с помощью косвенной аддресации

                                            

              movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       b’10011001′       ;запись 1-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000010′       ;запись 2-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00100100′       ;запись 3-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10100101′       ;запись 4-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10100101′       ;запись 5-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’00100100′       ;запись 6-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’01000010′       ;запись 7-го байта в регистр ОЗУ

              movwf       INDF              ;

              incf        FSR,F             ;инкремент регистра FSR

              movlw       b’10011001′       ;запись 8-го байта в регистр ОЗУ

              movwf       INDF              ;

                                            ;

              call        vivod             ;вызов подпрограммы вывода данных на матрицу                  

              call        paus_2s           ;вызов подпрограммы паузы 2 сек

              goto        met_1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;подпрограмма отправки 8-ми байт данных из регистров ОЗУ на драйвер MAX7219

 

vivod         movlw       .Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. 8                ;запись счетчика циклов

              movwf       shet              ;

              movlw       data_1            ;установка начального адреса регистра для косвенной аддресации

              movwf       FSR               ;

              movlw       .1                ;запись начального адреса для обращению к регистрам MAX7219 в  

              movwf       adr_ind           ;адресный регистр adr_ind

viv_1         movf        INDF,W            ;копирование содержимого из регистра ОЗУ в регистр

              movwf       dat_ind           ;данных (dat_ind) для отправки на драйвер MAX7219

              call        send              ;вызов подпрограммы отправки пакета данных на драйвер

              incf        FSR,F             ;инкремент регистра FSR

              incf        adr_ind,F         ;инкремент регистра adr_ind

              decfsz      shet,F            ;декремент счетчика циклов

              goto        viv_1             ;счетчик не равен нулю: переход на метку viv_1

              return                        ;счетчик равен нулю: выход из подпрограммы

              

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Подпрограмма инициализации драйвера(MAX7219)

 

init_lcd      call        pauslcd           ;вызов подпрограммы паузы 2 мс

              movlw       0x0F              ;выключить тестовый режим

              movwf       adr_ind           ;

              movlw       0x00              ;

              movwf       dat_ind           ;

              call        send              ;

 

              movlw       0x0C              ;включить драйвер в рабочий режим

              movwf       adr_ind           ;

              movlw       0x01              ;

              movwf       dat_ind           ;

              call        send              ;

 

              movlw       0x0A              ;установить интенсивность свечения 15/32

              movwf       adr_ind           ;

              movlw       0x07              ;

              movwf       dat_ind           ;

              call        send              ;

 

              movlw       0x09              ;отключить декодирование для всех индикаторов

              movwf       adr_ind           ;

              movlw       0x00              ;

              movwf       dat_ind           ;

              call        send              ;

 

              movlw       0x0B              ;использовать 8 индикаторов

              movwf       adr_ind           ;

              movlw       0x07              ;

              movwf       dat_ind           ;

              call        send              ;

              return                        ;выход из подпрограммы

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Подпрограмма отправки 2-х байт (пакета данных) на драйвер (MAX7219) по протоколу SPI

 

send          bcf         cs                ;Сбросить линию выбора драйвера CS

              movlw      .Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. 8                 ;Отправка содержимого адресного байта adr_ind на драйвер

              movwf      scetbit            ;

              movf       adr_ind,W          ;копирование данных для передачи в промежуточный регистр

              movwf      adr_tmp            ;

povtor        bcf        clk                ;

              btfsc      adr_tmp,7          ;

              bsf        din                ;

              btfss      adr_tmp,7          ;

              bcf        din                ;

              bsf        clk                ;

              rlf        adr_tmp,F          ;

              decfsz     scetbit,F          ;

              goto       povtor             ;

            

              movlw      .8                 ;Отправка содержимого байта данных dat_ind на драйвер

              movwf      scetbit            ;

              movf       dat_ind,W          ;копирование адреса для передачи в промежуточный регистр

              movwf      dat_tmp            ;

povtr1        bcf        clk                ;

              btfsc      dat_tmp,7          ;

              bsf        din                ;

              btfss      dat_tmp,7          ;

              bcf        din                ;

              bsf        clk                ;

              rlf        dat_tmp,F          ;

              decfsz     scetbit,F          ;

              goto       povtr1             ;

              bcf        clk                ;

              bsf        cs                 ;установить в 1 линию выбора драйвера CS                

              return                        ;выход из подпрограммы

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

pauslcd       movlw       .4                ;подпрограмма пауза 2 мс

              movwf       Sec1              ;

p2            movlw       .Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. 166              ;

              movwf       Sec               ;

p1            decfsz      Sec,F             ;

              goto        p1                ;

              decfsz      Sec1,F            ;

              goto        p2                ;

              return                        ;выход из подпрограммы

                                            

paus_2s       movlw       .10               ;подпрограмма пауза 2 сек

              movwf       Sec2              ;

p_3           movlw       .255              ;

              movwf       Sec1              ;

p_2           movlw       .255              ;

              movwf       Sec               ;

p_1           decfsz      Sec,F             ;

              goto        p_1               ;

              decfsz      Sec1,F            ;

              goto        p_2               ;

              decfsz      Sec2,F            ;

              goto        p_3               ;

              return                        ;выход из подпрограммы

                                            

              end                           ;конец всей программы

                                            ;

7 сегментный индикатор на MAX7219

Во время бурного развития электроники и повсеместного внедрения во все устройства TFT экранов может показаться странным и мезозойским покупка светодиодного 7ми сегментного индикатора, но для своего проекта я искал именно его. Почему и как он мне продинамил мозг я хочу поделиться в этом кратком обзоре. Желающих прошу подкат.

В одном из моих проектов, а именно в контролере управления электродуховкой, для визуализации интерфейса требовалось использование какого-то экрана. Так как устройством будет «рулить» моя бабушка, которой уже под девятый десяток, то интерфейс должен быть максимально простым, интуитивно понятным и наглядным. Потому экраны с изменяемым углом обзора и всемозможными меню и мелким текстом были исключены сразу.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Главные параметры в управлении устройством — это температура и время работы. Соответвенно температура 3 знака и время столько же, плюс несколько дополнительных знаков. Прогуглив я быстро нашет то что нужно было — 7 сегментный индикатор на контролере фирмы MAXIM — MAX7219.
Индикатор состоит из двух матриц с 4мя 7ми сегментными светодиодными индикаторами.

Цвет свечения — красный. Индикаторы припаяны к плате на обратной стороне которой установлен сам контролер MAX7219. Характеристики контролера можно посмотреть здесь.
Потребление самого дисплея:

PeakCurrent=(8 x LedCurrent) + MAX72XX-Supply

PeakCurrent=(8 x 20mA) + 10mA = 170mA
Плата имеет отверстия для установки штыревого разъема — с одной стороны для подключения к контролеру, с другой — для подключения еще такого же индикатора. Получается паравозиком друг к дружке можно подключить до 15 таких устройств (вроде так если я чего не напутал). Подключение — 5 проводов: 3 провода управление, 2 провода питание.
Мне разъем не нужен, потому я индикатор подключил припаяв куском IDE шлейфа — очень дешевый и гуманный способ продления «жизни» старым компьютерным комплектующим.
Платформа работает на базе Arduino и для работы экрана была использована библиотека «LedControl.h»
Библиотека достаточно простая, имеет некоторые ограничения на отображение символом, но на то она и библиотека 😉 Описание и возможности библиотеки можно прочесть здесь.
Библиотека леко устанавливается через Arduino IDE, там же в примере LCDemo7Segment можно подсмотреть подключение и вывод информации на индикатор.
Все просто и красиво если бы небольшой казус. У меня индикатор работал как то не стабильно. При изменении информации на экране могли хаотично зажигаться какие то сторонние сегменты или же индикатор мог просто отключиться. Я долго не мог понять в чем дело. Пересмотрел и переписал код, перемерил напряжение питания и сигналов — все было в норме. В коде я уменьшил частоту вывода информации на экран — это помогло, экран работал стабильнее.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Но все-равно в какой то момент экран мог отключиться. У меня уже было желание выбросить этот экран и поставить старый проверенный ЖК 16х2.
Сегодня утром на свежую голову я еще раз почитал описание библиотеки и обратил внимание на схему подключения. Вернее на часть текста:
Both capacitors must be placed as near as possible to the V+ and the Gnd pins of the MAX72XX.
На моей плате был лишь один керамический конденсатор.

Прозвонив и выяснив полярность цепи питания к которой подключен этот конденсатор, я паралельно ему подпаял первый попавшийся электролитический конденсатор (47mF x 50v).

Экран заработал отлично без малейших сбоев и выключений. Эврика!!! ©
Вот уже весь день экран работает на максимальной яркости и без задержек обновления, а мой проект движется к завершению.
Потому имейте ввиду если будете использовать аналогичный контролер и возможно такие же казусы, теперь Вы осведомлены и вооружены.

Товар не предоставлен магазином, потому пришлось покупать за свои без применения П. 18.

Всем отличного здоровья и минимального delay.

PS

КЫШ ОТ МОНИТОРА — НА УЛИЦЕ ЛЕТО!!! 😉

Как подключить MAX7219 к Arduino

Разбираемся, как подключить к Arduino драйвер 8-и разрядного светодиодного индикатора с последовательным интерфейсом MAX7219 и как им управлять. Сделаем часы реального времени с помощью нескольких объединённых LED-матриц.

Для проекта нам понадобятся:

1

Описание драйвера MAX7219

Микросхема MAX7219 – это компактный драйвер дисплея, который позволяет управлять 7-сегментными индикаторами разрядностью до 8 цифр или 64 отдельными светодиодами. Сам драйвер управляется по последовательному интерфейсу (чаще всего SPI) с помощью микроконтроллера, например, Arduino. MAX7219 позволяет изменять состояние каждого сегмента или светодиода без обновления состояния всех остальных выводов. А также он позволяет создавать цепочку из аналогичных драйверов, чтобы управлять большим количеством подключённых светодиодов.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Микросхема MAX7219 выполнена в 24-выводном корпусе. Назначение и расположение выводов показаны ниже:

Конфигурация выводов и типичная схема подключения драйвера MAX7219

На рисунке справа представлена типичная схема подключения MAX7219. Как видно, драйвер управляется микроконтроллером по последовательному интерфейсу. К выходу сегментов и выходу разрядов подключён дисплей либо светодиодная матрица.

Назначение выводов драйвера MAX7219
Название выводаНазначение
DINВход последовательных данных для управления драйвером.
DOUTВыход последовательных данных для соединения в цепочку со следующим драйвером.
DIG 0…DIG 7Выходы управления разрядами 8-символьного сегментного дисплея.
SEG A…SEG G, DPВыходы управления отдельными сегментами и десятичной точкой.
CLKВход тактовой частоты последовательного интерфейса, до 10 МГц.
LOADВход загрузки данных. Данные «защёлкиваются» по фронту отрицательного импульса.
ISETРегулировка максимального потребляемого тока на один сегмент (следовательно, яркости).
V+Питание, 5±0.5 В.
GNDЗемля.

Драйвер MAX7219 позволяет регулировать яркость подключённых светодиодов. Причём можно сделать это аппаратно, подключив к ножке ISET микросхемы резистор, или программно, записав нужное значение в соответствующий регистр. Последний вариант мне кажется намного удобнее, т.к. позволяет управлять яркостью в процессе работы устройства.

Из существенных плюсов данного драйвера то, что не нужно постоянно обновлять состояние подключённых светодиодов: он сохраняет последнее заданное состояние, пока оно не будет произвольно изменено. Это также хорошо тем, что светодиоды не мерцают из-за постоянного обновления.

2

Принципы управления драйвером MAX7219

Драйвер MAX7219 управляется по последовательному интерфейсу SPI.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Никаких неожиданностей здесь нет, всё стандартно, как мы уже не раз разбирали. Выбор ведомого (CS) низким уровнем, скорость обмена до 10 МГц.

Данные передаются посылками по 16 бит. В первых 8-ми битах содержится адрес регистра, в который необходимо передать данные (или команду). А вторые 8 бит, собственно, данные. Для каждого регистра будут свои данные, т.к. регистры отличаются по назначению.

Формат командной посылки драйвера MAX7219

Регистров всего 14, чуть позднее мы познакомимся с большинством из них подробнее. В таблице адреса регистров обозначены как, например, 0xX3. Что это значит? Сигнатура «0x» говорит о том, что дальнейшее число записано в шестнадцатеричном виде. Далее идёт «X», что означает, что первая половина байта не влияет и может быть любой. Я буду здесь всегда ставить ноль. И последнее число, собственно, адрес регистра. В рассматриваемом примере «0xX3» адрес регистра – «3», и будем записывать его как «0x03».

Карта регистров драйвера MAX7219

MSB означает most significant bit, т.е. наиболее значимый бит. Это старший бит в байте. Напротив, LSB означает least significant bit, т.е. наименее значимый бит. Это младший бит байта.

3

Подключение и работа с драйвером MAX7219

У меня в наличии есть готовый модуль с драйвером MAX7219 и светодиодной матрицей 1088AS (8 на 8 точек). У модуля есть 2 ряда выводов: VCC, GND, DIN, CS, CLK – это вход модуля, а с противоположной стороны VCC, GND, DOUT, CS, CLK – это выходы модуля.

Модуль с драйвером MAX7219ENG и LED матрицей 1088AS, вид сверху

Понятно, что VCC – это вход питания (5 В), а GND – земля. DIN – вход последовательных данных от микроконтроллера или от предыдущего в цепочке модуля; DOUT – это выход последовательных данных на следующий модуль. CS (он же LOAD) – загрузка данных в драйвер. CLK – вход тактовой частоты.

Модуль с драйвером MAX7219ENG и LED матрицей 1088AS, вид сбоку

Точнее, под рукой нашлись восемь таких модулей Поэтому предлагаю сразу усложнить задачу: соединить в цепочку несколько драйверов MAX7219.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Можно для примера сделать часы в формате ЧЧ:ММ:СС, по одному модулю на цифру или символ «:». Соединение будет предельно простым, каскадным. Это значит, что управляющий сигнал мы подадим только на вход первого модуля в цепочке, а далее соединим по цепочке выходы со входами всех модулей друг за другом. Для надёжности закрепим всю конструкцию на жёсткой основе из обрезка пластикового кабель-канала.

Кстати, 8 полностью включённых панелей при максимальной яркости светодиодов потребляют более 1 А. Необходимо их запитывать от блока питания.

Цепочка из LED матриц и драйверов MAX7219ENG

Кроме того, раз делаем часы, то нужно откуда-то брать время. Значит, ещё нужен модуль с часами реального времени (RTC). Например, DS1302. Он будет хранить время. Мы с помощью Arduino будем считывать его и выводить на LED матрицы.

Модуль с часами реального времени DS1302

4

Изучение драйвера MAX7219с помощью FT2232H

Но прежде чем подключать модули с MAX7219 к Arduino, попробуем поизучать их с помощью отладочной платы с микросхемой FT2232H. Она позволяет обмениваться по SPI с устройствами и не требует программирования. Все настройки делаются в программе SPI via FTDI, и для быстрого знакомства с новым устройством это очень удобно.

Для начала переведём все драйверы MAX7219 в цепочке в режим теста. Для этого необходимо в каждое из устройств в нашей цепочке передать команду 0F 01. В драйвере MAX7219 имеется сдвиговый регистр, и нам нужно «протолкнуть» команду по всем регистрам в цепочке. Чтобы команда прошла по всей цепочке, необходимо повторить её выдачу 8 раз (по числу драйверов в цепочке).

Настройки программы для перевода в режим теста 8-ми драйверов MAX7219

Почему команда именно такая? Смторим в документацию и видим, что адрес регистра Display Test – 0x0F. А чтобы перейти в режим теста, нужно в регистр Display Test записать 1 (см. таблицу 10 из технического описания драйвера MAX7219). В режиме теста должны загореться все светодиоды, подключённые к драйверу.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Выполним команду один раз: зажглась первая LED панель, после второго выполнения команды уже горят две LED панели. После восьмикратного выполнения команды все восемь светодиодных панелей зажглись.

Цепочка из драйверов MAX7219 в режиме теста

Чтобы выйти из режима теста, следует записать 8 раз команду 0F 00. Уже догадались, почему такая команда? Выход из тестового режима осуществляется записью нуля в регистр 0x0F.

Кстати, если в поле количества раз поставить 8, то можно записать команду за одно нажатие на кнопку «Записать».

После включения драйвер MAX7219 переходит в режим выключения, за который отвечает регистр Shutdown (0xXC). В этом режиме единственные команды, которые мы можем послать – это переход в режим теста и выход из него. Чтобы перевести устройство в рабочий режим, нужно в регистр 0x0C записать «1» (см. таблицу 3 технического описания):

Настройки программы для перевода MAX7219 в рабочий режим

Теперь устройство готово к приёму всех команд.

Драйвер MAX7219 может работать в режиме декодирования или без него. Причём можно включать и отключать режим декодирования для каждого из разрядов дисплея (или столбцов LED матрицы) индивидуально. Давайте отключим режим декодирования. Для этого нужно послать команду 09 00 восемь раз (см. таблицу 4 технического описания). В режиме без декодирования биты D0..D7 отвечают за сегменты индикатора. Или, как в нашем случае, за один ряд светодиодов LED панели.

Соответствие битов D0..D7 сегментам в режиме без декодирования

Режим с декодированием используется, когда драйвер MAX7219 подключён к 7-сегментному индикатору. Этот режим позволяет передавать драйверу число, и он сам зажигает нужные сегменты дисплея, чтобы отобразить это число на дисплее. Но так как в нашем случае к драйверу подключена LED панель, то режим с декодированием нам не подходит.

Давайте для примера зажгём в первой строчке всех панелей убывающее число светодиодов: на первой панели в первой строчке будет гореть 8 светодиодов, на второй – 7, и так далее.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Для этого мы должны так же послать 8 команд, но теперь они будут разные. За запись в первую строчку отвечает регистр Digit 0 (0x01). Кроме того, мы имеем сдвиговый регистр, поэтому команда, которую мы пошлём первой, окажется в последнем регистре. То есть сначала мы управляем последним регистром, затем предпоследним, и так далее. Таким образом, вот последовательность команд:


    01 01 (00000001)
    01 03 (00000011)
    01 07 (00000111)
    01 0F (00001111)
    01 1F (00011111)
    01 3F (00111111)
    01 7F (01111111)
    01 FF (11111111)

Первое число – номер регистра (Digit 0), второе число – то, что мы записываем в регистр. В скобках указано двоичное представление того, что записываем в регистр. Единицы будут горящими светодиодами на LED панели, нули – потухшими.

Горит первая строка с убывающим числом светодиодов

Теперь давайте изменим яркость свечения LED панели. Для этого необходимо в регистр Intensity (0x0A) записать число от 0 до 15 (0x0F), где «0» соответствует минимальной яркости, а 0x0F – максимальной (см. таблицу 7 технического описания). Я поставлю что-то около нуля, например, 1. Для этого нужно 8 раз отправить команду 0A 01.

Максимальная и минимальная яркости: управление яркостью драйвером MAX7219

Теперь мы знаем, как управлять драйвером MAX7219 и уже почти готовы подключить его к Arduino. Осталось только освоить ещё одну деталь нашего проекта: часы реального времени DS1302. О том, как это сделать, подробно описано в этой статье.

5

Подключение драйвера MAX7219к Arduino

Продолжение следует…

Драйвер микросхемы MAX7219

Реализовать работу матричного индикатора на этапе проектирования можно было по-разному. Довольно часто для этого используют сдвиговый регистр, однако он не удовлетворил нас из-за своих параметров (в случае его использования микросхема работала бы за пределами своих возможностей, но об этом в самом конце курса).Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Наиболее простым способом оказалось использование специализированной микросхемы-драйвера MAX7219. Работает она по и интерфейсу SPI, т.е. для управления 64 светодиодами (матрица 8 * 8) требуется всего 3 ножки микроконтроллера. В устройстве матрицы две и подключены они по каскадной схеме, нам не нужна дополнительная ножка выбора микросхемы.

Как и в случае с датчиком температуры, нам необходимо изучить документацию для того чтобы понять, как работает устройство. Итак, постарайтесь найти все необходимые нам данные.

  • Какова максимальная частота работы микросхемы?
  • Каков размер посылки (в битах)?
  • Какой бит старший?
  • Как работает ножка выбора устройства CS (LOAD)?

Итак, если вы это проделали, то ваш ответ совпадет с тем, что изложено ниже:

Ответ

  • максимальная скорость 10 МГц;
  • длина посылки 16 бит;
  • старший бит впереди;
  • запоминание поступивших 16 бит происходит по переднему фронту сигнала LOAD (он же CS), т. е. при переключении сигнала из 0 в 1.

Структурная схема поможет нам разобраться.

Структурная схема микросхемы max7219, изображение из документации

Пакет включает в себя «адрес» (в действительности это лишь указание декодеру, чтобы микросхема поняла, по какому адресу вы хотите записать данные) регистра, куда будут записываться данные, и непосредственно сами данные. Так, например, чтобы изменить яркость, вам необходимо отправить декодеру значение 0xXA. Для начала составим перечисление всех «адресов» (согласно таблице 2 из документации).

Если нам нужно передать данные только на вторую микросхему, то сначала мы загоняем данные для второй микросхемы и следом за ней отправляем пустой блок REG_NO_OP.

Ножки DIG0 - DIG7 микросхемы подключаются к катодам (столбцы) матрицы, а SEGA - SEGDP к анодам (строки). Следовательно данные, которые мы записываем в регистры REG_DIGIT_0 - REG_DIGIT_7 определяют состояние состояние столбцов.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Данные могут быть интерпретированы по разному, в зависимости от выбранного режима (регистр REG_DECODE_MODE): в режиме «No decode» каждый бит соответствует определенному светодиоду, т.е. записав 0 — светодиод не горит, записав 1 — светодиод горит; в режиме «BCD code B» биты, записанные в регистре REG_DIGIT_, кодируют определенный символ, указанный в документации. Последний режим больше подходит для семисегментных индикаторов.

Яркость индикатора регулируется регулируется регистром REG_INTENSITY. Всего имеется 16 уровней, 0 соответствует самому тусклому свечению, а 15 самому яркому.

Регистр REG_SCAN_LIMIT отвечает за число обслуживаемых линий DIG. Чем больше линий, тем меньше частота обновления. Если используются все линии (наш случай), то частота составляет 800 Гц, если меньше, то 8 x 800/N, где N — количество задействованных линий.

Записав в регистр REG_SHUTDOWN «1», вы включаете «нормальный» режим работы. Перейдём к инициализации: включим тактирование порта и периферии; настроим ножки и SPI в соответствии с документацией; включим периферию; зададим начальную интенсивность индикатора и очистим его.

Составим заголовочный файл модуля max7219.

Начнём с функции инициализации. Микросхема подключена к модулю SPI2, ножкам PB5 (CS), PB13 (SCK) и PB15 (MOSI).

Следующая функция должна релизовывать задание яркости свечения.

И функция очистки дисплея.

Далее для корректной работы нам требуется функция max7219_send_to_all(), реализуем и её.

Так как мы пишем драйвер, то нужно позаботиться об удобном его использовании. По этой причине нужно предоставить возможность отправки данных только на определённый чип.

Стараясь сделать драйвер более или менее универсальным, напишем функцию, благодаря которой можно отправлять данные сразу на всю линию.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Выхода два: использовать возможность модуля из стандартной библиотеки <stdarg.h>, но можно поступить по другому и предавать массив.

И осталась последняя функция для того, что бы протестировать работу микросхемы. Поступим следующим образом:

Вызовите эту функцию до входа в цикл while(1).

Код урока (и для других библиотек) можно найти на GitHub: CMSIS.


Назад | Оглавление | Дальше

Максимально универсальный семисегментный дисплей. Часть первая — Hardware / Хабр


Случилось так, что по наследству мне досталась целая коробка семисегментных индикаторов с гордой надписью «Комплект часы». Давно хотелось пустить её содержимое в дело, а когда дошли руки — оказалось, что внутри целый зоопарк разномастных индикаторов, разных размеров, цветов, с общим катодом и с общим анодом. По количеству штук так двадцать. И чтобы не пилить «очередные часы» пришла идея сделать, собственно, сабж — максимально универсальный семисегментный дисплей.

Что из этого получилось — под катом.

Disclaimer


Описанные ниже устройства являются довольно нишевыми, сделаны мною just for fun, но примененный подход может быть использован для решения аналогичной задачи универсализации там, где это потребуется. Текст разбавлю пояснениями для начинающих. Основная цель — спроектировать единую плату под все имеющиеся индикаторы и различные идеи их использования.

Статья получилась объемная, так что я разделил hardware и software части. К вашему вниманию часть первая — hardware.

Постановка задачи


Что я понимаю под максимальной универсальностью? Спроектировать модуль, с помощью которого или его комбинаций можно создать любой (или практически любой, в разумных пределах) дисплей для отображение информации с использованием этих самых семисегментных индикаторов. В голову приходит сразу с десяток применений — часы, конечно же, куда без них; туда же таймеры, счетчики чего угодно; термометры; табло для разных игр; дисплеи для отображения цифровой информации — курсов валют, индексов бирж и т.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. п. В общих чертах задача абсолютно тривиальная, но усложняется зоопарком типов индикаторов. В наличии одноразрядные китайские индикаторы с размером цифры 2.3 дюйма (тип FJ23101, четыре светодиода на сегмент) и 3 дюйма (тип CL-30011, пять светодиодов на сегмент), разных цветов и с различным типом подключения — с общим катодом и с общим анодом. Чтобы покрыть использование всех этих типов пришлось посидеть над схемой и разводкой, которая давала бы возможность без изменения топологии печатной платы управлять разными индикаторами. Поискав вечерок в интернете мне не удалось найти универсальных решений или схем, что и стало поводом для написания данной статьи.

По приведенным примерам использования становится понятно, что модуль должен поддерживать различную разрядность, от одной цифры для простых счетчиков событий, до шести для индексов некоторых финансовых бирж. Я решил ограничиться двумя цифрами для большего трехдюймового размера и тремя для меньшего, с возможностью подключения еще одного модуля в виде slave-а.

При выборе управляющей части долго думать не пришлось, выбор сразу пал на готовые модули ESP-07 на контроллере ESP8266 от Espressif. Дешевизна и простота использования этих модулей, возможность легкого подключения к Интернету, обширная комьюнити разработчиков и элементарность программирования этого контроллера отмели все другие варианты.

Приступим к деталям


Начнем с питания семисегментных индикаторов большого размера, где каждый сегмент представляет собой цепочку из нескольких последовательно включенных светодиодов. Такие дисплеи уже не получится зажечь «цифровыми» уровнями напряжения, так как падение на цепочке светодиодов больше этого значения. Конкретное значение указывается в даташите на дисплей, оно зависит от характеристик светодиодов, цвета и их количества и может варьироваться от 6 до 12 Вольт. Ток через каждый сегмент также превышает допустимые значения тока через отдельный пин для большинства контроллеров и составляет от 20 до 50 мА.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Соответственно, нужно использовать напряжение 12 Вольт и коммутирующие ключи для управления сегментами и общими выводами. Также не стоит забывать о динамической индикации — последовательном переключении разрядов с частотой превышающей частоту восприятия глаза человека. Это позволяет значительно снизить энергопотребление практически без потери визуальной яркости дисплея.

Общее питание было решено брать от порта USB, как наиболее универсального стандарта на данный момент. После непродолжительного гугления я выбрал готовый модуль повышающего DC-DC преобразователя на МТ3608. Он компактный, дешевый (<0.5$), регулируемый, с достаточно высоким КПД — всё что нужно для наших целей. От резервного питания отказался, так как под рукой есть Интернет, где можно получить актуальную информацию в любой момент.

Питание цифровой части обеспечит линейный low-dropout стабилизатор LM1117-3.3, классическое решение для нетребовательных применений.

Теперь по транзисторным ключам.

Для управления индикатором с общим катодом на сегменты нужно подавать плюс питания, общий контакт, катод, подключить к земле. Для данных целей удобно использовать микросхемы источников тока (source drivers IC), как пример UDN2981. На картинке ниже подключение индикатора к драйверу и упрощенная схема одной ячейки для лучшего понимания пути прохождения тока. Стоит заметить, что в классической схеме должны быть токоограничивающие резисторы в цепи каждого сегмента, они упущены по причинам использования другого метода ограничения тока — МАХ7219 имеет изменять скважность управляющих импульсов, что в сумме с возможность регулировки напряжения питания индикаторов даст необходимый результат.


Для индикаторов с общим анодом — наоборот, общий контакт подключается к плюсу питания, а сегменты коммутируются на землю. В плане управления индикаторы с общим анодом более простые, так как не требуют коммутации высокого напряжения, по этой причине они более распространены. Для управления сегментами удобно использовать микросхему-массив составных транзисторов Дарлингтона (Darlington Transistor Arrays), например всеми любимую ULN2803.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Значительным преимуществом перед UDN2981 является стоимость, которая в разы меньше. На картинке ниже подключение индикатора к драйверу и упрощенная схема одной ячейки.


Можно заметить, что верхние части схем очень схожи. Пара драйверов UDN2981 и ULN2803 подобрана неспроста. Относительно ножек вход/выход они pin-to-pin совместимы. Это дает возможность сделать универсальное посадочное место на плате добавив всего несколько перемычек под запайку для ножек питания. Бинго!

Чтобы упростить задачу динамической индикации я решил не изобретать велосипед, не городить 595-е сдвиговые регистры, а взять надежное и проверенное решение — специализированный драйвер семисегментного дисплея MAX7219. Эта микросхема умеет хранить во внутренней памяти до восьми цифр и самостоятельно коммутировать разряды с заранее установленной яркостью. По этой причине и не нужны резисторы последовательно с каждым сегментом. Управляется драйвер по шине SPI. Как по мне, микросхема имеет всего один недостаток — высокую стоимость. Имела. Пришли китайцы и наклепали полный функциональный аналог со стоимостью в несколько центов. Название такое же, правда маркировка отличается, отсутствует оригинальный логотип Maxim. В работе отличий не замечено, временные диаграммы такие же, не греется, отказов пока не было. Но для ответственных применений все-таки рекомендую ставить дорогой оригинал.


Вот такой набор MAX7219-MATRIX-KIT можно купить на Ali и в локальных магазинах для ардуинщиков по цене в четыре раза ниже оригинального драйвера MAX7219. Да-да, вы меня правильно поняли, набор с матрицей, платой и рассыпухой. Дешевле. В четыре раза. Выбор очевиден же?

Пока всё звучит очень хорошо и просто, берём драйвер дисплея, который всё делает за нас, в зависимости от типа индикатора ставим нужные ключи и вуа-ля! Все почти так и есть, кроме одного «но». MAX7219 рассчитан на работу с дисплеями с общим катодом с напряжением сегмента до 5В и никак иначе. Что это дает в сухом остатке? Перебирая разряды индикаторов драйвер подключает их на землю, поддерживая высокий уровень на катодах остальных разрядов.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. А теперь вернемся к схемам выше и проанализируем, что будет в случае с индикатором с общим анодом.

Нетрудно понять, что мы получим инверсию — нужный разряд будет выключен, все остальные — активные. Вместо динамической индикации на дисплее будет сплошной засвет от соседних разрядов. Чтобы избежать такой ситуации между контроллером и драйвером нужно добавить микросхему инвертирующую логические уровни. Так как максимальное количество разрядов шесть, гуглим «hex inverter» и тут же находим 74hc04. Отлично, а для общего катода вместо микросхемы сделаем перемычки или можно использовать pin-to-pin совместимую микросхему-буфер 74als34/74as34 (hex noninverter, но обязательно с выходом push-pull, открытый коллектор/сток типа 74hc07/74als35 работать не будет из-за отсутствия подтяжки к питанию).

В итоге имеем финальные схемы подключения индикаторов. Для общего катода все просто — драйвер плюс ключи способные подавать на сегменты повышенное напряжение. В даташите на MAX7219 приводится схема подключения индикаторов размера 2.3 дюйма и все это запитано от 5 Вольт, но мои экземпляры наотрез отказались работать при таком низком напряжении, сегмент начинал слабо светиться при подаче 7.2В (1.8В на светодиод). Катоды подключены напрямую к MAX7219, контроллер может прокачивать через себя от 320мА на каждый канал (>45мА на сегмент), чего с головой достаточно для данных типоразмеров индикаторов.


Для общего анода все немного сложнее. Тут уже нужно использовать разнотипные ключи для верхнего и для нижнего плечей плюс инвертирующий буфер для управления разрядами. Инвертирование сигналов для сегментов получаем автоматически при использовании ULN2803.
Как видим, со стороны драйвера MAX7219 и управляющего всем этим ESP8266 нет никакой разницы какой именно тип индикатора установлен в модуле, модифицировать прошивку не требуется.

Замечу, что при использовании внешних драйверов встроенное в контроллер ограничение тока сегментов (которое задается резистором на входе Iset) корректно работать не будет, поэтому интенсивность будем регулировать напряжением питания при максимальной скважности от MAX7219.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Драйвер позволяет устанавливать интенсивность скважностью встроенного ШИМ генератора от 1/32 до 31/32 с шагом 1/16.

Для управляющей части на ESP8266 ничего выдумывать не нужно, берем типовое включение модуля, заводим линии SPI на MAX7219, UART для прошивки на внешний разъем. Дополнительно решил добавить преобразователь протокола UART в virtual COM port через USB, его устанавливать необязательно, но места на плате предостаточно, пускай будет такая возможность. Как преобразователь я выбрал СН340, как максимально простое и бюджетное решение. В версии чипа СН340G преобразователь даже не требует частотозадающего кварца, он уже встроен в конвертер, а из обвеса всего пара конденсаторов, проще не бывает.


Полная схема в хорошем качестве тут.

Со схемой определились, теперь можно приступать к топологии печатной платы. Как я уже упоминал, все эти заморочки именно через плату. Хотелось заказать партию плат на нормальном производстве под все вышеперечисленные устройства и не дорабатывать их по месту напильником и скальпелем. После непродолжительных размышлений на плате вырисовались аж целых восемь посадочных мест под семисегментные индикаторы:

  • По одному для 2.3" и 3" по центру платы — для дисплея с одной цифрой
  • По два для 2.3" и 3" — для дисплея с двумя цифрами
  • Три для 2.3" — соответственно, для дисплея с тремя цифрами

По краям платы расположены контакты расширения — для подключения справа от ведущего еще одного аналогичного ведомого модуля, но без схемы управления и питания, только индикаторы.

Такая комбинация позволяет расширить разрядность до шести цифр, а так же комбинируя расположение и размер индикаторов изготовить табло для различных, предположим, настольных игр и, конечно же, часы! На контакты продублированы сигналы управления всеми сегментами и выведены линии подключения 3 и 4 разряда для трехдюймовок, и 4, 5 и 6 разряд для двухдюймовок.

Дополнительно, два оставшихся свободных канала MAX7219 подключены к двум цепочкам дискретных светодиодов, расположенных над и под индикаторами.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Их, например, можно будет использовать для фоновой подсветки, так сказать эффект ambilight.

Размер платы выбран таким образом, чтобы она не выходила за края индикаторов. В таком случае можно скомбинировать дисплей с одинаковыми расстояниями между цифрами для бо́льших и 6ти-разрядный для меньших индикаторов.

По углам платы расположены четыре отверстия под болт М3 для крепления модуля к несущей конструкции.

Микросхемы, если это было возможно, выбраны в выводных корпусах DIP, так как вопрос миниатюризации для данного устройства не актуален, а на плате они выглядят уже почти стимпанково, на фоне привычных BGA монстров. Это придает особого шарма, как у ламповых усилителей.

Посадочное место под модуль ESP-07 также pin-to-pin совместимо с модулями ESP-12S/E/F.
Плата проектировалась за два вечера, по этой причине использовался простой принцип разводки как у автороутеров — разделение горизонтальных и вертикальных линий на разные слои. В итоге плата получилась двухсторонняя, несложная и визуально красивая.



Плата была отправлена в производство как раз в канун китайского Весеннего Фестиваля и карантинных мер в КНР. Рассматривал три популярные площадки для изготовления мелкосерийных прототипов — PCBway, Seeed и JLCpcb. На последней стоимость получилась на 20 долларов дешевле (при партии в 20 шт) и значимым плюсом для меня было то, что фабрика не закрывалась на праздничную неделю. Суммарная стоимость составила 44 доллара, с учетом доставки 21$ и купона на скидку -5$. В пересчете на плату — чуть больше 2 долларов за штуку. Несмотря на разгар эпидемии коронавируса, от отправки gerber-ов на фабрику к моменту получения прошел 21 день. Качество плат на высоте.


За время пока в Китае изготавливались платы, в местном рекламном агентстве были заказаны основы из прозрачного акрила, куда можно закрепить платы и светорассеиватель. Теперь можно посмотреть, что получилось из задуманного.

Вот так выглядит вариант платы, запаянной под индикаторы с общим катодом.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. На фото указаны названия микросхем и обведены перемычки под запайку.


А вот так — под индикаторы с общим анодом.
На фото ниже различные комбинации индикаторов разных размеров. Как вы можете понять, их также можно удвоить, добавив slave-модуль.

Далее осталось только написать скрипт под конкретную реализацию, чем и займемся в следующей части.

Всем спасибо за внимание!

P.S.: Если кто-то заинтересовался проектом — пишите в личку, осталось еще с десяток плат или могу выслать gerber-файлы.

7 сегментный индикатор на MAX7219 – подключение и модернизация

Вo врeмя бурнoгo рaзвития элeктрoники и пoвceмecтнoгo внeдрeния вo вce уcтрoйcтвa TFT экрaнoв мoжeт пoкaзaтьcя cтрaнным и мeзoзoйcким пoкупкa cвeтoдиoднoгo 7ми ceгмeнтнoгo индикaтoрa, нo для cвoeгo прoeктa я иcкaл имeннo eгo. Пoчeму и кaк oн мнe прoдинaмил мoзг я xoчу пoдeлитьcя в этoм крaткoм oбзoрe. Жeлaющиx прoшу пoдкaт.

В oднoм из мoиx прoeктoв, a имeннo в кoнтрoлeрe упрaвлeния элeктрoдуxoвкoй, для визуaлизaции интeрфeйca трeбoвaлocь иcпoльзoвaниe кaкoгo-тo экрaнa. Тaк кaк уcтрoйcтвoм будeт «рулить» мoя бaбушкa, кoтoрoй ужe пoд дeвятый дecятoк, тo интeрфeйc дoлжeн быть мaкcимaльнo прocтым, интуитивнo пoнятным и нaглядным. Пoтoму экрaны c измeняeмым углoм oбзoрa и вceмoзмoжными мeню и мeлким тeкcтoм были иcключeны cрaзу. Глaвныe пaрaмeтры в упрaвлeнии уcтрoйcтвoм — этo тeмпeрaтурa и врeмя рaбoты. Сooтвeтвeннo тeмпeрaтурa 3 знaкa и врeмя cтoлькo жe, плюc нecкoлькo дoпoлнитeльныx знaкoв. Прoгуглив я быcтрo нaшeт тo чтo нужнo былo — 7 ceгмeнтный индикaтoр нa кoнтрoлeрe фирмы MAXIM — MAX7219.
Индикaтoр cocтoит из двуx мaтриц c 4мя 7ми ceгмeнтными cвeтoдиoдными индикaтoрaми.
Цвeт cвeчeния — крacный. Индикaтoры припaяны к плaтe нa oбрaтнoй cтoрoнe кoтoрoй уcтaнoвлeн caм кoнтрoлeр MAX7219. Плaтa имeeт oтвeрcтия для уcтaнoвки штырeвoгo рaзъeмa — c oднoй cтoрoны для пoдключeния к кoнтрoлeру, c другoй — для пoдключeния eщe тaкoгo жe индикaтoрa.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Пoлучaeтcя пaрaвoзикoм друг к дружкe мoжнo пoдключить дo 15 тaкиx уcтрoйcтв (врoдe тaк ecли я чeгo нe нaпутaл). Пoдключeниe — 5 прoвoдoв: 3 прoвoдa упрaвлeниe, 2 прoвoдa питaниe.
Мнe рaзъeм нe нужeн, пoтoму я индикaтoр пoдключил припaяв куcкoм IDE шлeйфa — oчeнь дeшeвый и гумaнный cпocoб прoдлeния «жизни» cтaрым кoмпьютeрным кoмплeктующим.
Плaтфoрмa рaбoтaeт нa бaзe Arduino и для рaбoты экрaнa былa иcпoльзoвaнa библиoтeкa «LedControl.h»
Библиoтeкa дocтaтoчнo прocтaя, имeeт нeкoтoрыe oгрaничeния нa oтoбрaжeниe cимвoлoм, нo нa тo oнa и библиoтeкa 😉 Опиcaниe и вoзмoжнocти библиoтeки мoжнo прoчecть здecь.
Библиoтeкa лeкo уcтaнaвливaeтcя чeрeз Arduino IDE, тaм жe в примeрe LCDemo7Segment мoжнo пoдcмoтрeть пoдключeниe и вывoд инфoрмaции нa индикaтoр.
Вce прocтo и крacивo ecли бы нeбoльшoй кaзуc. У мeня индикaтoр рaбoтaл кaк тo нe cтaбильнo. При измeнeнии инфoрмaции нa экрaнe мoгли xaoтичнo зaжигaтьcя кaкиe тo cтoрoнниe ceгмeнты или жe индикaтoр мoг прocтo oтключитьcя. Я дoлгo нe мoг пoнять в чeм дeлo. Пeрecмoтрeл и пeрeпиcaл кoд, пeрeмeрил нaпряжeниe питaниe и cигнaлoв — вce былo в нoрмe. В кoдe я умeньшил чacтoту вывoдa инфoрмaции нa экрaн — этo пoмoглo, экрaн рaбoтaл cтaбильнee. Нo вce-рaвнo в кaкoй тo мoмeнт экрaн мoг oтключитьcя. У мeня ужe былo жeлaниe выбрocить этoт экрaн и пocтaвить cтaрый прoвeрeнный ЖК 16×2.
Сeгoдня утрoм нa cвeжую гoлoву я eщe рaз пoчитaл oпиcaниe библиoтeки и oбрaтил внимaниe нa cxeму пoдключeния. Вeрнee нa чacть тeкcтa:
Both capacitors must be placed as near as possible to the V+ and the Gnd pins of the MAX72XX.
Нa мoeй плaтe был лишь oдин кeрaмичecкий кoндeнcaтoр. Прoзвoнив и выяcнив пoлярнocть цeпи питaния к кoтoрoй пoдключeн этoт кoндeнcaтoр, я пaрaлeльнo eму пoдпaял пeрвый пoпaвшийcя элeктрoлитичecкий кoндeнcaтoр (47mF x 50v).

Экрaн зaрaбoтaл oтличнo бeз мaлeйшиx cбoeв и выключeний. Эврикa!!! ©
Вoт ужe вecь дeнь экрaн рaбoтaeт нa мaкcимaльнoй яркocти и бeз зaдeржeк oбнoвлeния, a мoй прoeкт движeтcя к зaвeршeнию.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.
Пoтoму имeйтe ввиду ecли будeтe иcпoльзoвaть aнaлoгичный кoнтрoлeр и вoзмoжнo тaкиe жe кaзуcы, тeпeрь Вы ocвeдoмлeны и вooружeны.

Тoвaр нe прeдocтaвлeн мaгaзинoм, пoтoму пришлocь пoкупaть зa cвoи бeз примeнeния П. 18.

Вceм oтличнoгo здoрoвья и минимaльнoгo delay.

PS

КЫШ ОТ МОНИТОРА — НА УЛИЦЕ ЛЕТО!!! 😉

Подключение блока сегментных индикаторов с драйвером MAX7219

7-сегментный индикатор хорошо подходит для вывода цифровых значений - он компактен, эстетичен, потребляет мало тока, хорошо виден издалека и при ярком освещении. Каждый сегмент индикатора представляет собой светодиод. Зажигаясь, сегменты образуют цифру или символ.

Недостатком таких индикаторов является то, что для управления каждым сегментом нужен отдельный вывод.

Драйвер MAX7219 решает эту проблему. К 1 чипу MAX7219 можно подключить до 8 семисегментных светодиодных индикаторов, управлять которыми можно по интерфейсу SPI.

В этой статье мы рассмотрим модуль из 8-ми индикаторов, которыми управляет MAX7219 (http://smartelectronika.com/viewproduct/82/)

У модуля имеются 5 выходов (VCC, GND, DIN, CS, CLK). Подключаем их к Raspberry Pi следующим образом

VCC - 5V
GND - GND
DIN - GPIO10 (MOSI)
CS - GPIO8 (CE0)
CLK - GPIO11 (SCLK)

После подключения модуля приступаем к написанию управляющей программы. Для работы с SPI я использовал библиотеку wiringPi

Сначала модуль должен пройти инициализацию. Инициализация происходит посредством записи значений в управляющие регистры:

1. Для включения модуля записываем 0x01 в регистр Shutdown (адрес 0x07). Соответственно для выключения в этот регистр следует записать 0x00

2. В регистр Scan Limit (адрес 0x0B) записывается значение, соответствующее количеству 7-сегментных индикаторов, подключенных к MAX7219. Для восьми индикаторов это значение будет 0x07

3.Регистр Decode Mode (адрес 0x09) определяет режим работы индикаторов.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Для каждого индикатора (а в нашем модуле их восемь) доступно 2 режима работы.

Первый режим - декодер включён. В этом случае на индикаторе загорается цифра или символ, соответствующая записанному в регистр индикатора значению - например, записали в регистр 9, на индикаторе загорается 9.

Второй режим - декодер выключен. Он нужен если требуется управлять каждым из семи сегментов индикатора по отдельности.

Регистр Decode Mode 1-байтный. Каждый бит в регистре соответствует режиму работы соответствующего индикатора. Если в бите стоит 1, то индикатор работает в первом режиме, если 0, то во втором. Соответственно, если нужно чтобы все индикаторы работали в первом режиме то записываем в регистр 11111111 (это 0xFF в шестнадцатиричной системе)

После инициализации, можно выводить значения на индикаторы. Это осуществляется записью значения в регистр индикатора.

Адрес регистров идут по порядку (0x00,0x01,0x02...0x08). Информация о том, какое значение нужно записать, чтобы получить на индикаторе тот или иной символ представлена в этой таблице:

Например, если третий индикатор работает в первом режиме, то для вывода на индикатор цифры "2” необходимо в регистр 0x03 записать 0010 (0x02 в шестнадцатиричной системе). Для того, чтобы после цифры загорелась точка, нужно записать 1 в регистр D7 (для 2. - 10000010). В первом режиме можно выводить на индикатор цифры 0-9, точку, знак минуса, буквы E,H,L,P

При втором режиме работы каждый ненулевой бит в значении управляющего регистра зажигает соответствующий сегмент

Если индикатор работает во втором режиме, то для того, чтобы зажечь сегмент "A" в управляющий регистр записываем 10000000

Данная программа выводит на модуль значение, которое передаётся как аргумент командной строки.


#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main (int argc, char *argv[])
{

	uint8_t valueToDisplay[2];
	uint8_t wCommand_1[2];
	uint8_t wCommand_2[2];
	uint8_t wCommand_3[2];
	
	wCommand_1[0] = 0x0C; //shutdown register
	wCommand_1[1] = 0x01; 

	wCommand_2[0]= 0x09; //decode mode
	wCommand_2[1]= 0xFF;

	wCommand_3[0]= 0x0B; //scan limit
	wCommand_3[1]= 0x07;

	wiringPiSetup () ;
	if (wiringPiSPISetup (0, 10000000) 

Сохраняем исходник в файл indicator.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. c и компилируем:

gcc -Wall -o indicator indicator.c -lwiringPi -std=c99

Запускаем программу - ./indicator 1.2.3.4.5678

На индикаторе должно высветиться 1.2.3.4.5678, как на фото:

На индикатор можно выводить, например, значение температуры процессора. Для этого я набросал вот такой скрипт:

#!/bin/bash
/home/pi/indicator $(vcgencmd measure_temp | egrep  '([0-9]{1,3}\.[0-9]{1,3})' -o)

В следующей статье рассмотрим матричный индикатор на MAX7219

Драйвер

Raspberry PI MAX7219 - Raspberry Pi MAX7219 Driver 0.2.3 документация

Взаимодействие светодиодных матричных дисплеев с драйвером MAX7219
[Техническое описание в формате PDF]
в Python (поддерживаются версии 2.7 и 3.x) с использованием аппаратного SPI на Raspberry Pi. Светодиодную матрицу можно приобрести за несколько фунтов в таких торговых точках, как
Banggood.
Аналогичным образом 7-сегментные дисплеи доступны на Ali-Express или Ebay.

Эта библиотека поддерживает:

  • несколько каскадных устройств
  • Светодиодная матрица и семисегментные варианты

Использование Python

Для матричного устройства инициализировать матрицу Класс :

 импорт макс 7219.вел как вел

устройство = led.matrix ()
device.show_message («Привет, мир!»)
 

Для 7-сегментного устройства инициализируйте семисегментный класс :

 импорт max7219.led как светодиод

устройство = led.sevensegment ()
device.write_number (deviceId = 0, значение = 3,14159)
 

Набор микросхем MAX7219 поддерживает последовательный 16-разрядный буфер регистров / данных, который
синхронизируется на выводе DIN каждый раз, когда край часов падает, и выключается на DOUT
16,5 тактов позже. Это позволяет объединить несколько устройств в цепочку.

При инициализации каскадных устройств необходимо указать каскадный = ...
параметр, и обычно методы, которые нацелены на определенные устройства, будут ожидать
deviceId = .Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. .. параметр, отсчет с нуля.

Для получения дополнительной информации см. Https://max7219.readthedocs.io/

.

Предварительные требования

По умолчанию драйвер ядра SPI НЕ включен в образе Raspberry Pi Raspian.
Вы можете подтвердить, включен ли он, используя следующие команды оболочки:

 $ lsmod | grep -i spi
spi_bcm2835 7424 0
 

В зависимости от версии ядра это может сообщать spi_bcm2807 , а не spi_bcm2835 -
либо должно быть адекватным.

И что устройства успешно установлены в / dev :

 $ ls -l / dev / spi *
crw ------- 1 корень root 153, 0 1 января 1970 г. /dev/spidev0.0
crw ------- 1 root root 153, 1 января 1970 г. /dev/spidev0.1
 

Если у вас нет файлов / dev / spi и при использовании lsmod ничего не отображается, тогда это
означает, что драйвер SPI ядра не загружен. Включите SPI следующим образом (шаги
взято из https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial#spi-on-pi):

  1. Выполнить sudo raspi-config
  2. Используйте стрелку вниз для выбора 9 Дополнительные параметры
  3. Стрелка вниз до A6 SPI.
  4. Выберите да , когда вас попросят включить SPI,
  5. Также выберите да , когда он спросит об автоматической загрузке модуля ядра.
  6. Используйте стрелку вправо, чтобы выбрать кнопку <Готово> .
  7. Выберите да при запросе перезагрузки.

После перезагрузки еще раз проверьте, что lsmod | Команда grep -i spi показывает,
Прежде чем продолжить, загружается драйвер SPI. Если вы все еще испытываете проблемы, обратитесь к официальному
Руководство по устранению неполадок Raspberry Pi SPI для получения дополнительной информации или задайте новый вопрос, но не забудьте добавить как можно больше подробностей.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Распиновка GPIO

Коммутационная плата имеет два разъема для последовательного подключения:

Вывод платы Имя Примечания Штифт RPi RPi Функция
1 VCC + 5V Питание 2 5V0
2 GND Земля 6 GND
3 DIN Данные в 19 GPIO 10 (MOSI)
4 CS Выбор микросхемы 24 GPIO 8 (SPI CE0)
5 CLK Часы 23 GPIO 11 (SPI CLK)

Примечание : См. Ниже сведения о каскадном / гирляндном подключении, источнике питания и сдвиге уровня.

Установка библиотеки

Примечание : Библиотека была протестирована на Python 2.7 и 3.4. Для установки Python3 замените pip pip3 , python python3 , python-dev python3-dev и python-pip python3-pip в инструкциях. ниже.

Установите последнюю версию библиотеки прямо из PyPI:

 $ sudo apt-get install python-dev python-pip
$ sudo pip install max7219
 

Как вариант, скопируйте код с github:

 $ git clone https: // github.com / RM-Hull / max7219.git
$ cd max7219
$ sudo pip install -e.
 

Затем выполните указанные ниже действия для вашей ОС.

Распбиан

 $ cd max7219
$ sudo apt-get install python-dev python-pip
$ sudo pip установить spidev
$ sudo python setup.py установить
 

Arch Linux

 кд макс 7219
pacman -Sy base-devel python2
pip install spidev
установка python2 setup.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. py
 

Каскадирование, питание и сдвиг уровня

Микросхема MAX7219 поддерживает каскадирование устройств путем подключения DIN одной микросхемы к DOUT
другого чипа.Долгое время я недоумевал, почему это не работает должным образом.
для меня, несмотря на то, что я тратил много времени на изучение и всегда предполагал, что это ошибка в
код.

  • Поскольку Raspberry PI может подавать только ограниченное количество энергии от шины 5 В,
    рекомендуется, чтобы любые светодиодные матрицы питались отдельно от источника питания 5 В и заземлялись.
    с Raspberry PI. Возможно питание одной или двух светодиодных матриц напрямую от
    Raspberry PI, но любой другой может вызвать периодические сбои и сбои.
  • Также, поскольку порты GPIO, используемые для SPI, имеют напряжение 3,3 В, простой переключатель уровня (согласно диаграмме
    ниже) следует использовать на входах DIN, CS и CLK для повышения уровня до 5 В. Снова это
    можно управлять ими напрямую через контакты 3,3 В GPIO, это просто за пределами допуска, и
    приведет к периодическим проблемам.

Несмотря на два вышеупомянутых пункта, мне все еще не удалось получить каскадные матрицы
работать правильно. Возвращаясь к проводке, я подключил устройства последовательно.
подключение выходных контактов одного устройства к входным контактам другого.Это просто
производит искаженные изображения.

Соединение линий CLK на входной стороне сработало впервые. я
можно только предположить, что на линии часов есть какой-то шум, или сухой припой
совместить где-нибудь.

Если у вас более одного устройства, и они соединены гирляндной цепью, вы можете инициализировать
библиотека с:

 импорт max7219.led как светодиод

устройство = led.matrix (каскадное = 3)
device.show_message («Привет, мир!»)
 

Для адресации конкретного устройства большинство других методов ожидают deviceId = N параметр.
(где N = 0..cascaded-1).

Примеры

Запустите пример кода следующим образом:

 $ примеры sudo python / matrix_test.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. py
 

или:

 $ примеры sudo python / sevensegment_test.py
 

Примечание : по умолчанию SPI доступен только пользователю root (следовательно, используется sudo выше). Следуйте этим инструкциям, чтобы создать группу spi и добавить пользователя в эту группу, чтобы вам не приходилось запускать ее с правами root.

Содействие

Pull-запросы (изменения кода / документация / опечатки / запросы функций / настройка) с удовольствием принимаются.Если ты
намереваясь внести какие-то крупномасштабные изменения, сначала свяжитесь с нами, чтобы убедиться, что мы на одной странице: попробуйте включить
строка документации для любых новых методов и старайтесь, чтобы тела методов были небольшими, удобочитаемыми и совместимыми с PEP8.

Авторы

  • Thijs Triemstra (@thijstriemstra)
  • Джон Карлос (@webmonger)
  • Без атрибуции (@wkapga)
  • Тарас (@tarasius)
  • Брайс Родитель (@agripo)

Лицензия

Лицензия MIT (MIT)

Авторские права (c) 2016 Ричард Халл

Разрешение предоставляется бесплатно любому лицу, получившему копию
этого программного обеспечения и связанных файлов документации («Программное обеспечение») для работы с
в Программном обеспечении без ограничений, включая, помимо прочего, права
использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и / или продавать
копий Программного обеспечения и разрешить лицам, которым Программное обеспечение
предоставлено для этого, при соблюдении следующих условий:

Приведенное выше уведомление об авторских правах и это уведомление о разрешении должны быть включены во все
копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ
ПОДРАЗУМЕВАЕТСЯ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ,
ПРИГОДНОСТЬ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И ЗАЩИТА ОТ ПРАВ.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. НИ В КОЕМ СЛУЧАЕ
АВТОРЫ ИЛИ ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГИЕ
ОТВЕТСТВЕННОСТЬ, ВЫЯВЛЯЮЩАЯСЯ ЛИ В РЕЗУЛЬТАТЕ ДОГОВОРА, ПРАКТИКИ ИЛИ ИНЫМ ОБРАЗОМ,
ВНЕЗАПНО ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ, ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЛАМИ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

MAX7219 Комплект красного матричного дисплея 8x8

Описание

В комплект MAX7219 8x8 матричного красного модуля дисплея входит 1.3-дюймовый точечно-матричный дисплей с 64-дюймовым экраном и встроенным последовательным светодиодным драйвером MAX7219.

В ПАКЕТЕ:

  • 1,3 ″ матрица красных светодиодов 8 x 8
  • MAX7219 Светодиодная плата драйвера
  • 8-контактная розетка (x2)
  • 5-контактный угловой штекер
  • 5-контактный угловой или прямой штекер

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ MAX7219 КОМПЛЕКТ МОДУЛЯ КРАСНОГО ДИСПЛЕЯ 8 × 8 ТОЧЕЧНОЙ МАТРИЦЫ:

  • Одиночный светодиодный матричный дисплей 8 × 8 с 1.3-дюймовый яркий красный дисплей
  • Встроенный драйвер светодиодов MAX7219
  • SPI 3-проводной последовательный интерфейс для легкого подключения к MCU
  • Возможность последовательного подключения нескольких модулей для больших дисплеев
  • Комплект поставляется с припаянной микросхемой. Просто нужно добавить разъемы и подключить модуль дисплея
  • 5V Работа

MAX7219 Светодиодный драйвер

MAX7219 - это популярный и гибкий 7-сегментный драйвер светодиодов с общим катодом, состоящий из гистограмм и точечной матрицы, который поддерживает множество функций для управления светодиодными дисплеями.

Драйвер обеспечивает гибкое индивидуальное управление светодиодами, а также основные функции, такие как включение / выключение дисплея и регулировка яркости светодиодов.

MAX7219 связывается с MCU через 3-проводную шину SPI. Как только дисплей обновляется MCU, MAX7219 берет на себя всю работу по обновлению дисплея, поэтому он удаляет эти накладные расходы с MCU, которые могут отключать другие более важные вещи.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Интерфейс SPI

Модуль обменивается данными через интерфейс SPI, поэтому для подключения к MCU требуется всего 3 вывода данных.

Если требуется дисплей большего размера, несколько модулей можно соединить гирляндой.

Библиотеки

легко доступны, например, встроенная в IDE для Arduino библиотека «LedControl.h», которая упрощает взаимодействие с дисплеем.

Соединения модулей

На одном конце имеется входной заголовок для подключения к MCU и выходной заголовок на другом конце для подключения к дополнительным модулям.

Входной разъем

Контакты заголовка на стороне « IN » - это главный входной разъем.« Vcc » подключается к 5В. Из-за довольно высокого потребления тока дисплея (до 250 мА, если яркость повышена до упора), рекомендуется снизить яркость до <50%, чтобы избежать перегрева регулятора напряжения MCU, если есть другие периферийные устройства. также прилагается к этой поставке. « GND » подключается к земле, которая должна быть общей с MCU.

Остальные контакты предназначены для интерфейса SPI. « DIN » - это вход данных. « CS » - это выбор микросхемы (иногда обозначается как «ЗАГРУЗКА»), а « CLK » - это вывод синхронизации.Эти длится 3 контакта, подключенные к любым цифровым выходам микроконтроллера. К каким контактам они подключаются, определяется при создании экземпляра LedControl, как показано в программе ниже.

Заголовок 1 x 5

  • VCC - Подключение к 5В.
  • GND - Подключение к заземлению системы. Это заземление должно быть общим с MCU.
  • DIN - Подключите к любому цифровому выводу на MCU.
  • CS / LOAD - Подключите к любому цифровому выводу на
  • CLK - Подключите к любому цифровому выводу на MCU.
Выходной разъем

Выключаемые штифты на другом конце сборки используются, если желательно последовательно подключить несколько дисплеев.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. В этом случае « DOUT » является выходом данных, и он подключается к следующим модулям « DIN » на выводе данных. Остальные штифты проходят прямо через

Заголовок 1 x 5

  • VCC - Подключите к 5 В на следующем модуле, если питание проходит по шлейфу.
  • GND - подключение к GND на следующем модуле
  • DOUT - Подключиться к DIN на следующем модуле.
  • CS / LOAD - Подключиться к CS / LOAD на следующем модуле
  • CLK - Подключиться к CLK на следующем модуле

Монтажный модуль

Это комплект, который требует некоторой пайки для завершения, но все сложные вещи уже сделаны, такие как установка микросхемы MAX7219 и других устройств для поверхностного монтажа.

В комплект может входить угловая жатка и прямая жатка или два прямоугольных жатки.

При сборке модуля выполните следующие основные шаги:

  1. Установите и припаяйте один из разъемов к входной (« IN» ) стороне платы.
    1. Используйте разъем под прямым углом, установленный на стороне микросхемы MAX7219 (вверху) платы. При желании жатку можно установить и на нижней стороне. Модуль может быть установлен вертикально на беспаечной макетной плате.
    2. Если он поставляется с прямым разъемом или имеется под рукой, вы можете дополнительно установить его на нижней стороне, чтобы его можно было положить ровно на макетную плату без пайки.
  2. Если вы собираетесь использовать функцию последовательного подключения, установите прямоугольный разъем на конце платы с маркировкой « OUT ».
  3. Затем поместите светодиодную матрицу лицевой стороной вниз и установите 2 ряда гнездовых розеток на контакты светодиодного модуля, как показано. Это необходимо для того, чтобы все было хорошо выровнено во время пайки.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.
  4. Вставьте светодиодную матрицу в плату на той же стороне печатной платы, что и микросхема MAX7219 (верхняя сторона). Чтобы правильно сориентировать модуль, обратитесь к рисунку, на котором показано, как печать на стороне светодиодного модуля и свисающий небольшой выступ должен совпадать со стороной платы, на которой напечатано « DISY1 », которая находится напротив Маркировка IN / OUT.
  5. Переверните модуль и припаяйте все контакты модуля.

РЕЗУЛЬТАТЫ НАШИ ОЦЕНКИ:

Это полезные модули, с которыми интересно играть.Большое количество светодиодов позволяет отображать буквенно-цифровые символы или многое другое, о чем вы только можете подумать.

Дисплеи вставлены. Если кажется, что дисплей работает неправильно, убедитесь, что все контакты модулей надежно вставлены в гнезда, а светодиодный модуль не повернут и не вставлен назад. Убедитесь, что светодиодный модуль установлен так, чтобы сторона с надписью была ориентирована, как показано.

Программное обеспечение, указанное ниже, использует библиотеку «LedControl.h» для реализации основных функций модуля.

Дисплей подключен к цифровым контактам 10,11 и 12 для DIN / CLK / CS, но это могут быть любые 3 цифровых контакта. Просто переопределите контакты, используемые в операторе
LedControl lc = LedControl (12,11,10, displayCnt);

MAX7219 Пример программы модуля матричного дисплея 8 × 8

 / *
 * Матричный тест на основе MAX7219
 *
 * Инициализируйте дисплей, затем выполните некоторые примитивы низкого уровня
 * для перемещения точки по дисплею, а затем столбцов и строк.* Использует библиотеки LedControl.h и binary.h
 * /
#include "LedControl.h"
#include "binary.h"

int displayCnt = 1; // Количество подключенных дисплеев (от 1 до 8)
int интенсивность = 7; // Яркость дисплеев (от 0 до 15)
int idx = 0; // Индекс для циклов

// Создаем экземпляр LedControl под названием 'lc'
  LedControl  lc =  LedControl  (12,11,10, displayCnt); // Контакты: DIN, CLK, CS, количество дисплеев
// ================================================ ===============================
// Инициализация
// ================================================ ===============================
установка void ()
{

 for (idx = 0; idx  выключение (idx, false); // Просыпаются дисплеи
 }
 for (idx = 0; idx  = 0; col--) {
 for (int row = 0; row <= 7; row ++) {
 lc.setLed (дисплей, строка, столбец, истина);
 задержка (60);
 lc.setLed (отображение, строка, столбец, ложь);
 }
 }
 }
 // Рисуем строки вниз по дисплею
 for (int row = 0; row <= 7; row ++) {
 for (int display = 0; display  = 0; col--) {
 for (int row = 0; row <= 7; row ++) {
 lc.setLed (отображение, строка, столбец, ложь);
 задержка (60);
 }
 }
 }
}

 

ДО ОТГРУЗКИ ЭТИ МОДУЛИ ЯВЛЯЮТСЯ:

  • Проверено
  • Поскольку модули поставляются в виде комплектов, они не тестируются перед отправкой.

Примечания:

  1. На тыльной стороне платы есть открытые контакты, поэтому следует проявлять осторожность, чтобы избежать возможного короткого замыкания при размещении на проводящей поверхности.

Технические характеристики

Дисплей Конфигурация Матрица 8 x 8
Цвет Красный
Эксплуатационные характеристики Вход питания постоянного тока 5 В
I (тип.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. ) Светодиоды не горят 8 мА
I (тип.) Все светодиоды горят, минимальная яркость 35 мА
I (тип.) Все светодиоды горят, максимальная яркость 250 мА
Размеры Размер экрана 32 x 32 мм (1.26 x 1,26 ″)
Высота дисплея с печатной платой 14 мм (0,55 ″) (номинал)
Размер символа 32 x 32 мм (1,26 ″)
Лист данных MAX7219

Роботы для развлечения

В этом проекте вы узнаете, как подключать восемь 7-сегментных светодиодных дисплеев и управлять ими с помощью микросхемы драйвера MAX7219.

В учебном курсе по 7-сегментному светодиодному дисплею вы узнали, как управлять одним 7-сегментным светодиодным дисплеем.Для управления большим количеством 7-сегментных светодиодных дисплеев
вам потребуется специальный чип драйвера светодиода, такой как MAX7219.
Одна микросхема драйвера MAX7219 позволяет легко управлять от одного до восьми 7-сегментных светодиодных дисплеев.
Кроме того, вы можете последовательно подключить восемь микросхем MAX7219, каждый из которых управляет восемью 7-сегментными дисплеями, что дает вам в общей сложности 64 7-сегментных светодиодных дисплея!

Необходимые детали:

  • Ардуино
  • 3-, 4- или 8-разрядный 7-сегментный Общий катод Светодиодный дисплей
  • MAX7219 чип драйвера светодиода
  • Резистор 22 кОм (красно-красно-оранжевый)
  • А 0.Конденсатор 1 мкФ (104)
  • Провода
  • Макетная плата
  • Вам также необходимо загрузить программную библиотеку LedControl, которая содержит все функции для взаимодействия с микросхемой драйвера светодиодов MAX7219.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.
1 Выполнение подключений

Если ваш светодиодный дисплей уже подключен к микросхеме MAX7219, пропустите этот шаг и перейдите к шагу 2.

В противном случае вам необходимо выполнить следующие подключения между микросхемой MAX7219 и 7-сегментным светодиодным дисплеем.
Распиновка микросхемы MAX7219 и 4-разрядного 7-сегментного светодиодного дисплея показаны справа.

Используйте разъемы контактов под столбцом Three 7-сегментный или Four 7-сегментный в зависимости от того, какой у вас дисплей: 3 или 4.

MAX7219 Три 7-сегментных Четыре 7-сегментных Описание

2 8 (общий катод) 6 (общий катод) Цифра 0 (крайняя правая цифра)
11 9 (общий катод) 8 (общий катод) цифра 1
6 12 (общий катод) 9 (общий катод) цифра 2

7 12 (общий катод) цифра 3

14 11 11 Сегмент А
15 10 10 Сегмент F
16 7 7 Сегмент B
17 5 5 Сегмент G
20 4 4 Сегмент C
21 1 1 Сегмент E
22 3 3 Сегмент DP
23 2 2 Сегмент D

Кроме того, на микросхеме MAX7219 необходимо выполнить следующие два подключения:

  • Подключите резистор 22 кОм (красный-красный-оранжевый) между контактом 18 (ISET) и контактом 19 (V +).Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.
  • Подключите конденсатор 0,1 мкФ (104) между контактом 4 (GND) и контактом 19 (V +).
2 Микросхема MAX7219 требует пяти подключений к Arduino: DIN, CS, CLK, V + и GND.

MAX7219 Ардуино Описание

1 12 DIN
12 11 КС
13 10 CLK
19 5 В В +
9 ЗЕМЛЯ ЗЕМЛЯ

3 Загрузите и сохраните библиотеку LedControl.Не открывай.

4 Установите библиотеку LedControl, выбрав Sketch в меню Arduino IDE.

  • затем выберите Импорт библиотеки или Включить библиотеку
  • затем выберите Добавить библиотеку или Добавить библиотеку .ZIP

Найдите и выберите файл LedControl.zip , который вы только что загрузили на шаге 3. Он должен находиться в папке Download.

Нажмите кнопку "Открыть".

(Обратитесь к этому документу для получения дополнительной информации о том, как установить библиотеку, если у вас возникнут проблемы.)

5 Создайте новую программу, выбрав в меню Файл

  • затем выберите Примеры
  • затем выберите LedControl
  • затем выберите _7segment
6 Загрузите и запустите программу.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Обратитесь к справочной документации библиотеки LedControl для получения подробной информации о том, как использовать функции в этой библиотеке.

Подключение 7-сегментных дисплеев к X-plane / SimVim

При создании кабины пилотажного тренажера вы можете добраться до точки, в которой вам нужно считывать числа. Это можно сделать по-разному, но 7-сегментный, вероятно, наиболее используемый способ сделать это.

При использовании 7-сегментных дисплеев в X-plane с SimVim, вы можете использовать различные типы драйверов IC, в зависимости от ваших настроек. Чаще всего используются MAX7219, TM1637, DM13A и 74HC595.

MAX7219 - самый универсальный, он поддерживает до 8 цифр на одной ИС. Но имейте в виду, что MAX7219 поддерживает только дисплей с общим катодом!

Для подключения 7-сегментных дисплеев к MAX7219 следуйте приведенной ниже таблице.

MAX7219 7-сегментное подключение проводов

Используйте столбец «Вывод IC» и столбец, соответствующий количеству цифр на 7-сегментном дисплее.
«Кабель SimulConn IDC» - только если вы используете плату SimulConn 7s. «Функция» описывает функциональность провода.

SimulConn
Кабель IDC
Вывод IC Функц 3 цифры 4 цифры 5 цифр 6 цифр
1 2 DIG_0 8 6 8 8
2 23 SEG_D 2 2 2 5
3 3 DIG_4 н / д н / д 14 2
4 22 SEG_DP 3 3 3 7
5 21 SEG_E 1 1 1 4
6 5 DIG_6 н / д н / д н / д н / д
7 20 SEG_C 4 4 4 6
8 6 DIG_2 12 9 10 10
9 7 DIG_3 н / д 12 11 3
10 8 DIG_7 н / д н / д н / д н / д
11 16 SEG_B 7 7 9 12
12 17 SEG_G 5 5 5 11
13 11 DIG_1 9 8 6 9
14 10 DIG_5 н / д н / д н / д 1
15 14 SEG_A 11 11 13 13
16 15 SEG_F 10 10 12 14

Использование печатной платы для подключения 7-сегментных дисплеев

Использование платы SimulConn 7s немного упрощает сборку и подключение 7-сегментных дисплеев к вашей кабине.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

7-сегментные дисплеи подключаются к имитатору полета с помощью разъемов IDC на ленточных кабелях.

Разъемы IDC защелкиваются на ленточном кабеле, поэтому для этих кабелей пайка не требуется.

В приведенной выше таблице в столбце «SimulConn IDC cable» перечислены кабельные выводы, используемые для 7-сегментной печатной платы.

Arduino bluetooth светодиодная матрица max7219

Это будет отличный урок. Мы создадим наше приложение с помощью инструмента AppInventor.Если вы хотите шаг за шагом увидеть, как создать свой собственный, просто посмотрите это видео и учитесь. Итак, в основном, что мы будем делать, это подключать смартфон к модулю bluetooth. Этот модуль buletooth подключается к Arduino через соединение UART. Мы отправляем текст в Arduino, и он отображает этот текст на огромной светодиодной матрице размером 8x32 1 см. Мы узнаем, как построить эту светодиодную матрицу, используя 256 светодиодов, 4 драйвера матрицы MAX7219 и один Arduino. Итак, приступим.

Материал

1 x Arduino (NANO или UNO)
1 x Bluetooth-модуль HC-06
256 светодиодов (я использовал 10 мм)
4 x MAX7219 драйверы для светодиодной матрицы
2 x 100x40 см деревянная панель
1 x ams1117 5V стабилизатор напряжения
1 x Конденсатор 10 мкФ
1 конденсатор 100 нФ
1 трансформатор 12 В
Просверленная печатная плата, разъемы, припой, провода, инструменты и т. Д...

Схема

-Arduino UNO

Нам нужно создать 4 матрицы каждая по 8 на 8 светодиодов. Каждый драйвер MAX7219 может обрабатывать матрицу из 64 светодиодов. Arduino отправит данные по последовательному каналу связи. Поэтому нам нужно подключить часы и контакты нагрузки от Arduino ко всем драйверам MAX7219. Вывод данных будет подключен только к первому драйверу. От вывода «data out» первого драйвера мы подключим провод ко второму «data in» второго драйвера и так далее. Так мы последовательно соединяем четыре матрицы 8х8.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. Мы также должны подключить модуль Bluetooth к контактам Tx и Rx Arduino и подать 5 В на него и на каждый из драйверов MAX7219.

Сначала давайте посмотрим, как подключить каждый из столов 8x8. Когда у нас есть 4 матрицы, мы можем объединить их вместе с выводами «данные на выходе» «данные в».

На схеме выше вы можете увидеть, как соединить одну светодиодную матрицу 8 на 8. Таким же образом мы должны создать 4 матрицы. Когда у нас есть 4 матрицы, мы соединяем данные от первых к следующим данным и так далее.Нагрузка и частота одинаковы для всех матриц. Как вы можете видеть на схеме выше, он показывает вид сзади. Стрелка показывает направление следующего модуля 8by8. Вы можете увидеть окончательную схему на схеме ниже.

Чтобы не заблудиться, посмотрим на лицевую сторону всей матрицы 32 на 8 на картинке ниже. Вы можете видеть, что теперь стрелка указывает противоположную сторону, чем в предыдущей схеме модуля. Это потому, что мы перевернули модули, и мы видим лицевую сторону.Таким образом, текст будет прокручиваться справа налево, от первой матрицы 8 на 8 к четвертой.

Приложение

Итак, чтобы отправить текст на нашу огромную светодиодную матрицу, мы должны установить соединение Bluetooth между нашим Android-смартфоном и Arduino. Для этого я создал следующее приложение с помощью App Inventor. Если вы хотите узнать, как создать собственное приложение Arduino, просто посмотрите мое видео.
В следующем приложении есть одна кнопка для подключения по Bluetooth, одно текстовое поле и кнопка для отправки текста.

Вы можете скачать это приложение по ссылке ниже.Скопируйте файл apk на свой смартфон через USB-соединение или просто загрузите приложение прямо на свой телефон. Вы должны разрешить установку приложения неизвестного происхождения на свой смартфон, чтобы иметь возможность не использовать все это приложение. Для этого перейдите в настройки, безопасность и проверьте блок unknown origin .Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Прежде чем мы откроем приложение, мы должны синхронизировать модуль Bluetooth. Для этого перейдите в настройки bluetooth на вашем смартфоне и найдите устройства. При обнаружении выберите модуль hc06 и используйте пароль 0000 или 1234 для синхронизации.Были сделаны. Теперь откройте приложение. Щелкните значок bluetooth и выберите модуль hc-06. Введите текст и отправьте.

Загрузите приложение для Android здесь:

Подключение к светодиодной матрице с MAX7219. - BrainsChild

Моя настройка

  • Raspberry Pi Модель 3
  • Распбиан Джесси (ПИКСЕЛЬ)
  • 8х8 светодиодная матрица Max7219
  • Макет
  • Выбор проводов / разъемов
  • Мышь, клавиатура и монитор

Итак, оно начинается

Светодиодная матрица Max7219 была одним из наших первых совместных проектов, для начала у нас была только одна светодиодная матрица 8 × 8, с момента написания этой статьи нам удалось каскадно соединить 4 матричных блока 8 × 8 вместе, чтобы создать прокручиваемую доску сообщений. дисплея.

Поиск информации

Наш первоначальный поиск привел нас к различным веб-сайтам, многие из которых, казалось, предоставляли немного разную информацию. В конце концов мы попали на страницы github Ричарда Халла (ссылка), он создал все необходимое для работы светодиодной матрицы с использованием драйвера MAX7219 SPi на вашем Raspberry Pi.

Подключение матрицы

Чтобы подключить светодиодную матрицу Max7219 к нашему RPi, мы подключили их непосредственно к контактам GPIO следующим образом:

  1. VCC (+ 5 В)> Контакт 2 заголовка GPIO (выход 5 В)
  2. GND (-Ground)> Контакт 6 разъема GPIO (GND)
  3. DIN (вход данных)> Контакт 19 заголовка GPIO (GPIO 10 MOSI)
  4. CS (Выбор микросхемы)> Контакт 24 заголовка GPIO (GPIO 8 SPI CS0)
  5. CLK (Часы)> Вывод 23 заголовка GPIO (GPIO 11 SPI CLOCK)

После наших первых испытаний мы начали использовать макетную плату, чтобы навести порядок и обеспечить основу для Матрицы.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.

Установка матрицы

SPI Должен быть включен в Raspberry pi;

  • Запустите sudo raspi-config.
  • Используйте стрелку вниз, чтобы выбрать 9 дополнительных параметров.
  • Стрелка вниз к A6 SPI.
  • Выберите «Да», когда вас попросят включить SPI,
  • Также выберите «Да», когда появится запрос об автоматической загрузке модуля ядра.
  • Используйте стрелку вправо, чтобы выбрать кнопку.
  • Выберите «Да» при запросе перезагрузки.

Установка элементов, необходимых для запуска Max7219 на вашем Raspberry Pi, довольно проста, это можно сделать через терминал или удаленно с помощью таких утилит, как Putty, как всегда, вы должны убедиться, что ваша ОС обновлена, запустив первые 2 команды ниже, прежде всего!

Что-то, что нас сбило с толку, чтобы заставить это работать, заключается в том, что при сканировании (и пропуске текста), чтобы получить ответы, которые нам нужны, мы пропустили часть, в которой говорится, что SPI должен быть включен на вашем RPi, чтобы RPi мог общаться со светодиодной матрицей, это легко исправить, но боль ночью, когда вы устали и пытаетесь понять, что пошло не так.

Запуск матрицы

Теперь все, что осталось сделать, это запустить Matrix 🙂

  • кд / макс. 7219/
  • cd / примеры /
  • sudo python matrix_test.py

Примечание: сценарий matrix_test.py довольно длинный, нажатие CTRL + C должно позволить вам выйти в любой момент.

После того, как вы протестировали светодиодную матрицу Max7219 и она заработала, вы можете использовать код из тестового сценария для создания собственного сообщения.Вот простой код, который мы используем для отображения сообщения:

###### СТАРТОВЫЙ КОД ######

импорт max7219.led как led
время импорта
из max7219. font пропорциональный импорт, SINCLAIR_FONT, TINY_FONT, CP437_FONT
из случайного импорта randrange

устройство = светодиодная матрица (каскадно = 1)

device.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация. show_message («Мальчик и его код»)
time.sleep (1)

device.flush ()

###### КОНЕЧНЫЙ КОД ######

Нравится:

Нравится Загрузка...

Как подключить матричный светодиод 8X8 к MAX7219 на Arduino

/ *

14CORE | 8x8 MATRIX LED DEMO SKETCH

* /

int MAXPINCLK = 10; // Определение цифрового порта 10

int MAXPINCS = 9; // Определение цифрового порта 9

int MAXPINDIN = 8; // Определение цифрового порта 8

unsigned char x; // занимает байты в памяти

unsigned char y; // занимает байты в памяти

unsigned char disp1 [38] [8] = {

{0x3C, 0x42,0x42,0x42,0x42,0x42,0x42,0x3C}, // Char 0

{0x10 , 0x18,0x14,0x10,0x10,0x10,0x10,0x10}, // Char 1

{0x7E, 0x2,0x2,0x7E, 0x40,0x40,0x40,0x7E}, // Char 2

{0x3E, 0x2 , 0x2,0x3E, 0x2,0x2,0x3E, 0x0}, // Char 3

{0x8,0x18,0x28,0x48,0xFE, 0x8,0x8,0x8}, // Char 4

{0x3C, 0x20,0x20 , 0x3C, 0x4,0x4,0x3C, 0x0}, // Char 5

{0x3C, 0x20,0x20,0x3C, 0x24,0x24,0x3C, 0x0}, // Char 6

{0x3E, 0x22,0x4,0x8 , 0x8,0x8,0x8,0x8}, // Char 7

{0x0,0x3E, 0x22,0x22,0x3E, 0x22,0x22,0x3E}, // Char 8

{0x3E, 0x22,0x22,0x3E, 0x2 , 0x2,0x2,0x3E}, // Char 9

{0x8,0x14,0x22,0x3E, 0x22,0x22,0x22,0x22}, // Char A

{0x3C, 0x22,0x22,0x3E, 0x22,0x22 , 0x3C, 0x0}, // Char B

{0x3C, 0x40,0x40,0x40,0x40,0x40,0x3C, 0x0}, // Char C

{0x7C, 0x42,0x42,0x42,0x42,0x42,0x7C , 0x0}, // Char D

{0x7C, 0x40,0x40,0x7C, 0x40,0x40,0x40,0x7C}, // Char E

{0x7C, 0x40,0x40,0x7C, 0x40,0x40,0x40,0x40}, // Char F

{0x3C , 0x40,0x40,0x40,0x40,0x44,0x44,0x3C}, // Char G

{0x44,0x44,0x44,0x7C, 0x44,0x44,0x44,0x44}, // Char H

{0x7C, 0x10 , 0x10,0x10,0x10,0x10,0x10,0x7C}, // Char I

{0x3C, 0x8,0x8,0x8,0x8,0x8,0x48,0x30}, // Char J

{0x0,0x24,0x28 , 0x30,0x20,0x30,0x28,0x24}, // Char K

{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C}, // Char L

{0x81,0xC3,0xA5,0x99 , 0x81,0x81,0x81,0x81}, // Char M

{0x0,0x42,0x62,0x52,0x4A, 0x46,0x42,0x0}, // Char N

{0x3C, 0x42,0x42,0x42,0x42 , 0x42,0x42,0x3C}, // Char O

{0x3C, 0x22,0x22,0x22,0x3C, 0x20,0x20,0x20}, // Char P

{0x1C, 0x22,0x22,0x22,0x22,0x26 , 0x22,0x1D}, // Char Q

{0x3C, 0x22,0x22,0x22,0x3C, 0x24,0x22,0x21}, // Char R

{0x0,0x1E, 0x20,0x20,0x3E, 0x2,0x2 , 0x3C}, // Char S

{0x0,0x3E, 0x8,0x8,0x8,0x8,0x8,0x8} , // Char T

{0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C}, // Char U

{0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18}, / / Char V

{0x0,0x49,0x49,0x49,0x49,0x2A, 0x1C, 0x0}, // Char W

{0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41}, // Char X

{0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8}, // Char Y

{0x0,0x7F, 0x2,0x4,0x8,0x10,0x20,0x7F}, // Char Z

};

void MX7219_WRITE_byte (unsigned char DATA)

{

unsigned char x;

digitalWrite (MAXPINCS, LOW);

для (x = 8; x> = 1; x--)

{

digitalWrite (MAXPINCLK, LOW);

digitalWrite (MAXPINDIN, DATA & 0x80); // Извлечение битовых данных

DATA = DATA << 1;

digitalWrite (MAXPINCLK, HIGH);

}

}

void MX7219_WRITE (адрес символа без знака, данные символа без знака)

{

digitalWrite (MAXPINCS, LOW);

MX7219_WRITE_byte (адрес); // Адресный код светодиода

MX7219_WRITE_byte (dat); // Цифра данных на светодиоде

digitalWrite (MAXPINCS, HIGH);

}

недействительно InitMAX7219 (недействительно)

{

MX7219_WRITE (0x09, 0x00); // Устанавливаем декодирование BCD

MX7219_WRITE (0x0a, 0x03); // Устанавливаем яркость

MX7219_WRITE (0x0b, 0x07); // Установить сканирование и ограничение 8 светодиодов

MX7219_WRITE (0x0c, 0x01); // В режиме пониженного энергопотребления 0 , в обычном режиме 1

MX7219_WRITE (0x0f, 0x00); // Для проверки дисплея 1 EOT , display 0

}

void setup ()

{

pinMode (MAXPINCLK, OUTPUT);

pinMode (MAXPINCS, ВЫХОД);

pinMode (MAXPINDIN, OUTPUT);

задержка (50);

InitMAX7219 ();

}

void loop () // Цикл

{

for (y = 0; j <38; y ++) // Просто замените "j" на y.Max7219 подключение: #16. Подключаем матрицу Max72xx (MAX7219) к Arduino. Простая анимация.