Simulador Práctica 2: Arduino Mega 2560

Control de 9 LEDs con funciones y secuencias en bucle continuo

← Volver a EMP
Modo activo: Todos apagados
GND (- Cátodos comunes con resistencias a GND) +5V
Pin 13 Rojo
Pin 12 Amarillo
Pin 11 Verde
Pin 10 Rojo
Pin 9 Amarillo
Pin 8 Verde
Pin 7 Rojo
Pin 6 Amarillo
Pin 5 Verde
(Haz clic sobre cualquier LED para encenderlo/apagarlo manualmente)

🎮 Pulsadores del Circuito

Botones 3 y 4 en bucle infinito
Rápido (40ms) Lento (600ms)
Ciclos de bucle: 0
Monitor Serie (9600 baud)
[Sistema iniciado] Pines de salida: 13, 12, 11, 10, 9, 8, 7, 6, 5
[Pulsadores listos] Pines 28, 26, 24, 22 configurados como INPUT.
C++

Código para Arduino IDE control_motor_mega.ino

Código oficial de la Práctica 2 listo para subir a tu Arduino Mega 2560

Arduino C++ / AVR-G++ 9 LEDs | 4 Pulsadores | Funciones
/*
 * 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
  }
}