Boas pessoal, 

Como iram perceber trata-se de uma pergunta de quem começou hoje a mexer no arduino, no entanto entre muitas duvidas e algumas horas devolta desta questão recorro agora aos vosso serviços. 

Fiz o codigo do basico semáforo, no entanto queria eviar a repetição do comando delay, para fazer piscar o LED verde dos pedestres quando o vermenho fecha. 

como é que o poderei fazer? 

....

digitalWrite (pinVerde, LOW);
digitalWrite (pinAmarelo, LOW);
digitalWrite (pinVermelho, HIGH);
digitalWrite (pinPedestreVermelho, LOW);
digitalWrite (pinPedestreVerde, HIGH);
delay (15000);


digitalWrite (pinPedestreVerde, HIGH);
delay (500);
digitalWrite (pinPedestreVerde, LOW);
delay (500);
digitalWrite (pinPedestreVerde, HIGH);
delay (500);
digitalWrite (pinPedestreVerde, LOW);
delay (500);
digitalWrite (pinPedestreVerde, HIGH);
delay (500);
digitalWrite (pinPedestreVerde, LOW);
delay (500);
digitalWrite (pinPedestreVerde, HIGH);
delay (500);
digitalWrite (pinPedestreVerde, LOW);
delay (500);
digitalWrite (pinPedestreVerde, HIGH);
delay (500);
digitalWrite (pinPedestreVerde, LOW);
delay (500);

digitalWrite (pinVerde, HIGH);
digitalWrite (pinAmarelo, LOW);
digitalWrite (pinVermelho, LOW);
digitalWrite (pinPedestreVermelho, HIGH);
digitalWrite (pinPedestreVerde, LOW);
delay (15000);

Obrigado

Exibições: 296

Responder esta

Respostas a este tópico

Oi Sr. A, boa tarde.

No lugar da função delay() use a função millis(), para dar "delay", sem para o processamento.

Rui

Boa Tarde, Rui 

Obrigado pela informação vou estudar o millis() uma vez que também acho que é solução para poder utilizar a variavel if e else uma vez que pelo que percebi não "congela" o programa como o delay. 

Muito obrigado. 

https://www.arduino.cc/en/Reference/For

for(int i=0; i<10; i++)

{

digitalWrite (pinPedestreVerde, !analogRead(pinPedestreVerde));
delay (500);

}

Boa Tarde, João

Obrigado pela informação do for() pois foi uma boa solução para o que pretendia, no entanto alterei um pouco o código para : 

for (int i=1; i<=6; i=i+1)
{
digitalWrite (pinPedestreVerde, HIGH);
delay (500);
digitalWrite (pinPedestreVerde, LOW);
delay (500);
}

pois o que me forneceu não funcionou, no entanto deu para perceber +- a mecânica do for() 

Um abraço 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço