// Define control pins for MUX1 (TX+)
const int mux1_S0 = 4;
const int mux1_S1 = 5;
const int mux1_S2 = 12;
const int mux1_S3 = 13;
// Define control pins for MUX2 (TX-)
const int mux2_S0 = 14;
const int mux2_S1 = 15;
const int mux2_S2 = 16;
const int mux2_S3 = 17;
// Define control pins for MUX3 (RX+)
const int mux3_S0 = 18;
const int mux3_S1 = 19;
const int mux3_S2 = 21;
const int mux3_S3 = 22;
// Define control pins for MUX4 (RX-)
const int mux4_S0 = 23;
const int mux4_S1 = 25;
const int mux4_S2 = 26;
const int mux4_S3 = 27;
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);
pinMode(mux3_S0, OUTPUT);
pinMode(mux3_S1, OUTPUT);
pinMode(mux3_S2, OUTPUT);
pinMode(mux3_S3, OUTPUT);
pinMode(mux4_S0, OUTPUT);
pinMode(mux4_S1, OUTPUT);
pinMode(mux4_S2, OUTPUT);
pinMode(mux4_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++) {
int txPlus = i;
int txMinus = (i + 1) % 16;
int rxPlus = (i + 8) % 16; // Electroda berseberangan
int rxMinus = (i + 9) % 16; // Electroda berseberangan
setMuxChannel(txPlus, txMinus, rxPlus, rxMinus); // Set TX+ and corresponding TX- channel
delay(1000); // Delay for 1 second between channel changes
}
}
// Function to set MUX channel
void setMuxChannel(int channelTXPlus, int channelTXMinus, int channelRXPlus, int channelRXMinus) {
int analogValue = analogRead(analogPin);
// Set MUX1 (TX+) channel
digitalWrite(mux1_S0, channelTXPlus & 0x01);
digitalWrite(mux1_S1, (channelTXPlus >> 1) & 0x01);
digitalWrite(mux1_S2, (channelTXPlus >> 2) & 0x01);
digitalWrite(mux1_S3, (channelTXPlus >> 3) & 0x01);
// Set MUX2 (TX-) channel
digitalWrite(mux2_S0, channelTXMinus & 0x01);
digitalWrite(mux2_S1, (channelTXMinus >> 1) & 0x01);
digitalWrite(mux2_S2, (channelTXMinus >> 2) & 0x01);
digitalWrite(mux2_S3, (channelTXMinus >> 3) & 0x01);
// Set MUX3 (RX+) channel
digitalWrite(mux3_S0, channelRXPlus & 0x01);
digitalWrite(mux3_S1, (channelRXPlus >> 1) & 0x01);
digitalWrite(mux3_S2, (channelRXPlus >> 2) & 0x01);
digitalWrite(mux3_S3, (channelRXPlus >> 3) & 0x01);
// Set MUX4 (RX-) channel
digitalWrite(mux4_S0, channelRXMinus & 0x01);
digitalWrite(mux4_S1, (channelRXMinus >> 1) & 0x01);
digitalWrite(mux4_S2, (channelRXMinus >> 2) & 0x01);
digitalWrite(mux4_S3, (channelRXMinus >> 3) & 0x01);
// Print the selected channels for debugging
Serial.print("Selected TX+ channel: ");
Serial.print(channelTXPlus);
Serial.print(", TX- channel: ");
Serial.println(channelTXMinus);
Serial.print("Selected RX+ channel: ");
Serial.print(channelRXPlus);
Serial.print(", RX- channel: ");
Serial.println(channelRXMinus);
Serial.print("Nilai Analog: ");
Serial.println(analogValue);
}Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067