Você está na página 1de 2

// Projeto 4 - Semforo Interativo

int carro_red = 12; // Nessa Parte da Programao


int carro_yellow = 11; // Nomeei todas as Variveis
int carro_green = 10;
int pedestre_red = 9;
int pedestre_green = 8;
int botao = 7;
int pedestre_tempo = 5000;
unsigned long botao_tempo;
void setup()
{
pinMode(carro_red, OUTPUT); // Dentro do setup()
pinMode(carro_yellow, OUTPUT); // Declarei as Variaveis nomeadas
pinMode(carro_green, OUTPUT); // como as portas do Ardino
pinMode(pedestre_red, OUTPUT); // entrada ou sada de dados
pinMode(pedestre_green, OUTPUT);
pinMode(botao, INPUT);
digitalWrite(carro_green, HIGH); // Como essa funo s acontece 1 vez
digitalWrite(pedestre_red, HIGH);// ao ligar o led verde do carro e o vermelho
do pedestre acendem direto
}
void loop()
{
int start=digitalRead(botao); // Declarei um scopo start para poder analiza
r o boto
if(start==HIGH&&(millis()-botao_tempo)>5000)// Na condio Si o boto start estiver
no nivel alto e
{ // o tempo de millis menos o boto_t
empo for menor que
troca_luz(); // 5 segundos, ir executar a funo tro
a_luz()
}
} // termina a funo do loop e renicia a funo
void troca_luz() // Nome da Funo que foi criada
{ // Quando o boto for acionado na funo ante
rior
digitalWrite(carro_green, LOW); // o LED para os carro apaga e muda
digitalWrite(carro_yellow, HIGH); // para o amarelo
delay(2000); // e espera por 2 segundos
digitalWrite(carro_yellow, LOW); // e logo em seguida apaga o LED amarel
o e muda
digitalWrite(carro_red, HIGH); // para o LED vermelho
delay(1000); // Espera por 1 segundo para que
digitalWrite(pedestre_red, LOW); // o LED dos pedestre vermelho apague
digitalWrite(pedestre_green, HIGH); // E acende o LED verde dos pedestres
delay(pedestre_tempo); // Pelo tempo que foi declarado no inic
io da programao
for (int x=0; x<10; x++) // Criei uma condio e um scopo local x qu
e inicia com 0
{ // e que se x for menor que 10, ir somar
1 at atingir o valor 10
digitalWrite(pedestre_green, HIGH); // Essa parte da programao que alertem os
pedestres que o tempo
delay(250); // est acabando e com isso o LED verde i
r ficar piscando a cada
digitalWrite(pedestre_green, LOW); // 250ms
delay(250);
}
digitalWrite(pedestre_red, HIGH); // Depois que para de pisca o sinal ver
de dos pedestres
delay(500); // o vermelho ir acender e esperar 0,5 s
egundo
digitalWrite(carro_yellow, HIGH); // o sinal vermelho do carro apagar e a
cende o amarelo
digitalWrite(carro_red, LOW); // esperando por 1 segundo
delay(1000);
digitalWrite(carro_green, HIGH); // O LED muda de amarelo para verde
digitalWrite(carro_yellow, LOW);
botao_tempo=millis(); // E espera ate que o boto seja pressionado de
novo em um tempo de 49 dias
}