Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Sinal de carro: Verde 5segs Amaredo 2segs Vermelho 5segs Verde ......
- Sinal de Pedestre: Vermelho.
- Se botão acionado:
- Qdo o sinal de carro ficar vermelho. Sinal de pedestre fica Verde 5Segs vermelho
- e carro Verde iniciando o ciclo de carro
- Verde 5segs Amaredo 2segs Vermelho 5segs Verde ......
- Botão : Port 7----- botao ---- Gnd
- LEDs : +5V ---- resistor de +- 1K ------ LED --- Port
- */
- #define LED_VD 2
- #define LED_AM 3
- #define LED_VM 4
- #define PED_VD 5
- #define PED_VM 6
- #define botao 7
- int estadoBotao = 0;
- byte PedestreReq = 0; // Indicador de requeste de pedestre
- unsigned long Flag; // Flag para tempo
- byte LVM = 1; // Flag para indicar condição de Led vermelho
- byte LAM = 0; // Flag para indicar condição de Led amarelo
- byte LVD = 0; // Flag para indicar condição de Led verde
- //----------------------------
- void setup()
- {
- pinMode(LED_VM, OUTPUT);
- pinMode(LED_AM, OUTPUT);
- pinMode(LED_VD, OUTPUT);
- pinMode(PED_VD, OUTPUT);
- pinMode(PED_VM, OUTPUT);
- pinMode(botao, INPUT_PULLUP);
- digitalWrite(LED_VM, LOW);
- digitalWrite(LED_AM, HIGH);
- digitalWrite(LED_VD, HIGH);
- digitalWrite(PED_VM, LOW);
- digitalWrite(PED_VD, HIGH);
- }
- //---------------------------
- void loop()
- {
- if (digitalRead(botao) == LOW) // Se botão + foi apertado
- {
- delay(10); // Delay para evitar bouncing
- if (digitalRead(botao) == LOW) // Se botão + continua apertado
- {
- PedestreReq = 1; // Se pesdestre acionou
- }
- }
- if (LVM == 1) // LED vermelho aceso
- {
- while (PedestreReq == 1) // Enquanto pedestre passando
- {
- digitalWrite(PED_VM, HIGH); // Apaga pedestre vermelho
- digitalWrite(PED_VD, LOW); // Acende pedestre verde
- if (millis() - Flag > 5000) // Se passou 5 segundos
- {
- for (int i = 0; i < 6; i++) // Pisca 5 vezes
- {
- digitalWrite(PED_VD, HIGH); // Apaga pedestre verde
- delay(200);
- digitalWrite(PED_VD, LOW); // Acende pedestre verde
- delay(200);
- }
- digitalWrite(PED_VM, LOW); // Acende pedestre vermelho
- digitalWrite(PED_VD, HIGH); // Apaga pedestre verde
- PedestreReq = 0;
- digitalWrite(LED_VD, HIGH); // Apaga carro vermelho
- digitalWrite(LED_VM, LOW); // Acende carro verde
- LVM = 1; // Liga indicador carro verde aceso
- LAM = 0; // Desliga indicador carro amarelo acesso
- }
- }
- }
- if (LVM == 1) // LED carro vermelho aceso
- {
- if (millis() - Flag > 5000) // Se passou 5 segundos
- {
- digitalWrite(LED_VM, HIGH); // Apaga carro vermelho
- digitalWrite(LED_VD, LOW); // Acende carro verde
- LVM = 0; // Desliga indicador carro vermelho acesso
- LAM = 1; // Liga indicador carro amarelo aceso
- Flag = millis(); // Recupera millis
- }
- }
- if (LAM == 1) // LED carro verde aceso
- {
- if (millis() - Flag > 5000) // Se passou 5 segundos
- {
- digitalWrite(LED_VD, HIGH); // Apaga carro verde
- digitalWrite(LED_AM, LOW); // Acende carro amarelo
- LAM = 0; // Desliga indicador carro amarelo acesso
- LVD = 1; // Liga indicador carro verde aceso
- Flag = millis(); // Recupera millis
- }
- }
- if (LVD == 1) // LED carro amarelo aceso
- {
- if (millis() - Flag > 2000) // Se passou 2 segundos
- {
- digitalWrite(LED_AM, HIGH); // Apaga carro amarelo
- digitalWrite(LED_VM, LOW); // Acende carro vermelho
- LVD = 0; // Desliga indicador carro verde acesso
- LVM = 1; // Liga indicador carro vermelho aceso
- Flag = millis(); // Recupera millis
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement