Почему 0 устройств, а не 1?

library led-matrix

Я нашел в Wokwi скетч, где используется светодиодная матрица MAX7219. Предмет скетча должен отображать 0 с помощью <LedControl.h>. Я не понимаю, почему в четвертом параметре при инициализации объекта-библиотеки необходимо отправлять 0, а не 1.

LedControl(int dataPin, int clkPin, int csPin, int numDevices=1);

Кажется, там должно быть 1, но скетч таким образом не работает.

#include <LedControl.h>

int DIN = 12;
int CS =  11;
int CLK = 10;
LedControl lc=LedControl(DIN,CLK,CS,0);

void setup(){
  lc.shutdown(0,false);       
  lc.setIntensity(0,15);      
}

void loop(){ 
  byte zero[8]= {0x00,0x1c,0x22,0x22,0x22,0x22,0x22,0x1c};
  printByte(zero);
}

void printByte(byte character []) {
  int i = 0;
  for (i=0;i<8;i++) {
    lc.setRow(0,i,character[i]);
  }
}

, 👍1

Обсуждение

Да, согласен, 0 не верно. [На этой странице](https://wayoda.github.io/LedControl/pages/software) написано: «Четвертый аргумент LedControl(dataPin, clockPin,csPin,numDevices) — это количество каскадированных устройств MAX72XX... здесь разрешены только значения от 1 до 8.». Пожалуйста, добавьте ссылку на источник вашего кода. Возможно, там есть объяснение, почему был выбран 0., @st2000

https://wokwi.com/projects/373210641309244417 Вот этот проект. Работает с 1., @Artur Krush


1 ответ


1

На этой странице написано: "Четвертый аргумент LedControl(dataPin, clockPin,csPin,numDevices ) — это количество каскадно подключенных устройств MAX72XX... здесь разрешены только значения от 1 до 8».

Изучая исходный код LedControl в GITHUB, мы видим в файл LedControl.cpp в коде функции LedControl(), который проверяет наличие неожиданных значений для количества используемых устройств LED Matrix MAX7219:< /п>

LedControl::LedControl(int dataPin, int clkPin, int csPin, int numDevices) {
...
  if(numDevices<=0 || numDevices>8 )
    numDevices=8;

Мы можем увидеть, если число меньше или равно 0 или больше 8, код по умолчанию равен 8 устройствам. Таким образом, при передаче 0 код обнаружит неожиданное значение и по умолчанию создаст 8 устройств.

,

Спасибо. Теперь все ясно. К сожалению, я не понимаю, почему проект не работает с 1 устройством., @Artur Krush

Убедитесь, что у вас установлена последняя версия кода LedControl. Проверьте наличие обновлений в вашей Arduino IDE., @st2000

Проблема была, когда я поставил 1 устройство на инициализацию, а потом на выключение, setIntensity, setRow тоже использовал 1. Но там должен быть 0, потому что это адрес 1 устройства. Большое спасибо за помощь, @Artur Krush