// Pin control multiplexer
int s0 = 8;
int s1 = 9;
int s2 = 10;
int s3 = 11;
// Pin enable multiplexer (di-grounded)
int en = -1; // Tidak digunakan karena EN dihubungkan ke GND
// Pin input dari multiplexer
int SIG_pin = 7; // Pin digital 7
// Array untuk menyimpan status dari tiap sensor
int sensorValues[10];
void setup() {
// Set control pins sebagai output
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
// Set pin input multiplexer sebagai input
pinMode(SIG_pin, INPUT);
// Inisialisasi komunikasi serial
Serial.begin(9600);
}
void setChannel(int channel) {
// Set address multiplexer
digitalWrite(s0, (channel & 0x01) ? HIGH : LOW);
digitalWrite(s1, (channel & 0x02) ? HIGH : LOW);
digitalWrite(s2, (channel & 0x04) ? HIGH : LOW);
digitalWrite(s3, (channel & 0x08) ? HIGH : LOW);
}
void loop() {
// Loop untuk membaca semua 10 channel
for (int i = 0; i < 10; i++) {
// Set multiplexer ke channel i
setChannel(i);
// Tunggu sebentar untuk memastikan multiplexer telah berubah
delay(1);
// Baca status sensor dari SIG_pin
sensorValues[i] = digitalRead(SIG_pin);
}
// Cetak hasil pembacaan ke Serial Monitor
Serial.print("Sensor Values: ");
for (int i = 0; i < 10; i++) {
Serial.print(sensorValues[i]);
if (i < 9) Serial.print(", ");
}
Serial.println();
// Tunggu sebentar sebelum melakukan pembacaan berikutnya
delay(500);
}