const unsigned char GROEN[] = {         0,     9,    1,     1,     3,     2,     2,    6,    0 }; //All Green Lights.
const unsigned char ORANJ[] = {         0,     0,    8,     0,     0,     1,     0,    0,    6 }; //All Orange Lights.
const unsigned char ROOD[] =  {        15,     6,    6,    14,    12,    12,    13,    9,    9 }; //All Red Lights.
const unsigned int VERTRAGING[] = {  1000,  1000, 2000,  1000,  5000,  2000,  1000, 5000, 1000 }; //Time in ms for each step.
//                                      ^      ^  (Steps & delays are used per column position).
//Step:                                 0      1     2      3 ...
#include <string.h>

const int STAPPEN = sizeof (GROEN) / sizeof (unsigned char);            //Determine the amount of steps for the sequencer.

void setup ()
{
}

void loop ()
{                                                                       //Put your main code here, to run repeatedly:
  int stap = 0;
  for (;;)
  {
    DDRA = DDRL = DDRC = 255;                                           //All bits output.
    PORTA = GROEN[stap];
    PORTC = ORANJ[stap];
    PORTL = ROOD[stap];
    delay (VERTRAGING[stap]);
    ++stap;
    if (stap >= STAPPEN) stap = 0;
  }
}
