Arduino:Примеры/Demo for driving more than one MAX72XX

Материал из Онлайн справочника
Версия от 12:33, 8 июля 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление двумя и более MAX72xx[1]

Этот скетч демонстрирует, как при помощи одного объекта LedControl обращаться к двум и более чипам MAX72xx. Таким образом, для этого скетча вам понадобится как минимум два MAX72xx, каскадно подключенных к Arduino.

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

Другая точка интереса – это блок setup(), где инициализируются все устройства, манипуляции с которыми выполняются в цикле.

Внимание! Номера контактов к коде нужно поменять на те, что соответствуют вашему проекту.

Код

 
// подключаем библиотеку (это нужно делать всегда):
#include "LedControl.h"

/*
 Теперь настраиваем объект LedControl.

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

 12-ый контакт подключен к DataIn.
 11-ый контакт подключен к CLK.
 10-ый контакт подключен к LOAD.

 Задайте, пожалуйста, количество используемых MAX72xx. Впрочем,
 максимум «8», выставленный по умолчанию, тоже будет работать.
*/
LedControl lc=LedControl(12,11,10,8);

/* Делаем небольшую задержку между обновлениями дисплея. */
unsigned long delaytime=500;

/*
 На этот раз у нас больше одного устройства.
 Однако всех их нужно инициализировать в индивидуальном порядке.
*/
void setup() {
  // мы уже задали количество чипов, когда создали LedControl: 
  int devices=lc.getDeviceCount();
  // нам нужно инициализировать все чипы в цикле:
  for(int address=0;address<devices;address++) {
    /* По умолчанию при запуске у MAX72XX включается энергосберегающий 
   режим. */
    lc.shutdown(address,false);
    /* Задаем среднюю яркость. */
    lc.setIntensity(address,8);
    /* Очищаем дисплей. */
    lc.clearDisplay(address);
  }
}

void loop() { 
  // считываем количество каскадно подключенных устройств:
  int devices=lc.getDeviceCount();

  // инициализируем все устройства в цикле:
  for(int row=0;row<8;row++) {
    for(int col=0;col<8;col++) {
      for(int address=0;address<devices;address++) {
        delay(delaytime);
        lc.setLed(address,row,col,true);
        delay(delaytime);
        lc.setLed(address,row,col,false);
      }
    }
  }
}

См.также

Внешние ссылки