Это - возможно половина противного способа сделать его, я использовал его однажды, было весьма эффективно.
В зависимости от Ваших целей это могло бы быть полезным.
INSERT
каждое справочное значение в тот столбец. IN
, можно тогда просто использовать стандарт JOIN
правила. (Гибкость ++) Это имеет немного включенной гибкости, что можно сделать, но это больше подходит для ситуаций, где у Вас есть большая таблица для запросов с хорошей индексацией, и Вы хотите использовать параметрический список несколько раз. Сохраняет необходимость выполнить его дважды и иметь всю санитарию, сделанную вручную.
я никогда не находил время для профилирования точно, как быстрый это было, но в моей ситуации это было необходимо.
Использование регистра сдвига для мультиплексирования (или демультиплексирования, в зависимости от вашей точки зрения) входов / выходов очень распространена в цифровой электронике.
По сути, вы обмениваете сохраняющие контакты на вашем контроллере на необходимость включения другой микросхемы (сдвигового регистра) в конструкцию.
В этом случае регистр работает как последовательное соединение. параллельный преобразователь; он имеет линию последовательного ввода, на которую поступают биты от вашего процессора. Он также имеет 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), но я бы сказал, что это система доставки пуль, выбрасывающая частицы, которую вы ищете.
Я интерпретирую это так:
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: