Описание
Модуль Аналоговый 16-канальный мультиплексор CD74HC4067
Модуль аналогового мультиплексора на 16 каналов на микросхеме CD74HC4067. Позволяет значительно увеличить количество входов/выходов контроллера. Наличие контакта выбора чипа EN позволяет каскадировать модули для увеличения вводов/выводов.
Характеристики
- Напряжение питания: 2-6 В
- Внутреннее сопротивление ключей: 70 Ом при напряжении питания 4.5 В.
- Скорость срабатывания: 6 нс при напряжении питания 4.5 В;
- Диапазон рабочих температур: -55..125 °C
Назначение выводов
Контакт | Описание |
GND | Земля |
VCC | Питание |
EN | Выбор кристалла |
S0..S3 | Выбор канала |
SIG | Выход выбранного канала |
C0..C15 | Входы |
Мультиплексор это что-то вроде галетного переключателя, он имеет один сигнальный вход или выход, который подключается к одному из 16 входов или выходов в зависимости от состояния управляющих входов.
Из нее видно, если на управляющих входах Sx логический 0, то сигнальный вход подключен 0 входу мультиплексора, а если 8, то соответственно на 8 вход.
вход Е, это включение микросхемы, если на нем логическая единица, то нечего не к чему не подключено.
#define EN 3 #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define SIG A0 void setup(){ Serial.begin(9600); pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); digitalWrite(S0, LOW); digitalWrite(S1, LOW); digitalWrite(S2, LOW); digitalWrite(S3, LOW); pinMode(EN, OUTPUT); digitalWrite(EN, LOW); } void loop(){ //Loop through and read all 16 values //Reports back Value at channel 6 is: 346 for(int i = 0; i < 16; i ++){ // Serial.print("Value at channel "); // Serial.print(i); // Serial.print(": "); Serial.print(readMux(i)); Serial.print(". "); } Serial.println(); delay(100); } int readMux(int channel){ int controlPin[] = {S0, S1, S2, S3}; int muxChannel[16][4]={ {0,0,0,0}, //channel 0 {1,0,0,0}, //channel 1 {0,1,0,0}, //channel 2 {1,1,0,0}, //channel 3 {0,0,1,0}, //channel 4 {1,0,1,0}, //channel 5 {0,1,1,0}, //channel 6 {1,1,1,0}, //channel 7 {0,0,0,1}, //channel 8 {1,0,0,1}, //channel 9 {0,1,0,1}, //channel 10 {1,1,0,1}, //channel 11 {0,0,1,1}, //channel 12 {1,0,1,1}, //channel 13 {0,1,1,1}, //channel 14 {1,1,1,1} //channel 15 }; //loop through the 4 sig for(int i = 0; i < 4; i ++){ digitalWrite(controlPin[i], muxChannel[channel][i]); } //read the value at the SIG pin int val = analogRead(SIG); //return the value return val; }
Отзывы
Отзывов пока нет.