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?
Tags:
Oi MC, boa tarde.
Modifiquei o seu code para atender sua necessidade.
Veja o se code que escrevi realmente atende.
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
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por