Аналоговый multiplexer/demultiplexer CD4051
Мультиплексор или демультиплексор позволит вам расширить количество входов и выходов на вашем Arduino.
Микросхема 4051 является 8-канальным аналоговым мультиплексор / демультиплексором, таким образом:
* Если вы используете 4051 как мультиплексор: Вы можете выбрать любой из 8 различных входов и прочитать его состояние в контролер.
* Если вы используете 4051 как демультиплексор вы можете выбрать любой из 8 различных выходов и записать туда нужное вам значение.
Кроме того, 4051 может работать с аналоговыми значения, в вашем Arduino, вы можете использовать аналоговые сигналы с напряжением 0-5В и подключить микросхему к аналоговым входам на Arduino.
Чтобы выбрать нужный вход микросхемы а также режимы работы чтение или запись, мы должны использовать три управляющих сигнала (S0, S1 и S2). Каждый из этих контактов должен быть подключён к одному из цифровых выходов Arduino. Каждый выход имеет номер (S0 = 1; S1 = 2; S2 = 4) и, если установить на одном из этих выходов высокий логический уровень то, число контактных представляет будет передано 4051.
Например:
* Если на входах микросхемы S0 и S1 установить лог"1" а на S2 лог"0" то выбран вход y3 микросхемы, это выглядит так(1 +2 +0 = 3).
* Если на входах микросхемы S0 и S2 установить лог"1" а на S1 лог"0" то выбран вход y5 микросхемы, это выглядит так(1 +0 +4 = 5).
Не возможно читать или записывать состояние больше, чем в одного вывода 4051 одновременно. Но вы можете читать и записывать состояние выводом микросхемы достаточно быстро. Не существует необходимости в задержке между выбором, чтением или записью состояния выводов 4051.
* Z ----- общий сигнал ввода или вывода (соединенный с входом/выходом Arduino)
* E ----- вход разрешения (активный лог "0") (подключен к земле (GND))
* Vee --- отрицательное напряжение питания (подключен к земле (GND))
* GND --- общий минус (0 V)
* S0-S2 - выбор входов (подключены к трем цифровым выводам Arduino)
* y0-Y7 - независимые входы/выходы
* Vcc --- положительное напряжение питания (5 В)
Левое изображение выше, например, как использовать 9 мультиплексор читать 64 аналоговых входов только с одним аналоговым входом Arduino.
Правое изображение выше пример того, как использовать два 4051 (один настроенный как демультиплексор и одного в качестве мультиплексора) в матрице 8x8 для проверки 64 кнопок или других цифровых входов только с одного цифрового входа на Arduino (со второй установки вы может просто две кнопки в то же время, в противном случае вы должны использовать первый (слева) установки).
Пример кода:
Code
// Пример для использования 4051 аналоговый мультиплексор / демультиплексор
// by david c.
int led = 13 ; // Настраиваем на 13 ноге светодиод
int r0 = 0 ; // значение выбрать вывод на 4051 (S0)
int r1 = 0 ; // значение выбрать вывод на 4051 (S1)
int r2 = 0 ; // значение выбрать вывод на 4051 (S2)
int row = 0 ; // storeing the bin code
int count = 0 ; // щётчик
int bin [ ] = { 000 , 1 , 10 , 11 , 100 , 101 , 110 , 111 } ; // Массив двоичных числ определяющих номер выбранного входа/выхода микросхемы 4051, с 1 по 8.
void setup ( ){ // ИНИЦИАЛИЗАЦИЯ
pinMode ( 2 , OUTPUT ) ; // s0 выход
pinMode ( 3 , OUTPUT ) ; // s1 выход
pinMode ( 4 , OUTPUT ) ; // s2 выход
digitalWrite ( led , HIGH ) ; //зажечь светодиод
beginSerial ( 9600 ) ; // скорость обмена по UART
}
void loop ( ) {
for ( count = 0 ; count <= 7 ; count ++ ){ // цикл перебора элементов массива с 1 по 8
row = bin [ count ] ;
r0 = row & 0x01 ;
r1 = ( row >> 1 ) & 0x01 ; //
r2 = ( row >> 2 ) & 0x01 ; //
digitalWrite ( 2 , r0 ) ;
digitalWrite ( 3 , r1 ) ;
digitalWrite ( 4 , r2 ) ;
Serial.println(bin[count]);
delay ( 1000 ) ;
}
}