Arduino com um semáforo carro e pedestre (5 LEDs) e um botão do pedestre

Fonte: Wikiversidade

Sistemas e Aplicações Digitais (Lógica e Programação) Robótica


Montar 5 LEDs em um protoboard, cada um com o seu próprio resistor. Colocar um botão para simular o botão do pedestre. Colocar cada LED sendo comandado por uma porta do Arduino. Piscar cada LED usando uma porta do Arduino. Um botão precisa ser acionado e enviar para uma porta do Arduino um sinal com o comando digitalRead.


Veja a montagem na figura do Protoboard com 1 LED e 1 botao. Lembre-se que precisa colocar um resistor para cada LED, senão queima.

Código fonte do Semaforo Completo para o Arduino na lnguagem C++


void setup() {
   // Luzes do Semaforo ligadas aos pinos 13, 12, 11
   pinMode(13, OUTPUT); // Vermelho
   pinMode(12, OUTPUT); // Amarelo
   pinMode(11, OUTPUT); // Verde
   // Luzes do Semaforo do Pedestre ligadas aos pinos 10, 9
   pinMode(10, OUTPUT); // Vermelho do Pedestre
   pinMode( 9, OUTPUT); // Verde do Pedestre
   // Botao do Pedestre
   pinMode( 3, INPUT); // Botão do Pedestre para acionar a travessia
}
void loop() {
   // Verde para os automoveis
   digitalWrite(13, 0); // Verm
   digitalWrite(12, 0); // Amar
   digitalWrite(11, 1); // Verd
   digitalWrite(10, 1); // Vermelho para o Pedestre
   digitalWrite( 9, 0); // Verde do Pedestre apagado
   // Verificar se apertou o botao
   if ( digitalRead(3) == 1 )
      {
      // Amarelo para os automoveis
      digitalWrite(13, 0);
      digitalWrite(12, 1);
      digitalWrite(11, 0);
      delay(1000);
      // Vermelho para os automoveis
      digitalWrite(13, 1);
      digitalWrite(12, 0);
      digitalWrite(11, 0);
      // Verde para os pedestres
      digitalWrite(10, 0);
      digitalWrite( 9, 1);
      delay(150000); // Aguardar o Pedestre atravessar
      // Piscar o Vermelho do Pedestre 10 vezes
      digitalWrite( 9, 0); 
      for (int i=1; i<=10; i++ )
          {
          // Piscando Vermelho para o pedestre
          digitalWrite(10, 1);
          delay(100);
          digitalWrite(10, 0);
          delay(100);
          }
      }
}


O mesmo código fonte pode ser alterado, pois não precisa apagar o que já estava apagado ou acender o que já estava aceso.