Alternar valor booleano con Funcion millis?

Buenos dias :slight_smile:
googleando y trastenado un poco con el IDE de Platformio eh dado con el siguient codigo y me dejo un poco descolocado.
Alguien podria decir si con estra instruccion alterna el valor de la variable booleana “on” pls:)
–>"led*.on = millis()* % 1000 < 50*;" *
*Adjunto el codigo completo que funciona muy bien por cierto *

/**
 * ----------------------------------------------------------------------------
 * ESP32 Remote Control with WebSocket
 * ----------------------------------------------------------------------------
 * © 2020 Stéphane Calderoni
 * ----------------------------------------------------------------------------
 */

#include <Arduino.h>

// ----------------------------------------------------------------------------
// Definition of macros
// ----------------------------------------------------------------------------

#define LED_PIN 26

// ----------------------------------------------------------------------------
// Definition of the Led component
// ----------------------------------------------------------------------------

struct Led {
    // state variables
    uint8_t pin;
    bool    on;

    // methods
    void update() {
        digitalWrite(pin, on ? HIGH : LOW);
    }
};

// ----------------------------------------------------------------------------
// Definition of global variables
// ----------------------------------------------------------------------------

Led led = { LED_PIN, false };

// ----------------------------------------------------------------------------
// Initialization
// ----------------------------------------------------------------------------

void setup() {
    pinMode(led.pin, OUTPUT);
}

// ----------------------------------------------------------------------------
// Main control loop
// ----------------------------------------------------------------------------

void loop() {
    led.on = millis() % 1000 < 50;
    led.update();
}

Muchas Gracias de Antemano,
Atentamente,
Pablo

Te lo traduzco: Si el resto de dividir millis() por 1000 es menor que 50 entonces led.on será verdadera.

Debes tener en cuenta que % significa módulo y la operación módulo devuelve el resto de una división entre enteros y siempre devuelve un número entero igual o mayor a 0 y menor que el divisor.

Entonces

millis() % 1000

va a dar un resultado entre 0 y 999.

Así, cuando el resultado esté entre 0 y 49, la condición

millis() % 1000 < 50

será verdadera y led.on será true .
Cualquier resultado superior a 49 hará que led.on sea false.

En resumen, ese código va hacer encender el led durante 50 ms cada 1 segundo.

Saludos