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
- Aumente o tempo de passagem de pedestres;
- Deixe as piscadas do LED vermelho do farol para pedestres mais lenta;
- 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
- Aumente o tempo de passagem de pedestres;
- Deixe as piscadas do LED vermelho do farol para pedestres mais lenta;
- 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.
Sou a Amanda Da Silva, gostei muito do seu artigo tem
muito conteúdo de valor parabéns nota 10 gostei muito.
Olá Amanda, tudo bem? Muito obrigado pelo feedback 🙂 Ficamos felizes que tenha gostado.