Created
June 8, 2020 18:51
-
-
Save VycktorStark/7d2f897902f5ba9d9dd171156c274a7f to your computer and use it in GitHub Desktop.
Cruzamento de 2 semafaro
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define red_esquerdo 2 | |
#define red_direito 13 | |
#define yellow_esquerdo 3 | |
#define yellow_direito 12 | |
#define green_esquerdo 4 | |
#define green_direito 11 | |
#define botao_red 10 | |
#define botao_white 9 | |
#define postes 8 | |
void setup(){ | |
pinMode(red_esquerdo,OUTPUT); pinMode(yellow_esquerdo,OUTPUT); pinMode(green_esquerdo,OUTPUT); | |
pinMode(red_direito,OUTPUT); pinMode(yellow_direito,OUTPUT); pinMode(green_direito,OUTPUT); | |
pinMode(botao_red,INPUT);pinMode(botao_white,INPUT); | |
pinMode(postes,OUTPUT); | |
} | |
const int tempodecarregamento=4000; | |
int esperando, ciclo, run_time=0; | |
void semafaro_on(){ | |
switch(ciclo) { | |
case 0: | |
digitalWrite(yellow_direito,LOW); //apaga o led amarelo (sinal direito) | |
digitalWrite(red_direito,HIGH); //acende o led vermelho (sinal direito) | |
digitalWrite(red_esquerdo,LOW); //apaga o led vermelho (sinal esquerdo) | |
digitalWrite(green_esquerdo,HIGH); //acende o led verde (sinal esquerdo) | |
esperando=6; break; // Espera de 6 segundos e saindo. . . | |
case 1: | |
digitalWrite(green_esquerdo,LOW); //apaga o led verde (sinal esquerdo) | |
digitalWrite(yellow_esquerdo,HIGH); //acende o led amarelo (sinal esquerdo) | |
esperando=3; break; // Espera de 1.5 segundos e saindo. . . | |
case 2: | |
digitalWrite(yellow_esquerdo,LOW); //apaga o led amarelo (sinal esquerdo) | |
digitalWrite(red_esquerdo,HIGH); //acende o led vermelho (sinal esquerdo) | |
digitalWrite(red_direito,LOW); //apaga o led vermelho (sinal direito) | |
digitalWrite(green_direito,HIGH); //acende o led verde (sinal direito) | |
esperando=6; break; // Espera de 6 segundos e saindo. . . | |
case 3: | |
digitalWrite(green_direito,LOW); //apaga o led verde (sinal direito) | |
digitalWrite(yellow_direito,HIGH); //acende o led amarelo (sinal direito) | |
esperando=3; break; // Espera de 1.5 segundos e saindo. . . | |
} | |
run_time++; | |
if (run_time >=esperando){ run_time=0; ciclo++; | |
if (ciclo>4){ciclo=0;}} | |
delay(tempodecarregamento/2); // Dando o um tempo para iniciar o loop novamente | |
} | |
void semafaro_off(){ | |
digitalWrite(green_esquerdo,LOW);digitalWrite(yellow_esquerdo,LOW);digitalWrite(red_esquerdo,LOW); | |
digitalWrite(green_direito,LOW);digitalWrite(yellow_direito,LOW);digitalWrite(red_direito,LOW); | |
} | |
boolean estado, var, var2 =0; | |
void BOTAO_RED(){ var=digitalRead(botao_red); // ler o valor enviado pelo botão: "HIGH" ou "LOW" | |
if ((var == HIGH) && (var2 == LOW)) { estado = 1 - estado; delay(1); } // de-bouncing | |
var2=var; | |
if (estado == 1) | |
{semafaro_on();} // liga o led | |
else | |
{semafaro_off();} // desliga o led | |
} | |
boolean estado1, var3, var4, sensor,valorSensor=0; | |
void BOTAO_WHITE(){ var3=digitalRead(botao_white); int valorSensor = analogRead(sensor); // ler o valor enviado pelo botão: "HIGH" ou "LOW", e o valor do sensor | |
if ((var3 == HIGH) && (var4 == LOW)) { estado1 = 1 - estado1; delay(1); } // de-bouncing | |
var4=var3; | |
if (estado1 == 1) | |
{digitalWrite(postes,HIGH);} // liga o led | |
if (estado1 != 1) | |
{digitalWrite(postes, LOW);} // desliga o led | |
if (valorSensor < 5) | |
{digitalWrite(postes,HIGH);} // liga o led | |
//if | |
//{digitalWrite(postes, LOW);} // desliga o led | |
} | |
void loop(){ | |
BOTAO_WHITE(); | |
BOTAO_RED(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment