O primeiro projeto que apresento é o velho mas também importante semáforo interativo, onde temos as luzes para o tráfego dos automóveis e as luzes para a travessia dos pedestres. Mas, nesse projeto adicionei algo á mais: um display de 7 segmentos, cujo faz a contagem regressiva de 5 até 0, cronometrando o tempo de travessia do pedestre.
DICA: Para realizar esse projeto baseie no exemplo nº 4 do livro Arduino Básico, ed. NOVATEC (recomendo).
Materiais:
- Arduino- Protoboard
- Fios Jumpers
- 2 LED's vermelhos, 2 LED's verdes e 1 LED amarelo
- 5 resistores 220 ohms
- Push Button
- Display de 7 segmentos (Anôdo comum)
Esquema:
Código:
int redCar = 12; //pino luz vermelhoint yellowCar = 11; //pino luz amarelo
int greenCar = 10;
int redPed = 7; //pino luz vermelho pedestre
int greenPed = 8; //pino luz verde pedestre
int button = 2; //push button
int displayA = 3; //seguencia de leds do display e seus respecitvos pinos
int displayB = 4;
int displayC = 5;
int displayD = 1;
int displayE = 6;
int displayF = 9;
int displayG = 13;
void setup(){
pinMode(redCar, OUTPUT); //pino saída
pinMode(yellowCar, OUTPUT); //pino saída
pinMode(greenCar, OUTPUT); //pino saída
pinMode(redPed, OUTPUT); //pino saída
pinMode(greenPed, OUTPUT); //pino saída
pinMode(button, INPUT); //botão do pino 2 entrada
digitalWrite(greenCar, HIGH); //acende verde para carros
digitalWrite(redPed, HIGH);
pinMode(3, OUTPUT); //pinos dos display como saída
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(1, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);
}
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){ //Chama a funçao para alterar as luzes
trocaLed();
}
}
void trocaLed(){
digitalWrite(greenCar, LOW); //Apaga o verde
digitalWrite(yellowCar, HIGH); //acende o amarelo
delay(2000); //espera dois segundos
digitalWrite(yellowCar, LOW); //Apaga o amarelo
digitalWrite(redCar, HIGH); //Acende o vermelho
delay(2000); //Espera 2 segundos
digitalWrite(redPed, LOW); //Apaga o vermelho dos pedestres
digitalWrite(greenPed, HIGH); //cende o verde dos pedestres
//espera por um intervalo de tempo predefinido
digitalWrite(displayA, LOW); //Seqüência do numero 5
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
delay(1000);
digitalWrite(displayA, LOW); //Seqüência do numero 4
digitalWrite(displayB, LOW);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
delay(1000);
digitalWrite(displayA, LOW); //Seqüência do numero 3
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG,LOW);
delay(1000);
digitalWrite(displayA, LOW); //Seqüência do numero 2
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, HIGH);
delay(1000);
digitalWrite(displayA, HIGH); //Seqüência do numero 1
digitalWrite(displayB, HIGH);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
delay(1000);
digitalWrite(displayA, HIGH); //Seqüência do numero 0
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
delay(1000);
//pisca o verde para os pedetres
for(int x=0; x<3; x++){
digitalWrite(greenPed, HIGH);
delay(250);
digitalWrite(greenPed, LOW);
delay(250);
}
//Acende o vermelho dos pedretres
digitalWrite(redPed, HIGH);
delay(500);
digitalWrite(yellowCar, HIGH);
digitalWrite(redCar, LOW);
delay(1000);
digitalWrite(greenCar, HIGH);
digitalWrite(yellowCar, LOW);
//Registra o tempo desde a ultima alteração no semaforo
}
Vídeo:
Ao fazer o upload do arquivo os led's verde para carros e vermelhos para pedestres deverão está aceso, ao pressionar o botão o led vermelho para carro apaga e o amarelo se acenderá logo depois o verde de pedestre também se acenderá e o led vermelho se apagará começando a contagem do tempo no display, em seguido ao término da contagem o led verde de pedestre piscará 3 vezes e voltará ao estado inicial do programa.
Comentário: Esse projeto é muito interessante pois já requer um certo nível de conhecimento de programação somado com eletrônica básica.
Aperfeiçoamento: - Reduzir código;
Agradeço a atenção de todos e fico aberto a sugestões
sera possivel juntar este projecto do display com um piezo na passagem dos peoes?
ResponderExcluirVocê está perguntando se ao passar os números do display de 7 segmentos acionar um piezo? Se for isso e possível sim!!!
ExcluirEntão você me poderia ajudar no meu projet-o?
ExcluirOk Zz Mikel, te ajudo sim. Vc ja recriou esse tutorial?
Excluircomo e feito a programação de um semáforo simples com a contagem de um display?
ResponderExcluir