Comando Millis()

Boa noite galera, sou novo aqui no fórum e também com Arduino. Preciso criar um semáforo com 3 leds apenas, porém sem usar o comando delay. Minha dúvida é como usar o comando millis para fazer o tal procedimento, sendo que o led1 deve permanecer acesso por 8 segundos, depois o led2 por apenas 1 segundo e o led3 acesso 4 segundos, nessa sequencia. E que todo esse ciclo fique se repetindo infinitas vezes.

algo assim

intervalo1 = 4000;
led_status1 = 1;
digitalWrite(led1, 1);

veja o exemplo blink without delay

if (led_status1 = 0 ) {
if ( millis() - prevMillis1 >= intervalo1) {
led_status1 = 1;
digitalWrite(led1, 0);
}