USA Traffic System using button array and sizeof(), debounce, millis, and ms

Hello All,

I am relatively new to Arduino and electronics, so whatever I state here, is what I think is happening in the code. If I am incorrect please correct me and/or explain the proper code or statement corrections. Thank you.
This sketch is for a simplified USA Traffic Light System. It uses just 5 led’s, 3 for traffic red, green, yellow, and 2 for Pedestrian crossing red and green. I did not write this sketch from scratch. I googled and used arduino forums to find code and alter it to my needs. I give credit where credit is due.
I wanted to use an array of buttons. This sketch uses arrays and sizeof() function to dynamically change the size of the array as you add or subtract buttons, nice.
It uses state machine - debounce and millis too.
Thank you for any constructive comments. HTH

dynamically change the size of the array as you add or subtract buttons,

I don't like the sound of that

Please post your code here as many people will not download from pastebin.com but read this first and follow the suggestions given relating to posting code Read this before posting a programming question

"dynamically change the size of the array as you add or subtract buttons,"

"I don't like the sound of that"
Please explain thanks this statement

I tried putting the code here said too big

here’s code that handles an arbitrary number of buttons (and leds)

// recognize multiple button presses; tgl LED when pressed

#define ON  LOW
#define OFF HIGH

byte butPins [] = { A1, A2, A3 };
byte ledPins [] = { 10, 11, 12 };

#define N_PINS sizeof(butPins)

byte butLst [N_PINS] = {};

// -----------------------------------------------------------------------------
void setup (void)
{
    for (unsigned n = 0; n < N_PINS; n++)  {
        digitalWrite (ledPins [n], OFF);
        pinMode      (ledPins [n], OUTPUT);

        pinMode      (butPins [n], INPUT_PULLUP);
        butLst [n]  = digitalRead (butPins [n]);
    }
}

// -----------------------------------------------------------------------------
void loop (void)
{
    for (unsigned n = 0; n < N_PINS; n++)  {
        byte but = digitalRead (butPins [n]);

        if (butLst [n] != but)  {
            butLst [n] = but;

            if (LOW == but)     // button pressed
                digitalWrite (ledPins [n], ! digitalRead (ledPins [n]));
        }
    }

    delay (10);         // debounce
}