// Definindo os pinos de controle do multiplexador
#define s0 2
#define s1 3
#define s2 4
#define s3 5
#define SIG 9 // Pino comum (SIG ou COM) conectado ao multiplexador
void setup() {
// Configurando os pinos de controle como saída
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
// Configurando o pino comum (SIG ou COM) como saída
pinMode(SIG, OUTPUT);
// Inicializa o pino SIG como LOW (desligado)
digitalWrite(SIG, LOW);
}
void selecionarCanal(int canal) {
// Define o canal do multiplexador com base no valor de 'canal' (0 a 15 para os LEDs)
digitalWrite(s0, canal & 0x01); // LSB (bit menos significativo)
digitalWrite(s1, (canal >> 1) & 0x01);
digitalWrite(s2, (canal >> 2) & 0x01);
digitalWrite(s3, (canal >> 3) & 0x01);
}
void acenderLed(int led) {
selecionarCanal(led); // Seleciona o canal correspondente ao LED
digitalWrite(SIG, HIGH); // Liga o LED
delay(500); // Mantém o LED aceso por 500 ms
digitalWrite(SIG, LOW); // Desliga o LED
}
void loop() {
// Acende os LEDs do Bar Graph um de cada vez, na ordem inversa
for (int i = 9; i >= 0; i--) { // De C9 a C0
acenderLed(i); // Acende o LED correspondente
delay(100); // Pequeno delay entre os LEDs
}
}