// const int MUX_S0 = 0; // Multiplexer control pin S0
// const int MUX_S1 = 1; // Multiplexer control pin S1
// const int MUX_S2 = 2; // Multiplexer control pin S2
// const int MUX_S3 = 3; // Multiplexer control pin S3
// const int NUM_MUX_CHANNELS = 16; // Number of channels per multiplexer
// const int NUM_MULTIPLEXERS = 2; // Number of multiplexers
// const int LED_PIN_1 = 4; // First LED pin
// const int LED_PIN_2 = 5; // Second LED pin
// void setup() {
// pinMode(MUX_S0, OUTPUT);
// pinMode(MUX_S1, OUTPUT);
// pinMode(MUX_S2, OUTPUT);
// pinMode(MUX_S3, OUTPUT);
// pinMode(LED_PIN_1, OUTPUT);
// pinMode(LED_PIN_2, OUTPUT);
// Serial.begin(9600);
// }
// void loop() {
// for (int mux = 0; mux < NUM_MULTIPLEXERS; mux++) {
// for (int channel = 0; channel < NUM_MUX_CHANNELS; channel++) {
// // Set the multiplexer control pins
// setMuxControlPins(mux, channel);
// // Turn on the LEDs
// digitalWrite(LED_PIN_1, HIGH);
// digitalWrite(LED_PIN_2, LOW);
// // Wait for a second
// delay(1000);
// // Turn off the LEDs
// digitalWrite(LED_PIN_1, HIGH);
// digitalWrite(LED_PIN_2, LOW);
// // Delay before the next channel
// delay(100); // Delay for better readability, adjust as needed
// }
// }
// }
// void setMuxControlPins(int mux, int channel) {
// digitalWrite(MUX_S0, bitRead(channel, 0));
// digitalWrite(MUX_S1, bitRead(channel, 1));
// digitalWrite(MUX_S2, bitRead(channel, 2));
// digitalWrite(MUX_S3, bitRead(channel, 3));
// }
//Mux control pins
const int S0 = 0; // Pin S0 pada modul multiplexer
const int S1 = 1; // Pin S1 pada modul multiplexer
const int S2 = 2; // Pin S2 pada modul multiplexer
const int S3 = 3; // Pin S3 pada modul multiplexer
const int SIG_PIN = 4; // Pin output dari multiplexer ke ESP12
const int NUM_CHANNELS = 16; // Jumlah channel pada multiplexer
const int LED_PINS[] = {D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15}; // Pin yang terhubung ke lampu
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
for (int i = 0; i < NUM_CHANNELS; i++) {
pinMode(LED_PINS[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
// Pola pertama
pattern1();
// Pola kedua
pattern2();
// Pola ketiga
pattern3();
}
void pattern1() {
for (int channel = 0; channel < NUM_CHANNELS; channel++) {
selectChannel(channel);
if (channel == 0 || channel == 1 || channel == 2 || channel == 6 || channel == 9 || channel == 11 || channel == 13 || channel == 14) {
digitalWrite(LED_PINS[channel], HIGH); // Nyalakan lampu
} else {
digitalWrite(LED_PINS[channel], LOW); // Matikan lampu
}
delay(1000); // Tunggu 1 detik sebelum memilih channel berikutnya
}
}
void pattern2() {
for (int channel = 0; channel < NUM_CHANNELS; channel++) {
selectChannel(channel);
if (channel == 1 || channel == 3 || channel == 4 || channel == 6 || channel == 7 || channel == 9 || channel == 14) {
digitalWrite(LED_PINS[channel], HIGH); // Nyalakan lampu
} else {
digitalWrite(LED_PINS[channel], LOW); // Matikan lampu
}
delay(1000); // Tunggu 1 detik sebelum memilih channel berikutnya
}
}
void pattern3() {
for (int channel = 0; channel < NUM_CHANNELS; channel++) {
selectChannel(channel);
if (channel == 0 || channel == 1 || channel == 4 || channel == 5 || channel == 12 || channel == 13) {
digitalWrite(LED_PINS[channel], HIGH); // Nyalakan lampu
} else {
digitalWrite(LED_PINS[channel], LOW); // Matikan lampu
}
delay(1000); // Tunggu 1 detik sebelum memilih channel berikutnya
}
}
void selectChannel(int channel) {
// Konfigurasi pin S0-S3 untuk memilih channel tertentu
digitalWrite(S0, bitRead(channel, 0));
digitalWrite(S1, bitRead(channel, 1));
digitalWrite(S2, bitRead(channel, 2));
digitalWrite(S3, bitRead(channel, 3));
}