2. Projeto Semáforo

Nesta aula, vamos desenvolver um projeto que é aplicado ao nosso dia-a-dia  utilizando parte do que aprendemos na aula passada, vamos desenvolver um semáforo utilizando LEDs, o interessante desse projeto é exatamente essa interação de toda a rotina que estamos desenvolvendo com coisas realmente aplicável ao seu dia-a-dia, e o conhecimento teórico de como os dispositivos vistos em nosso cotidiano funcionam.

O que você vai aprender?

Você vai aprender a ligar múltiplos LEDs as portas digitais da Orange One e vai conseguir desenvolver um pouco mais de prática com a protoboard já que desta vez a quantidade de componentes ligados é bem superior em relação ao projeto antesrior.

Conseguiremos desenvolver um pouco mais o raciocínio lógico necessário para a programação, considerando que a codificação deste projeto também é mais extensa tanto em quantidade de portas quanto em sequência de eventos.

Objetivos:

  1 – Desenvolvimento de uma lógica de simulação de semáforo para veículos que possuí:

  • Luz verde, para indicar que é permitido que o veículo passe pela faixa de pedestre;
  • Luz amarela, para indicar que é permitido que o veículo passe pela faixa, porém deve-se ficar atento pois logo o semáforo ficará vermelho;
  • Luz vermelha, para indicar que não é permitida a passagem de veículos.

  2 – Desenvolvimento de uma lógica de simulação de semáforo para pedestres que possuí:

  • Luz verde, para indicar ao pedestre que é possível atravessar a faixa de pedestres com segurança;
  • Luz vermelha, para indicar ao pedestre que é preciso aguardar até que seja permitida a passagem.

Lista de Materiais

  • 2 – LEDs vermelhos;
  • 2 – LEDs verdes;
  • 1 – LED amarelo;
  • 5 – Resistores de 330 Ohms;
  • 1 – Geek plate 400 com protoboard;
  • 11 – Jumpers macho-macho;
  • 1 – Plataforma de prototipagem Orange One ou Arduino Uno;
  • 1 – Cabo USB.

Circuito

Hora de colocar a mão na massa! neste circuito os LEDs são ligados às portas da Orange One, da porta 2 até a porta 6, num total de 5 LEDs para cada LED 1 resistor de 330 Ohms, como na primeiro você precisará de atenção para ligar os jumper de forma correta na protoboard porém este projeto possuí mais conexão do que o projeto anterior, então tente ligar os componentes e jumpers de forma organizada na protoboard para evitar que você se perca em alguma ligação

Codificando

Essa é a sugestão de código, o funcionamento é simples e dividido em estágios.

  • Primeiro estágio: o semáforo para veículos fica vermelho e o de pedestre fica verde e após cinco segundos fica vermelho “piscante” indicando que logo o semáforo para veículos irá abrir;
  • Segundo estágio: o semáforo para veículos fica verde e o semáforo para pedestres fica vermelho durante cinco segundos;
  • Terceiro estágio: o semáforo para veículos fica amarelo indicando atenção, pois logo ficará vermelho, enquanto o semáforo para pedestres continua vermelho, pois não há alteração de estado de nenhum LED, esse estágio dura três segundos.
/*
 * Código exemplo Semáforo
 * Autor:Orange Maker
 * Declaração das variaveis contendo a numeração das portas utilizadas na Orange One
*/
 
 
int led_carro_vermelho = 2;
int led_carro_amarelo = 3;
int led_carro_verde = 4;
int led_pedestre_vermelho = 5;
int led_pedestre_verde = 6;
     
// configurando as portas correspondentes aos respectivos
// leds como saídas digitais
 
void setup() {
 pinMode(led_carro_vermelho, OUTPUT);
 pinMode(led_carro_amarelo, OUTPUT);
 pinMode(led_carro_verde, OUTPUT);
 pinMode(led_pedestre_vermelho, OUTPUT);
 pinMode(led_pedestre_verde, OUTPUT);
}
 
// Lógica de funcionamento
 
void loop() {
  // Primeiro estágio
  // para carro
  digitalWrite(led_carro_amarelo, LOW);
  digitalWrite(led_carro_vermelho, HIGH);
  // Passa pedestre
  digitalWrite(led_pedestre_vermelho, LOW);
  digitalWrite(led_pedestre_verde, HIGH);
  delay(5000);
  digitalWrite(led_pedestre_verde, LOW);
   
  for(int i = 0; i < 4; i++){
    digitalWrite(led_pedestre_vermelho,HIGH);
    delay(200);
    digitalWrite(led_pedestre_vermelho,LOW);
    delay(200);
    }
    // Segundo estágio
 
// anda carro
digitalWrite(led_carro_vermelho, LOW);
digitalWrite(led_carro_verde, HIGH);
// para pedestre
digitalWrite(led_pedestre_vermelho, HIGH);
digitalWrite(led_pedestre_verde, LOW);
delay(5000);// Terceiro estágio
// atenção carro
digitalWrite(led_carro_verde, LOW);
digitalWrite(led_carro_amarelo, HIGH);
delay(3000);
}

