Проблемы, управляющие Райнбовдуино

Это - возможно половина противного способа сделать его, я использовал его однажды, было весьма эффективно.

В зависимости от Ваших целей это могло бы быть полезным.

  1. Создают временная таблица с одним столбцом.
  2. INSERT каждое справочное значение в тот столбец.
  3. Вместо того, чтобы использовать IN, можно тогда просто использовать стандарт JOIN правила. (Гибкость ++)

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

я никогда не находил время для профилирования точно, как быстрый это было, но в моей ситуации это было необходимо.

5
задан Peter Mortensen 18 November 2010 в 23:18
поделиться

2 ответа

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

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

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

В данном конкретном случае , вам нужно выяснить, к какому порту AVR подключены регистры сдвига (здесь драйверы приемника постоянного тока MBI5168 содержат регистры сдвига). Их следует привязать к паре выходов, один для данных и один для часов. Когда вы узнаете эти контакты, вы сможете управлять ими самостоятельно, используя команду ShiftOut .

Если копнуть немного дальше, этот образец «эскиза» содержит следующие определения в файл под названием "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.
  • Четыре контакта выделены (а не оптимистичные два, о которых я говорил выше).
  • Часы - это контакт PORTC: 2, а данные - PORTC: 1.
3
ответ дан 14 December 2019 в 19:22
поделиться

Controlling each single LED is quite time expensive, it's better to think in rows, whereas each LED color is presented as on bit, so it's 8 bits x 3 colors (red, green, blue). I wrote a small Rainbowduino library which allows you to set each row or frame easily:

Read my blog post on that

2
ответ дан 14 December 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: