LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Projectos Concluídos => Tópico iniciado por: OxyGen em 12 de Maio de 2010, 10:11
-
Semáforo Simples
http://www.youtube.com/watch?v=0hRJI1Og9uw# (http://www.youtube.com/watch?v=0hRJI1Og9uw#)
Código:
// 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);
}
-
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 (http://www.youtube.com/watch?v=IO97oDjMR0g#)
Código:
// 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);
}
}
-
Gostei de ver os progressos ;)