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);
}
}
Tags:
Coloca um resistor de pull down entre o botão e a entrada e boa =)
1k está ótimo.
Abraço.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por