O que há de novo?

Além de tudo que vimos na aula a respeito da sequência lógica e das funções principais do Arduino, vemos que há uma estrutura nova, chamada laço for, esse laço é uma estrutura que serve para repetir a codificação contida nela, e estamos utilizando-a para fazer com que a lâmpada vermelha do farol para pedestres pisque quatro vezes antes de ficar acesa diretamente.

Como funciona o laço For?

O laço for é uma laço de repetição que ao ser iniciar repete o que estiver contido nele até que a condição estabelecida dentro dos parênteses seja satisfeita, podemos utiliza-lo da seguinte forma:

// exemplo de código laço for
 
for(int i = 0; i < 4; i++){
  digitalWrite(led_pedestre_vermelho,HIGH);
  delay(200);
  digitalWrite(led_pedestre_vermelho,LOW);
  delay(200);
}

Primeiro cria-se uma variável e o valor que você precisa que essa variável inicie, depois se implementa a condição para que o laço fique se repetindo que no nosso caso é quanto a variável que criamos for menor que o valor 4, depois nós definimos o que acontecerá com essa variável a cada vez que o laço é executado, que em nosso caso nós estamos incrementando a variável. Dessa forma, com a variável iniciando com o valor 0, após 4 execuções da estrutura contida no laço ele pra de ser executado, e só reinicia na próxima vez que ele é chamado.

Desafios e Alterações

  1. Aumente o tempo de passagem de pedestres;
  2. Deixe as piscadas do LED vermelho do farol para pedestres mais lenta;
  3. Mantenha as quatro piscadas do farol vermelho para pedestres porém retirando o laço for.

Possíveis erros

  • As cores acendem na ordem errada

Confira as ligações e veja se há algum pino ligado em LEDs diferentes do que está definido no começo do programa, nas declarações de variáveis que contém a numeração das portas da Orange One.

2. Projeto Semáforo

Nesta aula, vamos desenvolver um projeto que é aplicado ao nosso dia-a-dia utilizando parte do que aprendemos na aula passada, vamos desenvolver um semáforo utilizando LEDs, o interessante desse projeto é exatamente essa interação de toda a rotina que estamos desenvolvendo com coisas realmente aplicáveis ao seu dia-a-dia, e o conhecimento teórico de como os dispositivos vistos em nosso cotidiano funcionam.

O que você vai aprender?

Você vai aprender a ligar múltiplos LEDs as portas digitais da Orange One e vai conseguir desenvolver um pouco mais de prática com a protoboard já que desta vez a quantidade de componentes ligados é bem superior em relação ao projeto anterior.

Conseguiremos desenvolver um pouco mais o raciocínio lógico necessário para a programação, considerando que a codificação deste projeto também é mais extensa tanto em quantidade de portas quanto em sequência de eventos.

Objetivos:

  1 – Desenvolvimento de uma lógica de simulação de semáforo para veículos que possuí:

  • Luz verde, para indicar que é permitido que o veículo passe pela faixa de pedestre;
  • Luz amarela, para indicar que é permitido que o veículo passe pela faixa, porém deve-se ficar atento pois logo o semáforo ficará vermelho;
  • Luz vermelha, para indicar que não é permitida a passagem de veículos.

  2 – Desenvolvimento de uma lógica de simulação de semáforo para pedestres que possuí:

  • Luz verde, para indicar ao pedestre que é possível atravessar a faixa de pedestres com segurança;
  • Luz vermelha, para indicar ao pedestre que é preciso aguardar até que seja permitida a passagem.

Lista de Materiais

  • 2 – LEDs vermelhos;
  • 2 – LEDs verdes;
  • 1 – LED amarelo;
  • 5 – Resistores de 330 Ohms;
  • 1 – Geek plate 400 com protoboard;
  • 11 – Jumpers macho-macho;
  • 1 – Plataforma de prototipagem Orange One ou Arduino Uno;
  • 1 – Cabo USB.

Circuito

Hora de colocar a mão na massa! neste circuito os LEDs são ligados às portas da Orange One, da porta 2 até a porta 6, num total de 5 LEDs para cada LED 1 resistor de 330 Ohms, como na primeiro você precisará de atenção para ligar os jumper de forma correta na protoboard porém este projeto possuí mais conexão do que o projeto anterior, então tente ligar os componentes e jumpers de forma organizada na protoboard para evitar que você se perca em alguma ligação

