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);
}