Ola pessoal estou a fazer um projecto e estou com um problema....
Queria meter a correr um programa no arduino para controlar um motor.
Mas ao mesmo tempo queria que estivesse a piscar um lede mas se carregarem no botão de emergência (estou a usar logica envertida no botão de emergência) ele devia ficar sempre ligado.
Já construí o programa. Mas não sei porque ele quando entra no programa "Buzz" não me corre o programa principal.
//Entradas DIGITAIS
//
  int LED1= 10;
  int sensor_MAG_1= 40;
  int sensor_MAG_2= 41;
  int sensor_MAG_3= 42;
  //int sensor_Norte=50;
  //int sensor_sul=51;
  int HOOK_CIMA= 43;
  int HOOK_Baixo_= 44;
  int Direccao_BAIXO= 45;
  int Direccao_CIMA= 46;
  int Botao_ON= 30;
  int Botao_Reset= 31;
  int Botao_START= 32;
  int Y32= 7;
//Entradas Analogicas
//
      //Saidas Digitais
      //
            int BUZZ=13;
            int Luz_Vermelha=48;
            int Motor_HOOK_Cima=49;
            int Motor_HOOK_Baixo=50;
            int Motor_Direccao_Cima=51;
            int Motor_Direccao_Baixo=52;
           
       //Saidas Analogicas
      //
           int Motor_Esq=9;
           int Motor_Dr=8;
                    //Declaração de Variaveis
                          
                          int sistema_em_baixo;
                          int marcha_var;
                          int velocidade_1;
                          int velocidade_2;
                          int Lazer_Zona_1;
                          int Lazer_Zona_2;
                          int velocidade_esq_var;
                          int velocidade_dr_var;
                          int Baixar_Hook;
                          int Levantar_HooK;
                          int virar_Dr;
                          int virar_Esq;
                          int STOP;
                          int deslgar_Lazer;
                          int Y32_var=0;
                          int Botao_ON_var=0;
                          int Direccao_CIMA_var=0; 
                          int Direccao_BAIXO_var=0;
                          int Botao_START_var=0;
              
