Pessoal boa tarde, estou tentando criar um programa para controlar o tráfego de um cruzamento em uma saída de garagem. A saída dessa garagem é uma rampa composta por 3 sensores.

Quando ativo o primeiro sensor, o sinal lá de fora tem que ir de verde, para amarelo e depois vermelho. O semáforo só volta a ficar verde quando houver uma saída no terceiro sensor.

A situação inicial deve ser com o semáforo verde.

Só lembrando que o semáforo fica na parte externa, depois da saída.

Por enquanto meu código é este:

int ledV = 1; // define led verde no pino 1
int ledA = 2 ;
int ledVM = 3 ;
int ss1 = 4; // define sensor no pino 4
int ss2 = 5;
int ss3 = 6;
int mSS1 = 0; // variavel para armazenar valor do ss1
int mSS2 = 0;
int mSS3 = 0;
int mLedVM = 0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int x = 0;

void setup() { //Configura parâmetros

pinMode(ledV,OUTPUT);
pinMode(ledA,OUTPUT);
pinMode(ledVM,OUTPUT);
pinMode(ss1,INPUT);
pinMode(ss2,INPUT);
pinMode(ss3,INPUT);



}

void loop(){ //Programa principal

mSS1 = digitalRead(ss1); // ler o valor enviado pelo primeiro sensor e salva na memória do sensor 1
mSS2 = digitalRead(ss2); // ler o valor enviado pelo primeiro sensor e salva na memória do sensor 2
mSS3 = digitalRead(ss3); // ler o valor enviado pelo primeiro sensor e salva na memória do sensor 2


if ((mSS1 == 0)&&(mLedVM == 0)){
digitalWrite(ledV, HIGH); // liga o led verde
}


else {

if (mSS1 == 1) {
mLedVM = 1;

digitalWrite(ledV, LOW); // desliga o led verde
digitalWrite(ledA, HIGH); // liga o led amarelo
delay(1000); // delay em ms
digitalWrite(ledA, LOW); // desliga led amarelo
digitalWrite(ledVM, HIGH); // liga o led vermelho
delay(2000); // delay em ms
mSS3 = 1;
} // Fim if
}
}

} // Fim else
} // Fim loop

Como proceder?

Exibições: 400

Responder esta

Respostas a este tópico

Oi MC,  boa tarde.

Modifiquei o seu code para atender sua necessidade.

Veja o se code que escrevi realmente atende.

http://pastebin.com/1CHFfZah

Veja no desenho junto ao code como devem ser as ligações dos sensores e dos LEDs.

Rui

Não deu certo não.

Neste seu código, os leds verde e vermelho ficam acesos por padrão e o amarelo já começa piscando.

Estou testando o projeto criando no simulador circuits.io

MC.

Voce ligou igual ao desenho?

ou ligou com seu esquema antigo?

No Teste que fiz não usei os LED nos Port 1 2 e 3,

pois o 1 é usado para o TX, o 2 preferencialmente para o interrupt 0

e o 3 preferencialmente para o interrupt 1.

Usei LEDs em  4, 5 ,6, e sensores em 10 , 11 e 12.

E funcionou perfeitamente.

LEDs, ligados ao +5V por um resistor de 1K.

Sensores (Botões Normal Aberto), ligados do pino ao GND.

Postei a versão que funcionou aqui, com o respectivo desenho.

no mesmo link   http://pastebin.com/1CHFfZah

Rui

Obrigado Rui. Posso não ter percebido isso. Te retorno assim que eu testar. Você usa qual simulador?

Oi MC, eu não simulo.

Eu monto mesmo.

Rui

Entendi seu código, mas o que eu realmente preciso é saber como trabalhar com um pulso lógico de descida agora. Por enquanto, estou usando o código antigo mesmo com um trecho que escrevi a mais, mas obrigado pelas dicas referente às pinagens, eu não sabia.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço