Olá pessoal bom dia

estou fazendo um projeto de um semáforo bem simples para apresentar no final do meu curso, só que estou tendo algumas dificuldades com o compilador arduino, apesar de trabalhar com eletrônica à um bom tempo nunca mexi com programação anteriormente.

O escopo do projeto é o seguinte, são duas vias de mão unica onde tem a travessia de pedestres.

   Quando um pedestre pressionar a botoeira e enviar um sinal de nível alto em um pino que ja foi definido como INPUT, ele deve executar um grupo de instruções onde os semáforos das vias fecham e abre para os pedestres. 

Estou usando a função "if" para este grupo de instruções, mas ele ignora o "if" e executa o grupo dentro do loop. alguem poderia me ajudar neste caso?

PS.: estou usando o proteus para simulação.

Segue código

/*
SafeWalk versão 2.0
Sistema de controle de trafego que visa maior segurança de travessia para pedestres.

*/
// Luzes Semaforos vias
int red_1 = 2;
int yel_1 = 3;
int gre_1 = 4;

int red_2 = 7;
int yel_2 = 6;
int gre_2 = 5;

//Luzes semaforo pedestres
int redp_1 = 8;
int grep_1 = 9;

// Botoeiras
int but_1 = 10;
int BOT = digitalRead(but_1);


void setup() {

pinMode(red_1, OUTPUT);
pinMode(yel_1, OUTPUT);
pinMode(gre_1, OUTPUT);

pinMode(red_2, OUTPUT);
pinMode(yel_2, OUTPUT);
pinMode(gre_2, OUTPUT);

pinMode(redp_1, OUTPUT);
pinMode(grep_1, OUTPUT);

pinMode(but_1, INPUT);




}

void loop () {

if (BOT, HIGH); {

digitalWrite(red_1, HIGH);
digitalWrite(red_2, HIGH);
digitalWrite(yel_1, LOW);
digitalWrite(yel_2, LOW);
digitalWrite(gre_1, LOW);
digitalWrite(gre_2, LOW);
delay(500);

digitalWrite(redp_1, LOW);
digitalWrite(grep_1, HIGH);
delay(2000);

digitalWrite(redp_1, HIGH);
digitalWrite(grep_1, LOW);
delay(2000);


}
{
//semaforização


digitalWrite(red_2, HIGH);
digitalWrite(yel_1, LOW);
digitalWrite(red_1, HIGH);
delay(1500);
digitalWrite(red_2, LOW);
digitalWrite(gre_2, HIGH);
delay(5000);
digitalWrite(gre_2, LOW);
digitalWrite(yel_2, HIGH);
delay(1000);
digitalWrite(yel_2, LOW);
digitalWrite(red_2, HIGH);
delay(1000);
digitalWrite(red_1, LOW);
digitalWrite(gre_1, HIGH);
delay(5000);
digitalWrite(gre_1, LOW);
digitalWrite(yel_1, HIGH);
delay(1000);


}
}

Exibições: 3077

Anexos

Responder esta

Respostas a este tópico

Coloca um resistor de pull down entre o botão e a entrada e boa =)

1k está ótimo.

Abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço