8×8 LED Matrix MAX7219 - неправильное исполнение элементарного кода

pahuchiy
Offline
Зарегистрирован: 04.03.2018
/* Создаём объект класса LedControl
 * Используем пины 12, 11, 10 на плате Arduino в качестве SPI интерфейса
 * для драйвера MAX7219
 * 
 * Подключаем устройства согласно таблице:
 * Arduino[Pin 12] <-> Display Module MAX7219 [DIN]
 * Arduino[Pin 11] <-> Display Module MAX7219 [CLK]
 * Arduino[Pin 10] <-> Display Module MAX7219 [LOAD/CS]   
 * 
 * Прототип создания объекта класса LedControl:
 * LedControl(int dataPin, int clkPin, int csPin, int numDevices);
 * где:
 *      int dataPin    - пин 12 на плате Arduino 
 *      int clkPin     - пин 11 на плате Arduino
 *      int csPin      - пин 10 на плате Arduino
 *      int numDevices - количество устройств на шине SPI      
 */
 
/* Для начала подключим библиотеку */
#include "LedControl.h"

/* Создаём объект класса LedControl для 5-ти устройств */
LedControl LC = LedControl(12, 11, 10, 1); 

void setup() 
{
  /*
   * Выводим устройство с адресом равным 0 из 
   * энергосберегающего режима
   */
  LC.shutdown(0, false);
    
  /* Устанавливаем интесивность свечения
   * для устройства с адресом равным 0
   * на средний уровень 
   */
    LC.setIntensity(0, 8);
    
  /* и очищаем дисплей с адресом равным 0*/
  LC.clearDisplay(0);
}

void loop() 
{
  LC.setLed(0, 2, 7, true);
  delay(500);
  LC.setLed(0, 2, 7, false);
  delay(500);
}

В реальности же мигает так: https://youtu.be/xGkyrgpvukk

Почему-то некоторые интервалы когда светодиод горит длятся не пол секунды, а примерно секунду. Отчего так?

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

Может сигнальный проводок отходит?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

sadman41 пишет:

Может сигнальный проводок отходит?

нет, переделовал не раз - каждый раз проблема повторяется

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

Странно, конечно. Библиотекой этой не пользовался, поэтому больше вариантов нет. Разве что взять "мигалку" в какой-нить while(true) {...} внутри лупа. Может ему serialEvent() мешает... Хотя тоже странно, что двойной интервал пропускается, а не случайный. 

pahuchiy
Offline
Зарегистрирован: 04.03.2018
/* Создаём объект класса LedControl
 * Используем пины 12, 11, 10 на плате Arduino в качестве SPI интерфейса
 * для драйвера MAX7219
 * 
 * Подключаем устройства согласно таблице:
 * Arduino[Pin 12] <-> Display Module MAX7219 [DIN]
 * Arduino[Pin 11] <-> Display Module MAX7219 [CLK]
 * Arduino[Pin 10] <-> Display Module MAX7219 [LOAD/CS]   
 * 
 * Прототип создания объекта класса LedControl:
 * LedControl(int dataPin, int clkPin, int csPin, int numDevices);
 * где:
 *      int dataPin    - пин 12 на плате Arduino 
 *      int clkPin     - пин 11 на плате Arduino
 *      int csPin      - пин 10 на плате Arduino
 *      int numDevices - количество устройств на шине SPI      
 */
 
/* Для начала подключим библиотеку */
#include "LedControl.h"

/* Создаём объект класса LedControl для 5-ти устройств */
LedControl LC = LedControl(12, 11, 10, 1); 

void setup() 
{
  /*
   * Выводим устройство с адресом равным 0 из 
   * энергосберегающего режима
   */
  LC.shutdown(0, false);
    
  /* Устанавливаем интесивность свечения
   * для устройства с адресом равным 0
   * на средний уровень 
   */
    LC.setIntensity(0, 8);
    
  /* и очищаем дисплей с адресом равным 0*/
  LC.clearDisplay(0);
}

