Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Na declaração das cores, foi-se utilizado o padrão: XC, sendo X a rua e sendo C a cor.
- Para a definição da cor, utiliza-se o padrão R = Vermelho, Y = Amarelo, G = Verde*/
- //Declarando os pinos de saída das luzes do sinal da rua A
- int SinalAR=2;
- int SinalAY=3;
- int SinalAG=4;
- //Declarando os pinos de saída das luzes do sinal da rua B
- int SinalBR=8;
- int SinalBY=9;
- int SinalBG=10;
- //Declarando os pinos de saída das luzes do sinal de pedestres
- int PedR=11;
- int PedG=12;
- //Declara-se o pino de entrada do sinal do botão
- int botao=13;
- //É utilizado para contar o tempo que o sinal A verde permaneceu ligado no código, até que tenham-se passado 12 segundos.
- int intervalo = 0;
- void setup() {
- // Declaração dos modos de cada um dos pinos:
- pinMode(SinalAR, OUTPUT);
- pinMode(SinalAY, OUTPUT);
- pinMode(SinalAG, OUTPUT);
- pinMode(SinalBR, OUTPUT);
- pinMode(SinalBY, OUTPUT);
- pinMode(SinalBG, OUTPUT);
- pinMode(PedR, OUTPUT);
- pinMode(PedG, OUTPUT);
- pinMode(botao, INPUT);
- }
- void loop() {
- //Funcionamento padrão do conjunto de Sinais.
- digitalWrite(PedR, HIGH);
- digitalWrite(SinalBR, HIGH);
- digitalWrite(SinalAG, HIGH);
- intervalo=0;
- while (intervalo < 1200){
- //Lê o estado do botão, e, caso retorne o valor HIGH, realiza o ciclo desejado.
- if (digitalRead(botao) == HIGH){
- //É necessário que tenha se passado 34 segundos desde o último pressionamento do botão, então só se precisa ler o estado do botão.
- digitalWrite(SinalAG, LOW);
- digitalWrite(SinalAY, HIGH);
- delay(3000);
- digitalWrite(PedR, LOW);
- digitalWrite(SinalBR, LOW);
- digitalWrite(SinalAY, LOW);
- digitalWrite(SinalAR, HIGH);
- digitalWrite(SinalBG, HIGH);
- digitalWrite(PedG, HIGH);
- delay(5000);
- digitalWrite(SinalBG, LOW);
- digitalWrite(SinalBY, HIGH);
- //Liga-se o segundo sinal de pedestres para sinalizar atenção)
- digitalWrite(PedR, HIGH);
- delay(3000);
- //Retorna ao funcionamento normal após 11 segundos.
- digitalWrite(PedG, LOW);
- digitalWrite(SinalBY, LOW);
- digitalWrite(PedR, HIGH);
- digitalWrite(SinalBR, HIGH);
- digitalWrite(SinalAG, HIGH);
- delay(12000);
- //Sai da função, continuando para o sinal A Amarelo.
- intervalo = 1200;
- }
- delay(10);
- intervalo=intervalo+1;
- }
- }
- digitalWrite(SinalAG, LOW);
- digitalWrite(SinalAY, HIGH);
- delay(3000);
- digitalWrite(SinalAY, LOW);
- digitalWrite(SinalBR, LOW);
- digitalWrite(PedR, LOW);
- digitalWrite(SinalAR, HIGH);
- digitalWrite(SinalBG, HIGH);
- digitalWrite(PedG, HIGH);
- delay(5000);
- digitalWrite(SinalBG, LOW);
- digitalWrite(SinalBY, HIGH);
- digitalWrite(PedR, HIGH);
- delay(3000);
- digitalWrite(PedG, LOW);
- digitalWrite(SinalBY, LOW);
- digitalWrite(SinalAR, LOW);
- }
Add Comment
Please, Sign In to add comment