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?