Projeto I - Semáforo de travessia de pedestres.
Alunos: Daniel, Dierles, Jean, Pedro Dalvi, Pedro Paulo.
Trata-se de uma atividade avaliativa da disciplina de Algoritmos e Estrutura de Dados do Curso de Engenharia de Controle e Automação do IFES - Serra.
O projeto controla um semáforo de faixa de pedestres com acionamento por botoeira para diminuir o tempo do semáforo verde. O semáforo segue o ciclo normalmente. Quando a botoeira para pedestre é pressionada, o tempo em verde do semáforo é reduzido. O botão somente é lido quando o semáforo
em verde, pois se ele está em vermelho os pedestres estão atravessando.
A contagem do tempo no primeiro intervalo do verde foi dividido em partes para dar tempo de ler o botão no ciclo de scan do controlador. Não há necessidade de ler o botão no segundo intervalo do verde, pois o semáforo vai para vermelho assim que acabar a contagem.
Componentes utilizados:
01 - placa Arduino Uno;
01 - placa Protoboard;
02 - LEDs vermelhos;
02 - LEDs verdes;
01 - LED amarelo;
05 - resistores 1K ohm;
01 - resistor 10K ohm;
01 - chave táctil;
Jumpers diversos.
Circuito de montagem do projeto:
Algoritmo projetado na IDE Arduino:
// Pinos utilizados
const int S_VD = 10; // Semaforo Verde
const int S_AM = 11; // Semaforo Amarelo
const int S_VM = 12; // Semaforo Vermelho
const int P_VD = 9; // Pedestre Verde
const int P_VM = 8; // Pedestre Vermelho
const int button = 2; // Botão do Pedestre
// Variaveis
int contador=0; // Contador auxiliar
int buttonState=0; // Estado do botão
// Declaração dos pinos
void setup() {
pinMode(S_VD, OUTPUT);
pinMode(S_AM, OUTPUT);
pinMode(S_VM, OUTPUT);
pinMode(P_VD, OUTPUT);
pinMode(P_VM, OUTPUT);
pinMode(button, INPUT);
}
//Programa principal
void loop() {
// Semaforo Verde - Pedestre Vermelho
digitalWrite(S_VD, HIGH);
digitalWrite(S_AM, LOW);
digitalWrite(S_VM, LOW);
digitalWrite(P_VD, LOW);
digitalWrite(P_VM, HIGH);
while (contador < 30){ // Tempo de 3000ms divididos em 30x100.
if (digitalRead(button)==HIGH){
buttonState = 1; // Armazena caso o botão seja pressionado
}
delay(100);
contador++; // Incrementa o contador
}
if (buttonState == 0){ // Se ninguem apertar o botão, conta mais tempo
delay(3000);
}
if (buttonState == 1){ // Se alguem pressionou o botão, zera o estado do botão e pula para o proximo
buttonState = 0;
}
// Semaforo Amarelo - Pedestre Vermelho
digitalWrite(S_VD, LOW);
digitalWrite(S_AM, HIGH);
digitalWrite(S_VM, LOW);
digitalWrite(P_VD, LOW);
digitalWrite(P_VM, HIGH);
delay(1000); // Tempo semaforo em amarelo
// Semaforo Vermelho - Pedestre Verde
digitalWrite(S_VD, LOW);
digitalWrite(S_AM, LOW);
digitalWrite(S_VM, HIGH);
digitalWrite(P_VD, HIGH);
digitalWrite(P_VM, LOW);
delay(3000); // Tempo semaforo em vermelho
contador=0; // Reseta o contador auxiliar
}
Abaixo segue o Link para visualização do vídeo de funcionamento do projeto (YouTube).
LinK para o vídeo de funcionamento do projeto.
Obrigado!!!
Alunos: Daniel, Dierles, Jean, Pedro Dalvi, Pedro Paulo.
Trata-se de uma atividade avaliativa da disciplina de Algoritmos e Estrutura de Dados do Curso de Engenharia de Controle e Automação do IFES - Serra.
O projeto controla um semáforo de faixa de pedestres com acionamento por botoeira para diminuir o tempo do semáforo verde. O semáforo segue o ciclo normalmente. Quando a botoeira para pedestre é pressionada, o tempo em verde do semáforo é reduzido. O botão somente é lido quando o semáforo
em verde, pois se ele está em vermelho os pedestres estão atravessando.
A contagem do tempo no primeiro intervalo do verde foi dividido em partes para dar tempo de ler o botão no ciclo de scan do controlador. Não há necessidade de ler o botão no segundo intervalo do verde, pois o semáforo vai para vermelho assim que acabar a contagem.
Componentes utilizados:
01 - placa Arduino Uno;
01 - placa Protoboard;
02 - LEDs vermelhos;
02 - LEDs verdes;
01 - LED amarelo;
05 - resistores 1K ohm;
01 - resistor 10K ohm;
01 - chave táctil;
Jumpers diversos.
Circuito de montagem do projeto:
Algoritmo projetado na IDE Arduino:
// Pinos utilizados
const int S_VD = 10; // Semaforo Verde
const int S_AM = 11; // Semaforo Amarelo
const int S_VM = 12; // Semaforo Vermelho
const int P_VD = 9; // Pedestre Verde
const int P_VM = 8; // Pedestre Vermelho
const int button = 2; // Botão do Pedestre
// Variaveis
int contador=0; // Contador auxiliar
int buttonState=0; // Estado do botão
// Declaração dos pinos
void setup() {
pinMode(S_VD, OUTPUT);
pinMode(S_AM, OUTPUT);
pinMode(S_VM, OUTPUT);
pinMode(P_VD, OUTPUT);
pinMode(P_VM, OUTPUT);
pinMode(button, INPUT);
}
//Programa principal
void loop() {
// Semaforo Verde - Pedestre Vermelho
digitalWrite(S_VD, HIGH);
digitalWrite(S_AM, LOW);
digitalWrite(S_VM, LOW);
digitalWrite(P_VD, LOW);
digitalWrite(P_VM, HIGH);
while (contador < 30){ // Tempo de 3000ms divididos em 30x100.
if (digitalRead(button)==HIGH){
buttonState = 1; // Armazena caso o botão seja pressionado
}
delay(100);
contador++; // Incrementa o contador
}
if (buttonState == 0){ // Se ninguem apertar o botão, conta mais tempo
delay(3000);
}
if (buttonState == 1){ // Se alguem pressionou o botão, zera o estado do botão e pula para o proximo
buttonState = 0;
}
// Semaforo Amarelo - Pedestre Vermelho
digitalWrite(S_VD, LOW);
digitalWrite(S_AM, HIGH);
digitalWrite(S_VM, LOW);
digitalWrite(P_VD, LOW);
digitalWrite(P_VM, HIGH);
delay(1000); // Tempo semaforo em amarelo
// Semaforo Vermelho - Pedestre Verde
digitalWrite(S_VD, LOW);
digitalWrite(S_AM, LOW);
digitalWrite(S_VM, HIGH);
digitalWrite(P_VD, HIGH);
digitalWrite(P_VM, LOW);
delay(3000); // Tempo semaforo em vermelho
contador=0; // Reseta o contador auxiliar
}
Abaixo segue o Link para visualização do vídeo de funcionamento do projeto (YouTube).
LinK para o vídeo de funcionamento do projeto.
Obrigado!!!
Comentários
Postar um comentário