collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Semáforo - Simples + Push Button  (Lida 4352 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline OxyGen

  • Mini Robot
  • *
  • Mensagens: 92
  • ET - UA
    • Curto.D ET Blog
Semáforo - Simples + Push Button
« em: 12 de Maio de 2010, 10:11 »
Semáforo Simples



Código:

Código: [Seleccione]
    // set pin Numbers
    int CGL = 11;  // CAR GREEN LIGHT
    int CYL = 12;  // CAR YELLOW LIGHT
    int CRL = 13;  // CAR RED LIGHT
    int PRL = 10;  // PAWN RED LIGHT
    int PGL = 9;   // PAWN GREEN LIGHT

    void verdepeoes(void);

    void setup()
    {
    pinMode(CGL,OUTPUT);
    pinMode(CYL,OUTPUT);
    pinMode(CRL,OUTPUT);
    pinMode(PRL,OUTPUT);
    pinMode(PGL,OUTPUT);

    delay(1000);  // Gerar um atraso no arranque do circuito -> Para melhor Visualização
    digitalWrite(PRL,HIGH);
    digitalWrite(CGL,HIGH);
    digitalWrite(PGL,LOW);  // LEDs por defeito estão no estado LOW. Coloquei assim apenas para garantir o correcto funcionamento.
    digitalWrite(CYL,LOW); // Esta primeira configuração é o estado inicial do circuito, apenas corre uma vez.
    }

    void loop()
    {
    delay(500);
    digitalWrite(CRL,LOW);
    digitalWrite(CGL,HIGH);
    delay(5000);
    digitalWrite(CGL,LOW);
    digitalWrite(CYL,HIGH);
    delay(500);
    digitalWrite(CYL,LOW);
    digitalWrite(CRL,HIGH);
    delay(500);
    verdepeoes();
    }

    void verdepeoes()
    {
    digitalWrite(PGL,HIGH);
    digitalWrite(PRL,LOW);
    delay(3000);                // Começa o verde dos peoes a piscar (PAWN Green Light Starts Blinking)
    digitalWrite(PGL,LOW);
    delay(500);
    digitalWrite(PGL,HIGH);
    delay(500);
    digitalWrite(PGL,LOW);
    delay(500);
    digitalWrite(PGL,HIGH);
    delay(500);                  // Acaba de piscar (Stops Blinking)
    digitalWrite(PGL,LOW);      // Apaga-se (Turn OFF)
    digitalWrite(PRL,HIGH);
    }
« Última modificação: 16 de Maio de 2010, 12:00 por OxyGen »
OxyGen #

Offline OxyGen

  • Mini Robot
  • *
  • Mensagens: 92
  • ET - UA
    • Curto.D ET Blog
Re: Semáforo - Simples + Push Button
« Responder #1 em: 16 de Maio de 2010, 12:04 »
Aqui fica um melhoramento a este código e agora com push button para os peões. Ainda não vi nada na internet que esteja como eu fiz este projecto, uma vez que o semáforo flui com os tempos normais ficando verde e vermelho e apenas diminui os tempos caso alguém carregue no botão... Mais uma vez deixo o vídeo e o código...

Video:



Código:

Código: [Seleccione]
// set pin Numbers
int CGL = 11;  // CAR GREEN LIGHT
int CYL = 12;  // CAR YELLOW LIGHT
int CRL = 13;  // CAR RED LIGHT
int PRL = 9;  // PAWN RED LIGHT
int PGL = 8;   // PAWN GREEN LIGHT
long lastmillis;
int y;
int buttonPin = 7;

void setup()
{
  pinMode(CGL,OUTPUT);
  pinMode(CYL,OUTPUT);
  pinMode(CRL,OUTPUT);
  pinMode(PRL,OUTPUT);
  pinMode(PGL,OUTPUT);

  delay(1000);  // Gerar um atraso no arranque do circuito -> Para melhor Visualização
  digitalWrite(PRL,HIGH);
  digitalWrite(CGL,HIGH);
  digitalWrite(PGL,LOW);  // LEDs por defeito estão no estado LOW. Coloquei assim apenas para garantir o correcto funcionamento.
  digitalWrite(CYL,LOW);
}

void loop()
{
    digitalWrite(PRL,HIGH);
    delay(500);
    digitalWrite(CRL,LOW);
    digitalWrite(CGL,HIGH);
  {
    y = digitalRead(buttonPin); 
    lastmillis = millis();
  }
    while((millis()-lastmillis) <2000);
   
    if(y==HIGH)
    {   
    digitalWrite(CGL,LOW);
    digitalWrite(CYL,HIGH);
    delay(500);
    digitalWrite(CYL,LOW);
    digitalWrite(CRL,HIGH);
    delay(500);
    digitalWrite(PGL,HIGH);
    digitalWrite(PRL,LOW);
    delay(5000);                // Começa o verde dos peoes a piscar
    digitalWrite(PGL,LOW);
    delay(500);
    digitalWrite(PGL,HIGH);
    delay(500);
    digitalWrite(PGL,LOW);
    delay(500);
    digitalWrite(PGL,HIGH);
    delay(500);                  // Acaba de piscar
    digitalWrite(PGL,LOW);
    }
    else
{
  delay(5000);
  digitalWrite(CGL,LOW);
    digitalWrite(CYL,HIGH);
    delay(500);
    digitalWrite(CYL,LOW);
    digitalWrite(CRL,HIGH);
    delay(500);
    digitalWrite(PGL,HIGH);
    digitalWrite(PRL,LOW);
    delay(3000);                // Começa o verde dos peoes a piscar
    digitalWrite(PGL,LOW);
    delay(500);
    digitalWrite(PGL,HIGH);
    delay(500);
    digitalWrite(PGL,LOW);
    delay(500);
    digitalWrite(PGL,HIGH);
    delay(500);                  // Acaba de piscar
    digitalWrite(PGL,LOW);

}
OxyGen #

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: Semáforo - Simples + Push Button
« Responder #2 em: 16 de Maio de 2010, 15:38 »
Gostei de ver os progressos ;)