Ejecucion de un codigo una sola vez.

Buenas tardes, mi proyecto es un menu que muestra diferentes textos en una LCD 16x02, esta funcionando con un contador, cuando el contador es igual a 1 arroja tal mensaje si es 2 manda otro… Ahora me encuentro con la tarea de cuando el contador sea 1 mandar un pulso por una salida digital la cual me va encender un relevador, el problema que tengo es que como esta en el if si el contador es igual a 1 se esta ejecutando el pulso una y otra vez, y lo que quiero hacer es que solo se ejecute una vez.

De antemano gracias.

#include <LiquidCrystal.h>

//Inicializamos el display con los pines de interfaz
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int  buttonPin = 14; // the pin that the pushbutton is attached to
int buttonPushCounter = 0;   // contador para el numero de veces que se presiona el botton
const int pulso=22;
int buttonState = 0;         //  estado actual del boton
int lastButtonState = 0;     //  estado anterior del boton
int pulsoState = 0;

void setup() {
   
  // inicia el buttonPin como una entrada
  pinMode(buttonPin, INPUT); //Resistencia de pullup interna
pinMode(pulso, OUTPUT);
  buttonPushCounter=0;
 
  //inicia LCD
  lcd.begin(16, 2);
 
}

void loop() {

  // leer la entrada del pin llamada pushbutton
  buttonState = digitalRead(buttonPin);
  pulsoState = digitalRead(buttonPin);

  if (buttonState != lastButtonState) {
    
    if (buttonState == LOW) {
      
      if (buttonPushCounter>=0 && buttonPushCounter<8){
      buttonPushCounter++;
      }
      if (buttonPushCounter==8){
        buttonPushCounter=0;
 }
 }    
      
  lastButtonState = buttonState;
  }

if (buttonPushCounter==0 ){
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("0.HOME <----");
//        lcd.setCursor(0,1);
//        lcd.print("1.SCR1-A");
          delay(10);

}
  if (buttonPushCounter==1 ){
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("1.SCR1-A <----");
//        lcd.setCursor(0,1);
//        lcd.print("2.SCR1-B");
          delay(10);
          digitalWrite(pulso, HIGH);
      delay(100);
      digitalWrite(pulso, LOW);

}
    if (buttonPushCounter==2){
    lcd.clear();
//        lcd.setCursor(0,0);
//        lcd.print("1.SCR1-A");
        lcd.setCursor(0,0);
        lcd.print("2.SCR1-B <----");
          delay(10);


     
}
if (buttonPushCounter==3){
    lcd.clear();
    lcd.setCursor(0,0);
     lcd.print("3.SCR1-C <----");
//         lcd.setCursor(0,1);
//              lcd.print("4.SCR2-A");
              delay(10);
}
  if (buttonPushCounter==4){
   lcd.clear();
//    lcd.setCursor(0,0);
//     lcd.print("3.SCR1-C");
         lcd.setCursor(0,0);
              lcd.print("4.SCR2-A <----");
              delay(10);
}
 if (buttonPushCounter==5){
    lcd.clear();
    lcd.setCursor(0,0);
     lcd.print("5.SCR2-B <----");
//         lcd.setCursor(0,1);
//              lcd.print("6.SCR2-C");
              delay(10);
}
if (buttonPushCounter==6){
    lcd.clear();
//    lcd.setCursor(0,0);
//     lcd.print("5.SCR2-B");
         lcd.setCursor(0,0);
              lcd.print("6.SCR2-C <----");
              delay(10);
   }
     if (buttonPushCounter==7){
    lcd.clear();
//    lcd.setCursor(0,0);
//     lcd.print("5.SCR2-B");
         lcd.setCursor(0,0);
              lcd.print("7. ALL SCR <---- ");
              delay(10);
   }
  }

Hola, si no te entendido mal lo que quieres es que el if solo se ejecute una vez, yo lo que haria es usar una varuable tipo bool que se inicialice en false cuando el contador cambia la variable tambien y la incluyes en las condiciones del if, es decir si el contador es 1 y la bool es true haz esto.... y al final cambias la variable a false otra vez.

