Подключение нескольких 8-разрядных модулей на мах7219

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

С одним модулем я разобрался, но, друзья, помогите выбрать более выгодный вариант подключения к Ардуино нескольких 8-разрядных модулей на мах7219. Их нужно подключить 8 штук. На пояснительном рисунке привел только два, полагаю, что остальные можно подключать аналогично. 

Из ДШ выудил, что можно это делать в виде последовательной цепочки (вариант №1). Однако, не смог понять, как их соединять (подключение первого к Ардуино - понятно как). Помогите развести соединения между модулями. Кроме того, никак не пойму, каким образом тут надо задействовать библиотеку LedControl.h. B каким образом использовать в такой цепочке операторы SetDigit n SetRow. В частности:

В объявлениях 

#include "LedControl.h"  //Подключаем библиотеку LedControl.h
LedControl lc = LedControl(13, 11, 12, 1);  //создаём объект класса LedControl с указаниями управляющих пинов Ардуино

И в void setup

lc.shutdown(0, false); //Устройство(7-ми сегментный дисплей) выводим из спящего режима
lc.setIntensity(0,5);    //Яркость дисплея на 5. Всего возможных режимов яркости от 0 до 15
lc.clearDisplay(0);      //Очистить дисплей

В принципе Ардуино Мега 2560 позволяет подключать эти 8 модулей параллельно (вариант №2), но тут тоже мне нужна помощь в тех же фрагментах скетча.

 

 

 

b707
Offline
Зарегистрирован: 26.05.2017

для управления цепочкой MAX7219 с помощью библиотеки ЛедКонтрол используется три любые цифровые пина ардуино. Два пина заводятся паралельно на пины CLK и Load(CS) всех модулей. Третий контакт подключается к модулям последовательно - от ардуины на контакт Din первого модуля, далее с контакта Dout первого модуля на Din второго и так далее..

Подробно читайте в описании библиотеки:

http://wayoda.github.io/LedControl/index.html

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

b707 пишет:

 Два пина заводятся паралельно на пины CLK и Load(CS) всех модулей. Третий контакт подключается к модулям последовательно - от ардуины на контакт Din первого модуля, далее с контакта Dout первого модуля на Din второго и так далее..

Спасибо, с соединением последовательно понял.  Библиотеку буду мучиться и разбирать (эй, с аглицким хреновато!).

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Sonologist пишет:

 (эй, с аглицким хреновато!).

Смело предположу, что гуглопереводчик осилит и не такое ;)

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Еще раз, спасибо за ссылку на библиотеку. Там все достаточно понятно разжевано. Но в ее описании сразу сказано, что чем больше модулей, тем "задумчивее" будет система. К сожалению, на руках пока 8 модулей нет, поэтому провести эксперимент не могу. Насколько я понимаю, делать комбинированное включение (несколько параллельных цепочек из последовательно соединенных модулей) - уже не дает никакого технологического выигрыша. Тут "или трусы оденьте или снимите галстук". То есть, или ждать прибытия всех модулей, собирать цепочку и смотреть, что получится в смысле "задумчивости" (при этом, пока не будет закончено написание кода, полной картины не получишь) или сразу делать на Меге 2560 восемь параллельных каналов (пинов у нее хватит) и не париться. Проводов все равно получится сопоставимое количество. Кто меня поправит, если я не прав?

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

DIYMan пишет:

Смело предположу, что гуглопереводчик осилит и не такое ;)

Ну уж не до такой степени хреновато :) Философский диспут вести не взялся бы, но на бытовом уровне почти свободно. Это я кокетничаю.

sadman41
Offline
Зарегистрирован: 19.10.2016

Что-то мне кажется, что эта "задумчивость" будет незаметна вовсе, если вы не электрон или фотон какой-нить. В крайнем случае - можно перейти на чистый SPI с его эмуляции библиотекой.

 

bwn
Offline
Зарегистрирован: 25.08.2014

sadman41 пишет:

Что-то мне кажется, что эта "задумчивость" будет незаметна вовсе, если вы не электрон или фотон какой-нить. В крайнем случае - можно перейти на чистый SPI с его эмуляции библиотекой.