void loop() 
{
  LC.setLed(0, 2, 7, true);
  delay(500);

}

при таком коде горит так: https://youtu.be/vWxTEBwQul4 и далее не меняется

без дилея загораются 2 сразу

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

А чему вы удивляетесь, если каждые ~500мс даете ему команду на включение?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

sadman41 пишет:

А чему вы удивляетесь, если каждые ~500мс даете ему команду на включение?

я удивляюсь тому что я даю команду одному диоду а горят два.

или тому что неравномерно мигает.

в обоих видео видно что происходит не то чно в коде написано

pahuchiy
Offline
Зарегистрирован: 04.03.2018

если включение убрать из лупа в сетап - горит только 1 диод (тот что нужно), то есть всё правильно исполняется

вобщем, без лупа и мигает вроде нормально, так что тема перестаёт быть аппаратной, наверное?. Мне создать новую в программировании, или здесь продолжить обсуждение?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Что у Вас за ардуино? Что за матрица? Какова схема подключения?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

ЕвгенийП пишет:

Что у Вас за ардуино? Что за матрица? Какова схема подключения?

uno китайская

схема - самая простая - модульс матрицей и 7219 в бредборде проводами в ардуно. Питание модуля от ардуино 5вольт. Питание ардуино - от usb

матрица - написано на ней 1088AS

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, если самая простая то и разбирайтесь с нею сами.

Хотите говорить по делу - давайте схему и ссыклу на матрицу (или модуль матрицы, я не знаю, чо у Вас).

kalapanga
Offline
Зарегистрирован: 23.10.2016

pahuchiy пишет:

sadman41 пишет:

Может сигнальный проводок отходит?

нет, переделовал не раз - каждый раз проблема повторяется

Я всё-таки поддержу предположение о плохом контакте. Проводки, как у Вас на видео я забросил сразу же. Контакт в бреадборде был крайне ненадёжный. Тонкие они сильно что ли? Использую только провода с концевиками BL-M BL-F. Совсем другое дело.

pahuchiy
Offline
Зарегистрирован: 04.03.2018

kalapanga пишет:

pahuchiy пишет:

sadman41 пишет:

Может сигнальный проводок отходит?

нет, переделовал не раз - каждый раз проблема повторяется

Я всё-таки поддержу предположение о плохом контакте. Проводки, как у Вас на видео я забросил сразу же. Контакт в бреадборде был крайне ненадёжный. Тонкие они сильно что ли? Использую только провода с концевиками BL-M BL-F. Совсем другое дело.

не думаю. Если использовать в сетапе вместо лупа - всё нормально

kalapanga
Offline
Зарегистрирован: 23.10.2016

pahuchiy пишет:

не думаю. Если использовать в сетапе вместо лупа - всё нормально

Дело Ваше, но Вы отвергаете очевидные причины и ищете какие-то невероятные. В Вашем коде неправильно работать нечему. Я бы проверял качество пайки/отмывки модуля и качество проводных соединений. 

pahuchiy
Offline
Зарегистрирован: 04.03.2018

причина оказалась в питании. Заработало только после подключения 12 вольт к vin-порту.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pahuchiy пишет:

причина оказалась в питании. Заработало только после подключения 12 вольт к vin-порту.

А что туда раньше было подключено? К vin?

Я просил Вас дать схему ещё три дня назад. Вы сказали, что она простая потому Вы будете делать из неё секрет. Убедились теперь, что она и была виновата? Хотите помощи - давайте, что просят - давайте. лень рисовать - разбирайтесь сами. Что Вы собственно и сделали. Только зачем было сюда постить?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

решение сюда запостил чтоб может пригодилось кому. А сначала не запостил потому как ещё зелен, не знаю как принято. Буду исправляться.

pahuchiy
Offline
Зарегистрирован: 04.03.2018

ЕвгенийП пишет:

А что туда раньше было подключено? К vin?

ничего.