Semaforo con pulsador que aumente su tiempo de encendido cada que presione el pulsador

Hola que tal tengo que hacer un trabajo en el cual me piden un semaforo en arduino con un pulsador que cada que lo presione el tiempo en el que esta prendido el led aumente uno , ya tengo los led y el tiempo pero al momento de aumentar el tiempo que este encendido no me funciona , adjunto mi codigo

int pinRojo=13;
int pinAmarillo=12;
int pinVerde= 11;
int estadoActual1=0;
int estadoAnt=0;
int contador=0;
int state = 0;

void setup()
{
pinMode(pinRojo,OUTPUT);
pinMode(pinAmarillo,OUTPUT);
pinMode(pinVerde,OUTPUT);
pinMode(8,INPUT);
Serial.begin(9600);

}
void loop()

{
digitalWrite(pinVerde,HIGH);
digitalWrite(10,HIGH);
delay(8000);
funcionBoton();
digitalWrite(10,LOW);
digitalWrite(pinVerde,LOW);
digitalWrite(pinAmarillo,HIGH);
delay(2000);
digitalWrite(pinAmarillo,LOW);
digitalWrite(pinRojo,HIGH);
digitalWrite(9,HIGH);
delay(6000);
digitalWrite(9,LOW);
digitalWrite(pinRojo,LOW);
if (pinVerde==HIGH and pinRojo==LOW){
Serial.println("Samanta Sanchez y Marlon Alban");

}
}
void funcionBoton(){ // cree una funcion para que al momento de presionar el boton aumente el tiempo del led , por ejemplo esta prendido 8 seg y aplasto el boton se debe prender durante 9 segundos

estadoActual1=digitalRead(8);
if (estadoActual1==HIGH && estadoAnt == LOW){
delay(8000 + contador);
contador=contador+1000;
}
estadoAnt = estadoActual1;
}

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>



Cuando usas delay() para controlar tiempos, es practicamente imposible lograr que un pulsador responda cuando tu lo desees.
Ve a documentación y lee sobre millis()
Su uso permitirá que hagas lo que necesitas sin que se detenta el código cuando encuentra cada uno de tus delay().
Olvida que existe delay()!!
Cuando leas sobre millis(), plantea las nuevas dudas.

Más allá de lo que te remarca @Surbyte sobre el uso de delay() (piensa que tienes que pulsar el botón justo cuando termina el primer delay de 8 segundos o mantenerlo pulsado desde antes) te hago notar otra cosa: te dicen que si en tiempo es 8 segundos al pulsar el boton por primera vez el tiempo se extienda a 9 segundos, ¿ok?

Si tu ya tienes un delay de 8 segundos, tienes que agregar solo 1 segundo no 8 + 1 como has hecho, sino arrancas agregando 9 segundos a los 8 que ya tienes antes de llamar a funcionBoton() lo que suma 17 segundos. ¿Se entiende?

Presta atención a esos detalles sino por más pintoresco que sea mostrar tu nombre por consola, te va a ir mal porque no cumples la consigna.

Saludos

El unico modo de usar delay() es con pequeñas interrupciones y contarlas, lo que te permita luego hacer otras cosas como si nada pasara.
Poner delays tan largos solo trae problemas.
Si empiezas a programar, hazlo bien, ve a Documentación y usa millis(), luego agradecerás el consejo.