MsTimer2 y Led

Hola compañeros. Soy nuevo en esto.

Necesito hacer el siguiente loop: Encender un Led 0,5 seg y apagarlo 4,5 segundos exactos.
He intentado con la opción delay, pero no cuenta el tiempo exacto y se va desincronizando.

Estoy intentando hacerlo con MsTimer2, pero no lo entiendo.
Agradeceria vuestra ayuda con un código sencillo para entenderlo.

Actualmente tengo este código, pero no se modificarlo:

// Toggle LED on pin 13 each second
#include <MsTimer2.h>

void flash() {
 static boolean output = HIGH;

 digitalWrite(13, output);
 output = !output;
}

void setup() {
 pinMode(13, OUTPUT);

 MsTimer2::set(500, flash); // 500ms period
 MsTimer2::start();
}

void loop() {
}

Muchas gracias de antemano.

Primero: NO USAR ESTA PARTE DEL FORO. Por eso es que nadie te atendía.

Segundo: Sinceramente yo prefiero usar TimerOne; ofrece mejor precisión que timer2.

Tercero: las interrupciones deben ser lo más cortas posible. No tanto en líneas de código, sino en tiempo de ejecución.

volatile boolean output = HIGH;

void flash() {
  if (output)
    PORTB |= B00100000;
// Busca "manipulación de puertos" y "manipulación de bits" para entender lo que ocurre aquí.
  else
    PORTB &= B11011111;

  output = !output;
}

Son más líneas de código que lo que tienes hecho; mas créeme, es mucho más rápido así que con digitalWrite.

Muchas gracias por la respuesta.