Вопрос

Я только что купил Радужный Дуино для управления загрузкой отдельных светодиодов (НЕ RGB-матрицы).Вся документация на данный момент направлена на управление RGB-массивами, которые не то, что мне нужно.

Если вы не знакомы с Rainbowduino, то это Arduino клон с 24 каналами постоянного тока по 120 мА, 8 каналами драйвера super source по 500 мА каждый и широкой адаптацией выходного напряжения от 5 В до 12 В постоянного тока.Идеально подходит для управления светодиодами.Веб-страница продукта находится здесь: http://www.seeedstudio.com/blog/?page_id=187

Я подключил 16 светодиодов и хочу иметь возможность включать и выключать каждый из них по отдельности с помощью digitalWrite().Я загрузил на доску некоторый демонстрационный код, который на самом деле не работает.Я выяснил, что 8 каналов источника драйвера легко управляются с помощью digitalWrite() на контактах 3-11.Однако управлять остальными 24 каналами приемника сложнее.По-видимому, они управляются 3 регистрами сдвига (по одному на каждый), доступ к которым я могу получить только с помощью shiftOut.Я понятия не имею, как это работает.Кто-нибудь может помочь мне указать правильное направление?

Половина светодиодов подключена к синему цвету 1-8, а другая половина - к зеленому цвету 1-8.Положительные опоры подключены к VCC1-2, которые установлены на ВЫСОКИЙ уровень.Я уверен, что схема подключена правильно, у меня проблемы с программированием.

Я просмотрел пример кода, который поставляется вместе с Rainbowduino, но я не могу понять его смысла.Как я могу устранить эту проблему?

Это было полезно?

Решение

Использование сдвигового регистра для мультиплексирования (или демультиплексирования, в зависимости от вашей точки зрения) входов/выходов очень распространено в цифровой электронике.

По сути, вы меняете сохраняющие контакты на вашем контроллере на необходимость включения в конструкцию другой микросхемы (сдвигового регистра).

В этом случае регистр работает как преобразователь последовательного типа в параллельный;он имеет линию последовательного ввода, на которую поступают биты от вашего процессора.Он также имеет 8 параллельных выходов, подключенных к 8-разрядной памяти, которая последовательно загружается из центрального процессора.Используя это, вы можете "сместить" 8 бит данных на одном выводе (плюс, как правило, один вывод для синхронизации), которые затем сохраняются в регистре сдвига и могут параллельно управлять 8 светодиодами.

В этом конкретном случае вам нужно выяснить, к какому порту AVR подключены регистры сдвига (здесь драйверы приемника постоянного тока MBI5168 содержат регистры сдвига).Они должны быть подключены к паре выходов, один для передачи данных и один для синхронизации.Как только вы узнаете эти штифты, вы сможете управлять ими самостоятельно с помощью Смещение команда.

Копаем немного дальше, этот примерный "эскиз" содержит следующие определения в файле под названием "Rainbow.h":

//MBI5168
#define SH_DIR_OE    DDRC
#define SH_DIR_SDI   DDRC
#define SH_DIR_CLK   DDRC
#define SH_DIR_LE    DDRC

#define SH_BIT_OE    0x08
#define SH_BIT_SDI   0x01
#define SH_BIT_CLK   0x02
#define SH_BIT_LE    0x04

#define SH_PORT_OE   PORTC
#define SH_PORT_SDI  PORTC
#define SH_PORT_CLK  PORTC
#define SH_PORT_LE   PORTC

Конечно, это всего лишь цифровые "слухи" (у меня нет устройства, я никогда не программировал ни на каком * duino), но я бы сказал, что это система доставки пуль, извергающих частицы, которую вы ищете.

Я интерпретирую это примерно так:

  • PORTC - это тот, который подключен к регистрам сдвига, все управляющие контакты находятся в PORTC.
  • Выделено четыре контакта (вместо оптимистичных двух, о которых я упоминал выше).
  • Тактовый сигнал - это pin-код PORTC: 2, а данные - PORTC: 1.

Другие советы

Управление каждым отдельным светодиодом требует значительных затрат времени, поэтому лучше мыслить рядами, тогда как каждый цвет светодиода представлен в виде разряда, так что это 8 бит x 3 цвета (красный, зеленый, синий).Я написал небольшую библиотеку Rainbowduino, которая позволяет вам легко устанавливать каждую строку или фрейм:

Прочтите мой пост в блоге об этом

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top