Buscar

5ª Experiência semáforo interativo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

5ª Experiência – Semáforo Interativo 
A experiência anterior será utilizada para incluir um farol de pedestre e um botão, 
que deverá ser pressionado pelos pedestres para solicitar a travessia da rua. Feito 
isso o Arduino atenderá a solicitação alterando o estado das luzes para que os 
carros parem e os pedestres possam atravessar com segurança. 
Dessa forma você vai interagir com o Arduino, fazendo-o responder ao estado de 
um botão que está sendo observado ou melhor quando o estado do botão for 
alterado. Neste projeto, você também aprendera como criar suas próprias funções 
dentro do código. 
Componentes necessários: 
2 LEDs vermelhos difusos 
1 LED amarelo difuso 
2 LEDs verdes difusos 
6 Resistor de 150 ohms 
1 resistor de 10K ohms 
1 Botão 
Conectando os componentes 
Conecte seu circuito como mostra a figura 2.8. Verifique cuidadosamente a fiação 
antes de ligar seu Arduino. Lembre-se de que o Arduino deve estar desconectado da 
forca enquanto você conecta o circuito. 
 Detalhe da montagem da chave 
Figura 5.1 – Circuito para o Projeto 5 – Sistema de semáforo com travessia de pedestres e botão de 
requisição. 
 
Digite o código 
Digite o código da listagem 2.4, verifique-o e faca seu upload. Quando você executar o 
programa, ele iniciara com o semáforo no verde, para permitir que os carros passem, e a luz 
para pedestres no vermelho. 
Quando voce pressionar o botão, o programa verificara se, ao menos, cinco segundos 
transcorreram desde a última vez em que o semáforo mudou (para permitir que o transito flua) 
e, se afirmativo, executara o código para a funcao que voce criou, changeLights(). Nessa funcao, 
o semáforo vai de verde para amarelo e depois para vermelho, e o semáforo para pedestres vai 
para verde. Depois de um intervalo de tempo definido na variável crossTime (tempo suficiente 
para que os pedestres atravessem), a luz verde para pedestres pisca, acendendo e apagando, 
para avisar aos pedestres que atravessem rapidamente antes que o semáforo feche. Então, a 
luz vermelha do semáforo para pedestres acende, e a luz para os veículos vai de vermelho para 
amarelo, e finalmente para verde, permitindo novamente o fluxo do trafego. 
 
– Código para o projeto 5 
// Projeto 5 – Semáforo interativo 
int carRed = 12; // estabelece o semáforo para carros 
int carYellow = 11; 
int carGreen = 10; 
int pedRed = 9; // estabelece o semáforo para pedestres 
int pedGreen = 8; 
int button = 2; // pino do botão 
int crossTime = 5000; // tempo para que os pedestres atravessem 
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); // botão no pino 2 
// 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 transcorreram 5 segundos desde a última vez que 
isso ocorreu */ 
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 pedestres 
digitalWrite(pedGreen, HIGH); // acende o verde dos pedestres 
delay(crossTime); // espera por um intervalo de tempo predefinido 
// pisca o verde dos pedestres 
for (int x=0; x<10; x++) { 
digitalWrite(pedGreen, HIGH); 
delay(250); 
digitalWrite(pedGreen, LOW); 
delay(250); 
} 
// acende o vermelho dos pedestres 
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 
// registra o tempo desde a última alteração no semáforo 
changeTime = millis(); 
// depois retorna para o loop principal do programa 
} 
Faça uma análise do código com base nos projetos anteriores com destaques para a novas palavras chaves e 
conceitos, por exemplo: 
unsigned long changeTime;

Continue navegando