Control de 9 LEDs con funciones y secuencias en bucle continuo
Código oficial de la Práctica 2 listo para subir a tu Arduino Mega 2560
/*
* Practica 2: Pulsadores, LEDs y secuencias (usando funciones)
* Placa: Arduino Mega 2560
*/
// -------------------------------------------------------------
// DEFINICION DE PINES
// -------------------------------------------------------------
// Pines de los 9 LEDs (de izquierda a derecha en la protoboard)
const int leds[] = {13, 12, 11, 10, 9, 8, 7, 6, 5};
const int numLeds = sizeof(leds) / sizeof(leds[0]);
// Pines de los 4 pulsadores (segun el cableado de la imagen)
const int PIN_BTN1 = 28; // Pulsador 1: Enciende todos los LEDs
const int PIN_BTN2 = 26; // Pulsador 2: Apaga todos los LEDs
const int PIN_BTN3 = 24; // Pulsador 3: Secuencia 3 (acumulativa / uno a uno)
const int PIN_BTN4 = 22; // Pulsador 4: Secuencia 4 (barrido / apaga el anterior)
// Velocidad del paso entre LEDs en milisegundos
const int TIEMPO_ESPERA = 200;
// -------------------------------------------------------------
// PROTOTIPOS DE FUNCIONES
// -------------------------------------------------------------
void encenderTodos();
void apagarTodos();
void secuencia3();
void secuencia4();
// -------------------------------------------------------------
// CONFIGURACION (setup)
// -------------------------------------------------------------
void setup() {
// Configurar los pines de los LEDs como SALIDA
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT);
}
// Configurar los pines de los pulsadores como ENTRADA
pinMode(PIN_BTN1, INPUT);
pinMode(PIN_BTN2, INPUT);
pinMode(PIN_BTN3, INPUT);
pinMode(PIN_BTN4, INPUT);
// Al arrancar, nos aseguramos de que todos esten apagados
apagarTodos();
}
// -------------------------------------------------------------
// BUCLE PRINCIPAL (loop)
// -------------------------------------------------------------
void loop() {
// Lectura con resistencias Pull-Down (pulsado = HIGH)
if (digitalRead(PIN_BTN1) == HIGH) {
encenderTodos();
}
else if (digitalRead(PIN_BTN2) == HIGH) {
apagarTodos();
}
else if (digitalRead(PIN_BTN3) == HIGH) {
secuencia3();
}
else if (digitalRead(PIN_BTN4) == HIGH) {
secuencia4();
}
}
// =============================================================
// FUNCIONES OBLIGATORIAS DE LA PRACTICA
// =============================================================
// Pulsador 1: Enciende todos los LEDs al mismo tiempo
void encenderTodos() {
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
}
}
// Pulsador 2: Apaga todos los LEDs al mismo tiempo
void apagarTodos() {
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], LOW);
}
}
// Pulsador 3: Va encendiendo los LEDs de uno en uno manteniendolos encendidos (acumulativo)
void secuencia3() {
apagarTodos();
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
delay(TIEMPO_ESPERA);
}
}
// Pulsador 4: Enciende los LEDs en orden pero apagando el anterior (efecto barrido)
void secuencia4() {
apagarTodos();
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH); // Enciende el LED actual
delay(TIEMPO_ESPERA);
digitalWrite(leds[i], LOW); // Apaga el LED actual antes de pasar al siguiente
}
}