Истинно, 8 шт. 8х8 матриц с динамическим отображением (бегучая строка), впечатления задумчивости не создают.

SLKH
Offline
Зарегистрирован: 17.08.2015

sadman41 пишет:

Что-то мне кажется, что эта "задумчивость" будет незаметна вовсе, если вы не электрон или фотон какой-нить. В крайнем случае - можно перейти на чистый SPI с его эмуляции библиотекой.

Может и быть заметной. Там много не слишком быстрых shifOut() в цикле. 

 

Я где-то накопытил уже допиленную библиотеку.

"Modified by Jack Zimmermann for supporting hardware SPI using the predefined MOSI and SCK pins on supported devices.

This is a modified version using hardware SPI calls instead of bit banging. Speed increase is 20x or greater. "

 

Там хвост вот так выглядит:

void LedControl::spiTransfer(int addr, volatile byte opcode, volatile byte data) {
    //Create an array with the data to shift out
    int offset=addr*2;
    int maxbytes=maxDevices*2;

    for(int i=0;i<maxbytes;i++)
        spidata[i]=(byte)0;
    //put our device data into the array
    spidata[offset+1]=opcode;
    spidata[offset]=data;
    //enable the line 
    digitalWrite(SPI_CS,LOW);
    //Now shift out the data
		SPI.beginTransaction(SPISettings(100000000, MSBFIRST, SPI_MODE0));
    for(int i=maxbytes;i>0;i--)
			SPI.transfer(spidata[i-1]);
//       shiftOut(MOSI,SCK,MSBFIRST,spidata[i-1]);
    //latch the data onto the display
		SPI.endTransaction();
    digitalWrite(SPI_CS,HIGH);
}

 

SLKH
Offline
Зарегистрирован: 17.08.2015

bwn пишет:

Истинно, 8 шт. 8х8 матриц с динамическим отображением (бегучая строка), впечатления задумчивости не создают.

"СлучАи всякие бывают" - мне нужно было уместить замеры, вычисления, дрыганье ногами и индикацию в ограниченное время; общее время отработки команд setDigit напрашивалось на обрезание. Тем более, что всех трудов-то было - найти и заменить библиотеку.

SLKH
Offline
Зарегистрирован: 17.08.2015

Sonologist пишет:

b707 пишет:

 Два пина заводятся паралельно на пины CLK и Load(CS) всех модулей. Третий контакт подключается к модулям последовательно - от ардуины на контакт Din первого модуля, далее с контакта Dout первого модуля на Din второго и так далее..

Спасибо, с соединением последовательно понял.  Библиотеку буду мучиться и разбирать (эй, с аглицким хреновато!).

Про неё и на русском много чего в этих ваших интернетах.

Если нет особых требований к быстродействию - разводи сигналы последовательно, мороки меньше. При разводке питания учти китайский прикол в виде диода, который следует зашунтировать или обойти. Очень желательно добавить конденсаторов на модули (см. Supply Bypassing and Wiring в мануале).

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

SLKH пишет:

Если нет особых требований к быстродействию - разводи сигналы последовательно, мороки меньше. При разводке питания учти китайский прикол в виде диода, который следует зашунтировать или обойти. Очень желательно добавить конденсаторов на модули (см. Supply Bypassing and Wiring в мануале).

Мерси, тоже прикидываю про "меньше мороки" при последовательной компановке.

Касательно быстродействия - я пока не совсем понял вот какие две вещи:                                                                                                 1). На этих модулях индикация динамическая или нет?                                                                                                                                      2). Если прописать какую-либо цифру (букву) посредством SetDigit или SetRow один раз, но потом ничего не менять этими операторами, то так оно на индикаторе гореть и останется?

Это я к тому, что измерения и индикация нужных мне параметров (но их восемь!) будет проводиться циклично 1 раз в секунду примерно (даласские термодатчики, у них процесс "запуск-ответ" около 800 мсек). Вот где вопрос про "задумчивость": будет она меня мучить или нет?

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

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

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

bwn
Offline
Зарегистрирован: 25.08.2014

Записали и отображается до следующей записи или снятия питания.

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Спасибо, понял.