collapse

* Links de Robótica

* Posts Recentes

Procuro resistências 220 Ohm de 1% por brunus
[Hoje às 15:50]


Package de cond 10uF 35V smd? por KammutierSpule
[Hoje às 11:19]


Printer 3D barata por almamater
[Hoje às 09:27]


Videos hipnoticos de mecanica industrial por TigPT
[Hoje às 00:07]


FPV Drone Racing? por brunus
[Hoje às 00:00]


Decodificar cabo por Hugu
[Ontem às 23:11]


Ajuda para replicar e reparar um Dimmer por brunus
[30 de Novembro de 2016, 23:23]


Adaptar impressora 3D a Drill Maschine por Hugu
[30 de Novembro de 2016, 23:20]


Módulo gsm por dio123
[30 de Novembro de 2016, 13:39]


RAM SO-DIMM 256 MB por Hugu
[29 de Novembro de 2016, 22:52]

Autor Tópico: Semáforo - Simples + Push Button  (Lida 1845 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

Small | Large


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:

Traffic Light With Button Small | Large


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.159
    • Tiago Rodrigues
Re: Semáforo - Simples + Push Button
« Responder #2 em: 16 de Maio de 2010, 15:38 »
Gostei de ver os progressos ;)