// MUX1 select pins
const int MUX1_S0 = 27;
const int MUX1_S1 = 26;
const int MUX1_S2 = 25;
const int MUX1_S3 = 33;
const int MUX1_SIG = 32; // COM pin
// MUX2 select pins
const int MUX2_S0 = 19;
const int MUX2_S1 = 16; // Corrected from 19 to 16
const int MUX2_S2 = 18;
const int MUX2_S3 = 17;
const int MUX2_SIG = 5; // COM pin
void setup() {
Serial.begin(115200);
// Set select pins as output
pinMode(MUX1_S0, OUTPUT);
pinMode(MUX1_S1, OUTPUT);
pinMode(MUX1_S2, OUTPUT);
pinMode(MUX1_S3, OUTPUT);
pinMode(MUX2_S0, OUTPUT);
pinMode(MUX2_S1, OUTPUT);
pinMode(MUX2_S2, OUTPUT);
pinMode(MUX2_S3, OUTPUT);
}
int readMux(int s0, int s1, int s2, int s3, int sigPin, int channel) {
digitalWrite(s0, bitRead(channel, 0));
digitalWrite(s1, bitRead(channel, 1));
digitalWrite(s2, bitRead(channel, 2));
digitalWrite(s3, bitRead(channel, 3));
delayMicroseconds(5); // Small delay for stable selection
return analogRead(sigPin);
}
void loop() {
Serial.println("MUX1 Channels:");
for (int i = 0; i < 16; i++) {
int val = readMux(MUX1_S0, MUX1_S1, MUX1_S2, MUX1_S3, MUX1_SIG, i);
Serial.print("CH");
Serial.print(i);
Serial.print(": ");
Serial.print(val);
Serial.print(" ");
}
Serial.println();
Serial.println("MUX2 Channels:");
for (int i = 0; i < 16; i++) {
int val = readMux(MUX2_S0, MUX2_S1, MUX2_S2, MUX2_S3, MUX2_SIG, i);
Serial.print("CH");
Serial.print(i);
Serial.print(": ");
Serial.print(val);
Serial.print(" ");
}
Serial.println();
delay(1000); // Read every second
}
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067