#define MUX_CH_COUNT 16
#define PIN_D_MUX_S0 27
#define PIN_D_MUX_S1 26
#define PIN_D_MUX_S2 25
#define PIN_D_MUX_S3 33
#define PIN_A_MUX_SIG 35
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(PIN_D_MUX_S0, OUTPUT);
pinMode(PIN_D_MUX_S1, OUTPUT);
pinMode(PIN_D_MUX_S2, OUTPUT);
digitalWrite(PIN_D_MUX_S0, LOW);
digitalWrite(PIN_D_MUX_S1, LOW);
digitalWrite(PIN_D_MUX_S2, LOW);
}
int readMux(int channel) {
int controlPin[] = {PIN_D_MUX_S0, PIN_D_MUX_S1, PIN_D_MUX_S2};
int muxChannel[8][3] = {
{0, 0, 0}, // channel 0
{1, 0, 0}, // channel 1
{0, 1, 0}, // channel 2
{1, 1, 0}, // channel 3
{0, 0, 1}, // channel 4
{1, 0, 1}, // channel 5
{0, 1, 1}, // channel 6
{1, 1, 1}, // channel 7
};
for (int i = 0; i < 3; i++) {
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
int value = analogRead(PIN_A_MUX_SIG);
return value;
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
// for (int i = 0; i < 8; i++) {
// Serial.print(i);
// Serial.print(": ");
// Serial.print(readMux(i));
// Serial.print(" | ");
// }
for (int i = 0; i < 4; i++) {
Serial.print("Channel ");
Serial.print(i);
Serial.print(": ");
Serial.print(readMux(i));
Serial.print(" | ");
}
Serial.println();
delay(1000);
}
Loading
cd74hc4067
cd74hc4067