Problemas de código

Hola, necesito que me echen una mano con un código que la verdad ya me tiene estresado, sobre todo porque no tengo una base sólida de programación y no sé mucho acerca de esto.

Estoy haciendo un proyecto y lo que necesito es que:

Lo que quiero que haga es que al presionar un push un motor stepper gire tantos grados y al terminar un buzzer pite 3 veces y una tira LED encienda y apague con desvanecimiento y que todo eso tenga un contador el cual se proyecte en un LCD que vaya aumentando cada vez que se cierre/oprima el push.

El problema es que el buzzer se queda pitando y la tira LED no es continua ya que enciende, se apaga, y tiene una demora para realizar nuevamente la acción. Además, el proceso inicia sin haber antes presionado el push, y al presionarlo no funciona ciertas veces.

¡Muchas gracias!

int LED = 6;
int Buzzer = 12;
int Push = 13;
int Retardo = 2;
int dato_rx = 0;
int Buttonstate = 0;
int ValorLED = 0;  // Tira LED
int numero_pasos = 1600;  // Grados a girar del motor
const int tiempo = 1500;  // Tiempo activo del buzzer
const int tiempo2 = 1200;  // Tiempo inactivo del buzzer
String leeCadena;

void setup(){                
  Serial.begin (9600);
  pinMode (13, INPUT);  // PUSH BUTTON - Entrada
  pinMode (12, OUTPUT);  // Buzzer - Salida
  pinMode (11, OUTPUT);
  pinMode (10, OUTPUT);
  pinMode (9, OUTPUT);
  pinMode (8, OUTPUT);
  pinMode (6, OUTPUT);  // Tira LED - Salida
}

void loop(){
  Buttonstate = digitalRead(Push);  // Lectura del PUSH
  if (Buttonstate == HIGH)  // Condición PUSH
  {
    digitalWrite (dato_rx, HIGH);  // Activación
  while (Serial.available())
   {
    delay (Retardo);
    char c = Serial.read();
    leeCadena += c;
   }  
  if (leeCadena.length()>0)
   {       
    dato_rx = leeCadena.toInt();
    Serial.print (dato_rx);
    Serial.println ("Grados");
    delay (Retardo);
    dato_rx = (dato_rx * 1.4222222222);
   }
  while (dato_rx>numero_pasos)
   {
    paso_izq();
    numero_pasos = numero_pasos +1;
   }
  while (dato_rx<numero_pasos)
  {
    paso_der();
    numero_pasos = numero_pasos -1;
  }
  leeCadena = "";
  apagado();
  digitalWrite (Buzzer, HIGH);
   delay (tiempo);
  digitalWrite (Buzzer, LOW);
   delay (tiempo2);
  digitalWrite (Buzzer, HIGH);
   delay (tiempo);
  digitalWrite (Buzzer, LOW);
   delay (tiempo2);
  for (int ValorLED = 0; ValorLED <= 255; ValorLED++)
  {
    analogWrite (LED, ValorLED);
    delay (4);
  }
  for (int ValorLED = 255; ValorLED >= 0; ValorLED--)
  {
    analogWrite (LED, ValorLED);
    delay (4);
  }
}
}
void paso_der(){
  digitalWrite (11, LOW); 
  digitalWrite (10, LOW);  
  digitalWrite (9, HIGH);  
  digitalWrite (8, HIGH);  
   delay (Retardo); 
  digitalWrite (11, LOW); 
  digitalWrite (10, HIGH);  
  digitalWrite (9, HIGH);  
  digitalWrite (8, LOW);  
   delay (Retardo); 
  digitalWrite (11, HIGH); 
  digitalWrite (10, HIGH);  
  digitalWrite (9, LOW);  
  digitalWrite (8, LOW);  
   delay (Retardo); 
  digitalWrite (11, HIGH); 
  digitalWrite (10, LOW);  
  digitalWrite (9, LOW);  
  digitalWrite (8, HIGH);  
   delay (Retardo);  
}

void paso_izq(){
  digitalWrite (11, HIGH); 
  digitalWrite (10, HIGH);  
  digitalWrite (9, LOW);  
  digitalWrite (8, LOW);  
   delay (Retardo); 
  digitalWrite (11, LOW); 
  digitalWrite (10, HIGH);  
  digitalWrite (9, HIGH);  
  digitalWrite (8, LOW);  
   delay (Retardo); 
  digitalWrite (11, LOW); 
  digitalWrite (10, LOW);  
  digitalWrite (9, HIGH);  
  digitalWrite (8, HIGH);  
   delay (Retardo); 
  digitalWrite (11, HIGH); 
  digitalWrite (10, LOW);  
  digitalWrite (9, LOW);  
  digitalWrite (8, HIGH);  
   delay (Retardo); 
}

void apagado(){
  digitalWrite(11, LOW); 
  digitalWrite(10, LOW);  
  digitalWrite(9, LOW);  
  digitalWrite(8, LOW);  
 }

No se si esto interpreta lo que pides.. ya nos dirás

#include <Servo.h> // Librería

Servo myservo;

//Definición de variables
int pos = 0;
bool adelante, adelanteAnt = false;
bool atras, atrasAnt = false;

void setup() {

	Serial.begin(9600);
	myservo.attach(9);

	// Inicializa pin
	pinMode(3, INPUT);
	pinMode(5, INPUT);
}

void loop() {
	// Lee entrada de pulsación de los botones
	adelante = digitalRead(5);
	atras 	 = digitalRead(3);

	if (adelante && !adelanteAnt){
		// pos = pos+1;
		// if (pos>=180){
		// 	pos=180;
		// }
		pos = 90;
	}
	adelanteAnt = adelante;

	if (atras && !atrasAnt){
		// pos=pos-1;
		// if (pos<=0){
		// 	pos=0;
		// }
		pos = 0;
	}
	atrasAnt = atras;

	myservo.write(pos);
	delay(15);
}