void setup()
{
   //Declaração de Saidas Digitais
   //
            pinMode(LED1,OUTPUT);
            pinMode(BUZZ,OUTPUT);
            pinMode(Luz_Vermelha,OUTPUT);
            pinMode(Motor_HOOK_Cima,OUTPUT); 
            pinMode(Motor_HOOK_Baixo,OUTPUT);
            pinMode(Motor_Direccao_Cima,OUTPUT);  
            pinMode(Motor_Direccao_Baixo,OUTPUT); 
 
       //Declaração de Entradas Digitais
   //
          pinMode(Botao_ON,INPUT);
          pinMode(Botao_START,INPUT);
          pinMode(Botao_Reset,INPUT);
          pinMode(Y32,INPUT);
 
         
    //Declaração de Saidas Analogicas
   //
           pinMode(Motor_Esq,OUTPUT);
           pinMode(Motor_Dr,OUTPUT);
   
   //Declaração de Entradas Analogicas
   //
  
//Declaração do Valor das variaveis iniciais...
//
      velocidade_1=HIGH;
      sistema_em_baixo=LOW;
Serial.begin(9600);
Serial.println("Imeguisa Portugal"); 
}
//Inicio do Programa...
void loop()
{
 
        Serial.println("__________Imeguisa Portugal_________");
        Serial.println("Prima ON para Activar o Sistema de Direccao"); 
        
        
        Y32_var = digitalRead(Y32);
        Botao_ON_var = digitalRead(Botao_ON);
        Botao_START_var = digitalRead(Botao_START);
        Direccao_CIMA_var = digitalRead(Direccao_CIMA);
        Direccao_BAIXO_var = digitalRead(Direccao_BAIXO);
        
              
  if ( Botao_ON_var==HIGH && Direccao_CIMA_var== HIGH && Direccao_BAIXO_var==LOW && Y32_var==HIGH)
     {
       digitalWrite(Motor_HOOK_Baixo,HIGH);
       delay(Direccao_BAIXO=HIGH);
       digitalWrite(Motor_HOOK_Baixo,LOW);
       sistema_em_baixo=1;
       
       Serial.println("Sistema de Traccao Baixo"); 
     }
     
  if ( Botao_ON==HIGH && Direccao_CIMA== LOW && Direccao_BAIXO_var==HIGH && Y32==HIGH)
     {
       digitalWrite(Motor_HOOK_Cima,HIGH);
       delay(Direccao_CIMA=HIGH);
       digitalWrite(Motor_HOOK_Cima,LOW);
       sistema_em_baixo=0;
      
       Serial.println("Sistema de Traccao Cima");
     }
    if(sistema_em_baixo==HIGH && marcha_var==LOW)
      {
      
        Serial.println("Prima START Para Iniciar A Marcha");
      }
  
     
   if(Botao_START_var==HIGH && sistema_em_baixo==HIGH && Y32==HIGH)
     {
     marcha_var=HIGH;
     marcha();
     codigo_MAG();
     
     Serial.println("Inicio AGV Em Funcionamento");
     }
  if (Y32_var==LOW)
     {
      marcha_var=LOW;
      
      Serial.println("Botao De Emergencia Activado");
     }
 //Serial.println("Fim"); 
} 
//Fim do Programa... 
//Sub-Programa Marcha.....
//
void marcha()
     {
       velocidade();
      
    if (sensor_MAG_1==HIGH && sensor_MAG_2==LOW && sensor_MAG_2==LOW && marcha_var==HIGH)
        {
        analogWrite(Motor_Esq,velocidade_esq_var);
        analogWrite(Motor_Dr,50/velocidade_dr_var);
        }
   else if (sensor_MAG_1==LOW && sensor_MAG_2==HIGH && sensor_MAG_2==LOW && marcha_var==HIGH)
        {
        analogWrite(Motor_Esq,velocidade_esq_var);
        analogWrite(Motor_Dr,velocidade_dr_var);
        }
   else if (sensor_MAG_1==LOW && sensor_MAG_2==LOW && sensor_MAG_2==HIGH && marcha_var==HIGH)
        {
        analogWrite(Motor_Esq,50/velocidade_esq_var);
        analogWrite(Motor_Dr,velocidade_dr_var);
        }
   else
        {
        analogWrite(Motor_Esq,0);
        analogWrite(Motor_Dr,0);
        }  
    }
//Fim do Sub-Programa Marcha.....
 
//Sub-Programa velocidade..... 
//
void velocidade()
     {
      
       if (velocidade_1==HIGH && Lazer_Zona_1==LOW)
          {
          velocidade_esq_var==250/2;
          velocidade_dr_var==250/2;
          
          Serial.println("Velocidade Minima");
         }
       
       if (velocidade_2==HIGH && Lazer_Zona_1==LOW);
          {
          velocidade_esq_var==250;
          velocidade_dr_var==250;
          
          Serial.println("Velocidade Maxima");
          }
       
       if (Lazer_Zona_1==HIGH);
          {
          velocidade_1==LOW;
          velocidade_2==LOW;
          velocidade_esq_var==250/5;
          velocidade_dr_var==250/5;
          
          Serial.println("Velocidade de seguranca");
          }
      
      }
      
//Fim do Sub-Programa velocidade.....  
//Sub-Programa Buzz... 
// 
void Buzz()
    {
     
      if(Y32_var == HIGH)
      {
        digitalWrite(BUZZ,HIGH);
        delay(500);
        digitalWrite(BUZZ,LOW);
        delay(500);
        }
     if(Y32_var == LOW)
        {
        digitalWrite(BUZZ,HIGH);
        }  
    }
//Fim do Sub-Programa Buzz.....  
 
//Sub-Programa Código Mag... 
// 
void codigo_MAG()
    {
     
    }
//Fim do Sub-Programa Código Mag... 
Ou isto não é possível com o arduino?