Semáforo interativo

1

 

Neste projecto irão ser recriados dois semáforos: um para carros e outro para peões. No caso do semáforo dos peões existe um botão de pressão utilizado pelos mesmos para solicitar a travessia da rua. O Arduino reagirá quando o botão for pressionado, alterando o estado das luzes para que os carros parem e os peões possam atravessar em segurança.

Material:

2 LEDs vermelhos;
2 LEDs verdes;
1 LED amarelo
5 resistência de 150Ω;
1 botão de pressão.

Montagem:

2

 

A montagem é feita conforme mostra a figura anterior.É necessário relembrar que o Arduino não deve estar conectado aquando da montagem do circuito.

Código Arduino:


int carRed = 12;    // estabelece o semáforo para carros
int carYellow = 11;
int carGreen = 10;
int pedRed = 9;     // estabelece o semáforo para peões
int pedGreen = 8;
int button = 2;    // pino do botão
int crossTime = 5000;     // tempo para os peões atravessarem
unsigned long changeTime;    // tempo desde que o botão foi pressionado

void setup() {
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(button, INPUT);

// acende a luz verde
digitalWrite(carGreen, HIGH);
digitalWrite(pedRed, HIGH);
}

void loop() {
int state = digitalRead(button);

/* verifica se o botão foi pressionado e se passaram 5 segundos desde a última vez que isso aconteceu */

if (state == HIGH && (millis() - changeTime) > 5000) {
// Chama a função para alterar as luzes
changeLights();
}
}

void changeLights() {
digitalWrite(carGreen, LOW);    // apaga o verde
digitalWrite(carYellow, HIGH);    // acende o amarelo
delay(2000);      // espera 2 segundos
digitalWrite(carYellow, LOW);  // apaga o amarelo
digitalWrite(carRed, HIGH);   // acende o vermelho
delay(1000);    // espera 1 segundo, por segurança
digitalWrite(pedRed, LOW);  // apaga o vermelho dos peões
digitalWrite(pedGreen, HIGH);   // acende o verde dos peões
delay(crossTime);    // espera por um intervalo de tempo predefinido

// pisca o verde dos peões
for (int x=0; x<10; x++) {
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
}

// acende o vermelho dos peões
digitalWrite(pedRed, HIGH);
delay(500);
digitalWrite(carYellow, HIGH);    // acende o amarelo
digitalWrite(carRed, LOW);     // apaga o vermelho
delay(1000);
digitalWrite(carGreen, HIGH);   // acende o verde
digitalWrite(carYellow, LOW);   // apaga o amarelo

// regista o tempo desde a última alteração no semáforo
changeTime = millis();
}

Agora pessoal, é só pegar no vosso arduino, dar uma vista de olhos a este tutorial e começar a desenvolver o vosso projecto! Se ainda não tiveres o material necessário para o projecto, encontra-o aqui em Boxelectronica.

Comentários no Facebook