Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
int ledOne = 13; //Semáforo pedestre = Vermelho int ledTwo = 12; //Semáforo pedestre = Azul (Verde) int ledThree = 11; //Semáforo principal = Vermelho int ledFour = 10; //Amarelo int ledFive = 9; //Azul (Verde) int ledSix = 8; //Semáforo principal secundário = Vermelho int ledSeven = 7; //Amarelo int ledEight = 6; //Azul (Verde) int ledNine = 5; //Semáfaro pedestre secundário = Vermelho int ledTen = 4; //Semáfaro pedestre secundário = Azul (Verde) unsigned long teste = 0; //comparador unsigned long inicial = 3000; //3 segundos de led vermelho unsigned long ledV = 5000; unsigned long ledAm = 5000; unsigned long ledState = 500; unsigned long ledVermS = 42000; //led verde via secundária unsigned long ledVP = 77000; //led verde da via principal int state = HIGH; //comparadores int password = HIGH; int secret = HIGH; int guess = HIGH; void setup() { pinMode (ledOne, OUTPUT); pinMode (ledTwo, OUTPUT); pinMode (ledThree, OUTPUT); pinMode (ledFour, OUTPUT); pinMode (ledFive, OUTPUT); pinMode (ledSix, OUTPUT); pinMode (ledSeven, OUTPUT); pinMode (ledEight, OUTPUT); pinMode (ledNine, OUTPUT); pinMode (ledTen, OUTPUT); digitalWrite(ledOne, HIGH); //todos os leds vermelhos ligados digitalWrite(ledThree, HIGH); digitalWrite(ledSix, HIGH); digitalWrite(ledNine, HIGH); } void loop() { unsigned long testetempo = millis(); //variavel em que o seu valor comça ser contado a partir da hora atual if(guess==HIGH && state==HIGH && testetempo-teste>=inicial){ //se essa condição for verdadeira o tempo dos leds vermelhos ligados tendem a ser somente 3s digitalWrite (ledFive, HIGH); digitalWrite (ledThree, LOW); digitalWrite (ledTen, HIGH); digitalWrite (ledNine, LOW); guess = LOW; //guess muda para desligado para satisfazer a próxima condição, se não ficaria em um loop infinito teste = testetempo; //teste que era igual a 0 passa a ter o mesmo valor de "testetempo" } else if (guess==LOW && state==HIGH && testetempo-teste>=ledVP){ //depois que "guess" for desligado o primeiro "if" não será executado, "elseif" será executado porque a condição é verdadeira digitalWrite (ledFive, LOW); digitalWrite (ledFour, HIGH); digitalWrite (ledTen, LOW); teste = testetempo; //"teste continuará com o mesmo valor de "testetempo" unsigned long tempo = testetempo + 5; //criaremos uma nova variavel com o mesmo valor de "testetempo" que somado +5 para dar o valor certo do tempo do led while(tempo-teste<ledAm){ //enquanto o valor do tempo-teste for menor que 5000 milisegundos (condição verdadeira) if (tempo-teste>=ledState){ //se tempo-teste for maior ou igual a 500 milisegundos (condição verdadeira) if (password==HIGH){ //se for ligado (condição verdadeira) digitalWrite (ledNine, password); //ledNine terá o mesmo estado que o comparador "password" password = LOW; //logo ele passara para desligado e depois ligara denovo para o led vermelho piscar enquanto o led está em amarelo } else{ digitalWrite (ledNine, password); password = HIGH; } ledState = ledState+500; //ledState terá o dobro do seu valor } tempo = millis(); //o valor de "tempo" começara a ser contado a partir de agora } ledState = 500; state = LOW; //state passara para o estado desligado para satisfazer a condição a seguir } else if (guess==LOW && state==LOW && testetempo-teste>=ledAm){ //guess já passou para desligado então a condição é verdadeira digitalWrite (ledThree, HIGH); digitalWrite (ledFour, LOW); digitalWrite (ledTwo, HIGH); digitalWrite (ledOne, LOW); digitalWrite (ledEight, HIGH); digitalWrite (ledSix, LOW); digitalWrite (ledNine, HIGH); digitalWrite (ledTen, LOW); guess = HIGH; //guess sempre vai alterar entre ligado e desligado para satisfazer as condições teste = testetempo; //"teste" voltara a ter o mesmo valor de "testetempo" } else if (secret==HIGH && guess==HIGH && testetempo-teste>=ledVermS){ digitalWrite (ledEight, LOW); digitalWrite (ledSeven, HIGH); digitalWrite (ledTwo, LOW); teste = testetempo; unsigned long ledTempo = testetempo+5; while (ledTempo-teste<ledV){ if (ledTempo-teste>=ledState){ if (password==HIGH){ digitalWrite (ledOne, password); password = LOW; } else { digitalWrite (ledOne, password); password = HIGH; } ledState = ledState+500; } ledTempo = millis(); } ledState = 500; secret = LOW; } else if (secret==LOW && testetempo-teste>=ledV){ digitalWrite (ledSeven, LOW); digitalWrite (ledSix, HIGH); digitalWrite (ledOne, HIGH); digitalWrite (ledTwo, LOW); teste = testetempo; state = HIGH; secret = HIGH; } }
Compartilhar