Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Parpadear dos LEDs a diferentes ritmos en Arduino sin usar delay()

Componentes y materiales

Sobre el proyecto

Este tutorial surge de una duda frecuente en foros: ¿cómo hacer parpadear dos LEDs a frecuencias distintas? Si ambos intervalos son múltiplos (por ejemplo, 1000 ms y 500 ms), aún se puede lograr con delay() encadenando esperas, pero el código se vuelve inmanejable apenas los tiempos dejan de ser múltiplos exactos (p. ej., 1000 ms y 300 ms).

La solución es abandonar delay() y usar el enfoque sin bloqueo basado en millis(), que ya viene de ejemplo en el IDE de Arduino (BlinkWithoutDelay). La idea es guardar el momento del último cambio de cada LED y compararlo con el tiempo actual; si ha pasado su intervalo, se invierte el estado. Así cada LED parpadea de forma independiente sin detener el procesador.

Código

const int ledPin  = LED_BUILTIN; // LED integrado (pin 13)
const int ledPin2 = 12;          // Segundo LED en pin 12

int ledState  = LOW;
int ledState2 = LOW;

unsigned long previousMillis  = 0;
unsigned long previousMillis2 = 0;

const long interval  = 1000; // 1 segundo
const long interval2 = 300;  // 300 ms

void setup() {
  pinMode(ledPin,  OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();

  // Control del primer LED
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    ledState = (ledState == LOW) ? HIGH : LOW;
    digitalWrite(ledPin, ledState);
  }

  // Control del segundo LED
  if (currentMillis - previousMillis2 >= interval2) {
    previousMillis2 = currentMillis;
    ledState2 = (ledState2 == LOW) ? HIGH : LOW;
    digitalWrite(ledPin2, ledState2);
  }
}

Esquema de conexiones

Conecta el ánodo del segundo LED al pin 12 a través de una resistencia de 220 Ω y el cátodo a GND. El LED integrado (pin 13) no requiere cableado adicional.

Parpadear dos LEDs a diferentes ritmos en Arduino sin usar delay()

Proceso de manufactura

  1. Monitorización en tiempo real de temperatura y humedad vía web en Raspberry Pi 4
  2. Tutorial IoT para principiantes: Streaming de datos de temperatura desde Raspberry Pi
  3. Transmisión de Datos de Temperatura en Tiempo Real desde ppDAQC Pi‑Plate a InitialState con Raspberry Pi Headless
  4. Construye un Robot Controlado por WiFi con Raspberry Pi y Smartphone Android
  5. Orígenes del Concepto de Aserrado: De Herramientas Antiguas a Máquinas Modernas
  6. Entendiendo el Hierro Fundido Gris: Propiedades, Producción y Aplicaciones Automotrices
  7. Todo lo que necesitas saber sobre las máquinas expendedoras de refrescos
  8. Protección del aluminio contra la corrosión: Estrategias expertas para una durabilidad duradera
  9. Por qué cambiar de C a C++ puede impulsar el desarrollo embebido
  10. Domina Cloud Computing desde cero: guía práctica para principiantes
  11. Comprender el control de retraso en Verilog: Técnicas de temporización y mejores prácticas