Semáforo manual accionado con botones

Uso un arduino nano y quisiera hacer un semáforo manual que al apretar o presionar un botón prenda el verde, apriete el botón prenda el amarillo y apague el verde, y por ultimo presionar le botón prenda el rojo y apague el amarillo se presione otra vez y apague el rojo y hacer la misma secuencia.

no se si se pueda hacer con un solo botón ? o se ocuparían 4 botones ?

este código es el que uso para la secuencia. creo que ya al poner un botón ¿¿ ya no necesitaría el delay ??

void setup() {
  pinMode(13, OUTPUT); // Led Rojo como salida
  pinMode(12, OUTPUT); // Led Amarillo como salida
  pinMode(11, OUTPUT); // Led Verde como salida
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);
}

void loop() {
  digitalWrite(13, LOW);  // Rojo inicia apagado
  digitalWrite(11, HIGH); // Enciendo el verde
  delay(5000);                // Espero un tiempo
  digitalWrite(11, LOW);  // Apago el verde
  digitalWrite(12, HIGH); // Enciendo el Amarillo
  delay(1000);                // Espero un tiempo
  digitalWrite(12, LOW);  // Apago el amarillo
  digitalWrite(13, HIGH); // Enciendo el Rojo
  delay(5000);
}

Te asesoro pidiéndote que leas las normas del foro y en este caso que no uses mas Mayúsculas para explicar lo que necesitas.
Usar mayúsculas es como gritarnos.
Esta claramente indicado en los primeros dos hilos de esta sección.
Te invito a leerlos y luego edita tu pregunta.
Finalmente, el título: cuando leas las normas verás que el título debe ser indicativa de lo que se consulta: "Podrían asesorarme" no satisface esas características que se solicitan.

Ok, de antemano una disculpa cambiare las mayusculas y no se si este así bien el titulo ?

Perfecto, ahora esta perfecto!!
Gracias por seguir los consejos y haber leído las normas. Recuerda no repetir lo que ya te han escrito.

El camino que llevas no te va a permitir resolver tu problema.
Te recomiendo que hagas lo siguiente:
Ve a documentación => Indice de temas tutoriales => millis() y luego lee máquina de estados.

Tal vez entiendas, o tal vez vuelvas con mas dudas que seguridades pero al menos tendrás una noción de como resolverlo.

El inconveniente de como estas encarando tu programa se llama delay().
delay() sirve para hacer un juego de luces pero si en el medio del juego de luces queremos que se accione algo para que haga otra cosa, delay() lo impide hasta que completa su acción.
Si tu le dices a delay(5000) entonces el micro estará 5 segundos detenido esperando y malgastando tiempo hasta completar esa demora y luego sigue con la instrucción siguiente. Esta claro que x ese ruta tropezarás con una pared.
La solución es un cambio radical en como se programa, y es el uso de millis().

Luego que leas los tutoriales y tienes mas de 5, entonces conversaremos a menos que alguien te de una solución.