Espero haberme explicado bien.

Bueno hice dos o tres cambios que solo mejoran la forma de ver todo pero tu código esta bien
Agregué una variable bool activarRele = false;
La variable estará siempre en falso.
Cuando hay una pulsación me aseguro que este en falso y si digitas 1, lo hará una sola vez ya que al terminar la acción del pin, se ponde en true y ya no ingresará hasta una nueva pulsación de 1.

#include <LiquidCrystal.h>

//Inicializamos el display con los pines de interfaz
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int  buttonPin = 14; // the pin that the pushbutton is attached to
int buttonPushCounter = 0;   // contador para el numero de veces que se presiona el botton
const int pulso=22;
int buttonState = 0;         //  estado actual del boton
int lastButtonState = 0;     //  estado anterior del boton
int pulsoState = 0;
bool releActivar = false;

void setup() {
   
  // inicia el buttonPin como una entrada
  pinMode(buttonPin, INPUT); //Resistencia de pullup interna
  pinMode(pulso, OUTPUT);
  buttonPushCounter=0;
 
  //inicia LCD
  lcd.begin(16, 2);
 
}

void loop() {

  // leer la entrada del pin llamada pushbutton
  buttonState = digitalRead(buttonPin);
  pulsoState = digitalRead(buttonPin);

  if (buttonState != lastButtonState) {
    
    if (buttonState == LOW) {
      
      if (buttonPushCounter>=0 && buttonPushCounter<8){
          buttonPushCounter++;
      }
      if (buttonPushCounter >=8){
          buttonPushCounter = 0;
      }
    }    
    lastButtonState = buttonState;
    releActivar = false;
  }

  switch (buttonPushCounter) {
      case 0: lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("0.HOME <----");
              //        lcd.setCursor(0,1);
              //        lcd.print("1.SCR1-A");
              delay(10);
              break;
      case 1: lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("1.SCR1-A <----");
              //        lcd.setCursor(0,1);
              //        lcd.print("2.SCR1-B");
              delay(10);
              if (!releActivar)
                  digitalWrite(pulso, HIGH);
                  delay(100);
                  digitalWrite(pulso, LOW);
                  releActivar = true;
              }
              break;
      case 2: lcd.clear();
              //        lcd.setCursor(0,0);
              //        lcd.print("1.SCR1-A");
              lcd.setCursor(0,0);
              lcd.print("2.SCR1-B <----");
              delay(10);
              break;
      case 3:
              lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("3.SCR1-C <----");
              // lcd.setCursor(0,1);
              // lcd.print("4.SCR2-A");
              delay(10);
              break;
      case 4: lcd.clear();
              //    lcd.setCursor(0,0);
              //     lcd.print("3.SCR1-C");
              lcd.setCursor(0,0);
              lcd.print("4.SCR2-A <----");
              delay(10);
              }
              break;
      case 5: if (buttonPushCounter==5){
              lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("5.SCR2-B <----");
              //         lcd.setCursor(0,1);
              //              lcd.print("6.SCR2-C");
              delay(10);
              break;
      case 6: lcd.clear();
              //    lcd.setCursor(0,0);
              //     lcd.print("5.SCR2-B");
              lcd.setCursor(0,0);
              lcd.print("6.SCR2-C <----");
              delay(10);
              }
              if (buttonPushCounter==7){
              lcd.clear();
              //    lcd.setCursor(0,0);
              //     lcd.print("5.SCR2-B");
              lcd.setCursor(0,0);
              lcd.print("7. ALL SCR <---- ");
              delay(10);
   }
  }

Trate de compilar pero no me dejo revisare que es lo que anda mal y les aviso.

Gracias por la ayuda.

Agrega esto

case 1: lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("1.SCR1-A <----");
              //        lcd.setCursor(0,1);
              //        lcd.print("2.SCR1-B");
              delay(10);
              if (!releActivar) { // <====== falta llave