// Define control pins for MUX1 (TX+)
const int mux1_S0 = 2;
const int mux1_S1 = 3;
const int mux1_S2 = 4;
const int mux1_S3 = 5;
// Define control pins for MUX2 (TX-)
const int mux2_S0 = 6;
const int mux2_S1 = 7;
const int mux2_S2 = 8;
const int mux2_S3 = 9;
const int analogPin = A0;
void setup() {
// Set all control pins as outputs
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);
// Initialize serial communication for debugging
Serial.begin(9600);
}
void loop() {
// Example: Cycle through all channels on both MUXes
for (int i = 0; i < 16; i++) {
setMuxChannel(i, (i + 8) % 16); // Set TX+ and corresponding TX- channel
delay(10); // Delay for 1 second between channel changes
}
}
// Function to set MUX channel
void setMuxChannel(int channelPlus, int channelMinus) {
int analogValue = analogRead(analogPin);
// Set MUX1 (TX+) channel
digitalWrite(mux1_S0, channelPlus & 0x01);
digitalWrite(mux1_S1, (channelPlus >> 1) & 0x01);
digitalWrite(mux1_S2, (channelPlus >> 2) & 0x01);
digitalWrite(mux1_S3, (channelPlus >> 3) & 0x01);
// Set MUX2 (TX-) channel
digitalWrite(mux2_S0, channelMinus & 0x01);
digitalWrite(mux2_S1, (channelMinus >> 1) & 0x01);
digitalWrite(mux2_S2, (channelMinus >> 2) & 0x01);
digitalWrite(mux2_S3, (channelMinus >> 3) & 0x01);
// Print the selected channels for debugging
Serial.print("Selected RX+ channel: ");
Serial.print(channelPlus);
Serial.print(", RX- channel: ");
Serial.println(channelMinus);
Serial.print("Nilai Analog: ");
Serial.println(analogValue);
}
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067