typedef struct blinkled {
uint16_t on;
uint16_t off;
uint8_t pin;
bool status;
uint32_t millisLED;
} BLINKLED;
BLINKLED initBlink(uint8_t pin, uint32_t on = 500, uint32_t off = 500)
{
BLINKLED myLED;
myLED.on = on;
myLED.off = off;
myLED.pin = pin;
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
myLED.status = LOW;
myLED.millisLED = millis();
return myLED;
}
void blinkLED(BLINKLED *myLED)
{
if (myLED->status == HIGH)
if ((millis() - myLED->millisLED) > myLED->on)
{
digitalWrite(myLED->pin, LOW);
myLED->status = LOW;
myLED->millisLED = millis();
}
if (myLED->status == LOW)
if ((millis() - myLED->millisLED) > myLED->off)
{
digitalWrite(myLED->pin, HIGH);
myLED->status = HIGH;
myLED->millisLED = millis();
}
}
BLINKLED theLED;
BLINKLED theOtherLED;
BLINKLED theOtherOtherLED;
void setup(void)
{
Serial.begin(9600);
while(!Serial);
theLED = initBlink(LED_BUILTIN, 20, 1980);
theOtherLED = initBlink(12, 60, 980);
theOtherOtherLED = initBlink(4, 250, 654);
}
void loop(void)
{
blinkLED(&theLED);
blinkLED(&theOtherLED);
blinkLED(&theOtherOtherLED);
}