//pines de salida donde van conectados los diodos 15, 2, 4, 5, 18, 19, 21, 22
//el diodo marillo consume 1.6V y 5mA, la resistencia es de 680 Ohms por ley de ohm
//declaración de los pines de los leds
const int Entradas[] = {34, 35, 32, 33};
const int Salidas[] = {15, 2, 4, 5, 18, 19, 21, 22};
const int NumSalidas = 8; // Número de LEDs
const int NumDS = 4;
void setup() {
Serial.begin(115200);
// Configurar los pines de los LEDs como salida
for (int i = 0; i < NumSalidas; i++) {
pinMode(Salidas[i], OUTPUT);
}
// Configurar los pines del DIP switch como entrada con resistencia pull-down
for (int i = 0; i < NumDS; i++) {
pinMode(Entradas[i], INPUT_PULLUP);
}
}
void loop() {
int ValorDS = LeerDS();
// Controlar los LEDs según el valor del DIP switch
SeleccionSecuencia(ValorDS);
delay(100); // Esperar un breve momento antes de la próxima lectura
Serial.println(ValorDS); // Mostrar el valor entero resultante
delay(500); // Esperar un poco antes de la siguiente lectura
}
int LeerDS(){
int Valor = 0;
// Leer cada pin del DIP switch y crear un número binario
for (int i = 0; i < NumDS; i++) {
int EstadoDS = digitalRead(Entradas[i]);
Valor |= (EstadoDS << i); // Desplazar y combinar los valores
}
return Valor;
}
void SeleccionSecuencia(int Valor) {
switch (Valor) {
case 0:
ApagarSalidas();
break;
case 1:
Secuencia1();
break;
case 2:
Secuencia2();
break;
case 3:
Secuencia3();
break;
case 4:
Secuencia4();
break;
case 5:
Secuencia5();
break;
case 6:
Secuencia6();
break;
case 7:
Secuencia7();
break;
case 8:
Secuencia8();
break;
default:
ApagarSalidas(); // Apagar los LEDs para cualquier otro valor
break;
}
}
void Secuencia0(){
ApagarSalidas();
}
void Secuencia1(){
for (int i = 0; i < NumSalidas; i++) {
digitalWrite(Salidas[i], HIGH); // Encender todos los LEDs
}
}
void Secuencia2(){
for (int i = 0; i < NumSalidas; i++) {
digitalWrite(Salidas[i], HIGH);
delay(100); // Esperar 100 ms
digitalWrite(Salidas[i], LOW);
}
}
void Secuencia3(){
for (int i = NumSalidas - 1; i >= 0; i--) {
digitalWrite(Salidas[i], HIGH);
delay(100); // Esperar 100 ms
digitalWrite(Salidas[i], LOW);
}
}
void Secuencia4(){
for (int i = 0; i < NumSalidas; i += 2) {
digitalWrite(Salidas[i], HIGH); // Encender LEDs pares
}
}
void Secuencia5(){
for (int i = 1; i < NumSalidas; i += 2) {
digitalWrite(Salidas[i], HIGH); // Encender LEDs impares
}
}
void Secuencia6(){
for (int i = 0; i < NumSalidas / 2; i++) {
digitalWrite(Salidas[i], HIGH); // Encender los primeros 4 LEDs
}
}
void Secuencia7(){
for (int i = NumSalidas / 2; i < NumSalidas; i++) {
digitalWrite(Salidas[i], HIGH); // Encender los últimos 4 LEDs
}
}
void Secuencia8(){
for (int i = 0; i < NumSalidas; i++) {
digitalWrite(Salidas[i], HIGH); // Encender todos los LEDs
delay(50);
digitalWrite(Salidas[i], LOW); // Apagar todos los LEDs
delay(50);
}
}
void ApagarSalidas() {
for (int i = 0; i < NumSalidas; i++) {
digitalWrite(Salidas[i], LOW);
}
}