// 74HC4067 (16 to 1)
// В данном примере реализована возможность выбора необходимого порта мультиплексора и считывание с него сигнала через аналоговый порт A0 платы Arduino UNO
// контакты модуля 74HC4067 S0…S3 подключены к портам Arduino UNO D7…D4
// контакт модуля 74HC4067 SIG подключен к аналоговому порту Arduino UNO A0
// конфигурации портов D7…D4 для выбора активного порта мультиплексора
byte controlPins[] = {B00000000,
B10000000,
B01000000,
B11000000,
B00100000,
B10100000,
B01100000,
B11100000,
B00010000,
B10010000,
B01010000,
B11010000,
B00110000,
B10110000,
B01110000,
B11110000 };
// для хранения данных, полученных с мультиплексора
byte muxValues[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
void setup()
{
Serial.begin(9600);
DDRD = B11111111; // конфигурирование портов PORTD (цифровые порты 7~0)
}
void setPin(int outputPin)
// функция для выбора активного порта мультиплексора 74HC4067
{
PORTD = controlPins[outputPin];
}
void displayData()
// вывод данных, полученных с портов мультиплексора в монитор серийного порта
{
Serial.println();
Serial.println("Values from multiplexer:");
Serial.println("========================");
for (int i = 0; i < 16; i++)
{
Serial.print("input I");
Serial.print(i);
Serial.print(" = ");
Serial.println(muxValues[i]);
}
Serial.println("========================");
}
void loop()
{
for (int i = 0; i < 16; i++)
{
setPin(i); // выбираем активный порт 74HC4067
muxValues[i]=analogRead(0); // читаем значения, полученные с выбранного порта мультиплексора
}
// выводим полученные данные в монитор порта
displayData();
delay(2000);
}