Codificando

Essa é a sugestão de código, o funcionamento é simples e dividido em estágios.

  • Primeiro estágio: o semáforo para veículos fica vermelho e o de pedestre fica verde e após cinco segundos fica vermelho “piscante” indicando que logo o semáforo para veículos irá abrir;
  • Segundo estágio: o semáforo para veículos fica verde e o semáforo para pedestres fica vermelho durante cinco segundos;
  • Terceiro estágio: o semáforo para veículos fica amarelo indicando atenção, pois logo ficará vermelho, enquanto o semáforo para pedestres continua vermelho, pois não há alteração de estado de nenhum LED, esse estágio dura três segundos.
/*
 * Código exemplo Semáforo
 * Autor:Orange Maker
 * Declaração das variaveis contendo a numeração das portas utilizadas na Orange One
*/
 
 
int led_carro_vermelho = 2;
int led_carro_amarelo = 3;
int led_carro_verde = 4;
int led_pedestre_vermelho = 5;
int led_pedestre_verde = 6;
     
// configurando as portas correspondentes aos respectivos
// leds como saídas digitais
 
void setup() {
 pinMode(led_carro_vermelho, OUTPUT);
 pinMode(led_carro_amarelo, OUTPUT);
 pinMode(led_carro_verde, OUTPUT);
 pinMode(led_pedestre_vermelho, OUTPUT);
 pinMode(led_pedestre_verde, OUTPUT);
}
 
// Lógica de funcionamento
 
void loop() {
  // Primeiro estágio
  // para carro
  digitalWrite(led_carro_amarelo, LOW);
  digitalWrite(led_carro_vermelho, HIGH);
  // Passa pedestre
  digitalWrite(led_pedestre_vermelho, LOW);
  digitalWrite(led_pedestre_verde, HIGH);
  delay(5000);
  digitalWrite(led_pedestre_verde, LOW);
   
  for(int i = 0; i < 4; i++){
    digitalWrite(led_pedestre_vermelho,HIGH);
    delay(200);
    digitalWrite(led_pedestre_vermelho,LOW);
    delay(200);
    }
    // Segundo estágio
 
// anda carro
digitalWrite(led_carro_vermelho, LOW);
digitalWrite(led_carro_verde, HIGH);
// para pedestre
digitalWrite(led_pedestre_vermelho, HIGH);
digitalWrite(led_pedestre_verde, LOW);
delay(5000);// Terceiro estágio
// atenção carro
digitalWrite(led_carro_verde, LOW);
digitalWrite(led_carro_amarelo, HIGH);
delay(3000);
}

O que há de novo?

Além de tudo que vimos na aula anterior a respeito da sequência lógica e das funções principais do Arduino, vemos que há uma estrutura nova, chamada laço for, esse laço é uma estrutura que serve para repetir a codificação contida nela, e estamos utilizando-a para fazer com que a lâmpada vermelha do farol para pedestres pisque quatro vezes antes de ficar acesa diretamente.

Como funciona o laço For?

O laço for é uma laço de repetição que ao ser iniciar repete o que estiver contido nele até que a condição estabelecida dentro dos parênteses seja satisfeita, podemos utiliza-lo da seguinte forma:

// exemplo de código laço for
 
for(int i = 0; i < 4; i++){
  digitalWrite(led_pedestre_vermelho,HIGH);
  delay(200);
  digitalWrite(led_pedestre_vermelho,LOW);
  delay(200);
}

Primeiro cria-se uma variável e o valor que você precisa que essa variável inicie, depois se implementa a condição para que o laço fique se repetindo que no nosso caso é quanto a variável que criamos for menor que o valor 4, depois nós definimos o que acontecerá com essa variável a cada vez que o laço é executado, que em nosso caso nós estamos incrementando a variável. Dessa forma, com a variável iniciando com o valor 0, após 4 execuções da estrutura contida no laço ele para de ser executado, e só reinicia na próxima vez que ele é chamado.

Desafios e Alterações

  1. Aumente o tempo de passagem de pedestres;
  2. Deixe as piscadas do LED vermelho do farol para pedestres mais lenta;
  3. Mantenha as quatro piscadas do farol vermelho para pedestres porém retirando o laço for.

Possíveis erros

  • As cores acendem na ordem errada

Confira as ligações e veja se há algum pino ligado em LEDs diferentes do que está definido no começo do programa, nas declarações de variáveis que contém a numeração das portas da Orange One.

2 comentários em “Starter Kit Maker: Semáforo”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Ajuda no chat
Enviar via WhatsApp