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

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.