Skip to content

Instantly share code, notes, and snippets.

@VycktorStark
Created June 8, 2020 18:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save VycktorStark/7d2f897902f5ba9d9dd171156c274a7f to your computer and use it in GitHub Desktop.
Save VycktorStark/7d2f897902f5ba9d9dd171156c274a7f to your computer and use it in GitHub Desktop.
Cruzamento de 2 semafaro
#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