Arduino:Примеры/Demo for driving more than one MAX72XX
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Управление двумя и более 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);
}
}
}
}