|
Boas pessoal. Queria pedir uma ajuda. Eu mais um colega meu estamos a fazer um projecto com o arduino. Que consiste em fazer um programa para um portão que irá ser automático, e estamos com algumas dificuldades, pois não dominamos muito isto. Já temos um pedaço de código desenvolvido, mas agora não estamos a conseguir avançar mais porque nos deparamos com um problema na questão do delay().
Codigo:
int motor_abre = 12; int motor_fecha = 13; int chave_a = 11; int chave_f = 8; int fotoc = 7; int fc_f = 9; int fc_a = 10; int botao=6;
int aberto = 0; int fechado = 0; int ordem = 0; int abrir_c=0; int fechar_c=0; int sensor=0;
void setup() { pinMode(motor_abre, OUTPUT); pinMode(motor_fecha, OUTPUT); pinMode(chave_a, INPUT); pinMode(chave_f, INPUT); pinMode(fc_f, INPUT); pinMode(fc_a, INPUT); pinMode(fotoc, INPUT); pinMode(botao, INPUT); }
void loop(){ aberto=digitalRead(fc_a); fechado=digitalRead(fc_f); ordem=digitalRead(botao); sensor=digitalRead(fotoc); if(fechado==0 & ordem==1){ digitalWrite(motor_abre, HIGH); } else{ if(aberto==0){ digitalWrite(motor_abre, LOW); delay (5000);} } } if(aberto==0 ){ digitalWrite(motor_fecha, HIGH); } else{ if(fechado==0){ digitalWrite(motor_fecha, LOW); } } }
No delay que temos no programa, ele está a funcionar, o portão abre, activa o fim de curso "fc_a" e faz o delay de 5s, passados esses 5 segundos começa a fechar, mas se manualmente carregarmos no fim de curso "fc_f" o portão não vai parar, só pára passados outros 5s, e não estamos a perceber porque, pois não estamos a mandar fazer isso.
Se alguém poder ajudar, agradecia-mos. Obrigado
|