Semáfaro com Arduino e display 7 segmentos

No Fritzing eu usei 2 protoboards, mas não é necessário pois coloquei outra apenas para ficar mais limpa a sketch e conseguir visualizar todas as ligações.

OBS: Como eu estou usando o arduino UNO ele possui apenas 13 portas digitais eu estou fazendo uma ponte e usando a mesma porta para 2 leds do display, mais tarde vou explicar melhor o porque desta gambiarra.

Para este projeto vamos precisar :

-5 Leds – 2 vermelhos, 2 verdes, 1 amarelo

- 11 Resistores de 220 Ohms

- Arduino Uno (se for o Arduino Mega cai melhor para este projeto pois tem mais portas)

- Protoboard

- 1 Display cathode  7 segmantos

Fritzing:

Código:

001 //Este semáfaro vai ficar aberto para carros e fechado para pedestres ate o momento do clique no botão
002  
003 int redCar = 13; //seta a variavel redCar o valor 13 (porta)
004 int yellowCar = 12; //seta a variavel yellowCar o valor 12(porta)
005 int greenCar = 11; //seta a variavel greenCar o valor 11(porta)
006 int redPeople = 9; //seta a variavel redPeople o valor 9(porta)
007 int greenPeople = 8; //seta a variavel greenPeolpe o valor 8(porta)
008 int button= 2; //seta a variavel button o valor 2(porta)
009 int displayA= 7;
010 int displayB= 6;
011 int displayC= 5;
012 int displayD= 4;
013 int displayE= 3;
014 int displayF= 10;
015  
016 int crossTime = 5000; // tempo de travessia
017 void setup(){
018  pinMode(redCar,OUTPUT); //seta saida
019  pinMode(yellowCar,OUTPUT); //seta saida
020  pinMode(greenCar,OUTPUT); //seta saida
021  pinMode(redPeople,OUTPUT); //seta saida
022  pinMode(greenPeople,OUTPUT); //seta saida
023  
024  pinMode(displayA,OUTPUT); //seta saida
025  pinMode(displayB,OUTPUT); //seta saida
026  pinMode(displayC,OUTPUT); //seta saida
027  pinMode(displayD,OUTPUT); //seta saida
028  pinMode(displayE,OUTPUT); //seta saida
029  pinMode(displayF,OUTPUT); //seta saida
030  
031  pinMode(button,INPUT); //seta entrada (recebe valor)
032  digitalWrite(greenCar, HIGH); //começa ligando led verde carro
033  digitalWrite(redPeople, HIGH); //começa ligando led vermelho pessoa
034 }
035  
036 void loop(){
037  int state = digitalRead(button); /*verifica se o botao foi pressionado e se faz mais de 5 seg desde a ultima vez*/
038  if (state == HIGH) { //compara o state do button se for HIGH(apertado ele vai chamar changeLights(); em 1000(1 segundo)
039  //se for HIGH == HIGH ele chama o changeLights
040  delay(100); //
041  changeLights();
042  }
043 }
044 void changeLights(){
045  digitalWrite(greenCar, LOW); //apaga carGreen
046  digitalWrite(yellowCar, HIGH); //acende carYellow
047  delay(4000);
048  digitalWrite(yellowCar, LOW); //apaga carYellow
049  digitalWrite(redCar, HIGH); //acende carRed
050  digitalWrite(redPeople, LOW); //apaga pedRed
051  digitalWrite(greenPeople, HIGH); //acende pedGreen
052  delay(crossTime); //chama a variavel crossTime que voce setou no inicio do codigo
053  
054 //aqui vai começar a piscar o LED verde avisando que esta acabando o tempo de atravessar
055  
056 digitalWrite(greenPeople, HIGH);
057  digitalWrite(displayA, HIGH); //esta sequencia = 5
058  digitalWrite(displayB, HIGH);
059  digitalWrite(displayC, LOW);
060  digitalWrite(displayD, HIGH);
061  digitalWrite(displayE, LOW);
062  digitalWrite(displayF, HIGH);
063  delay(1000);
064  digitalWrite(greenPeople, HIGH);
065  digitalWrite(displayA, HIGH); //esta sequencia = 4
066  digitalWrite(displayB, HIGH);
067  digitalWrite(displayC, HIGH);
068  digitalWrite(displayD, HIGH);
069  digitalWrite(displayE, LOW);
070  digitalWrite(displayF, LOW);
071  delay(1000);
072  digitalWrite(greenPeople, HIGH);
073  digitalWrite(displayA, LOW); //esta sequencia = 3
074  digitalWrite(displayB, HIGH);
075  digitalWrite(displayC, HIGH);
076  digitalWrite(displayD, HIGH);
077  digitalWrite(displayE, LOW);
078  digitalWrite(displayF, HIGH);
079  delay(1000);
080  digitalWrite(greenPeople, HIGH);
081  digitalWrite(displayA, LOW); //esta sequencia = 2
082  digitalWrite(displayB, LOW);
083  digitalWrite(displayC, HIGH);
084  digitalWrite(displayD, HIGH);
085  digitalWrite(displayE, HIGH);
086  digitalWrite(displayF, HIGH);
087  delay(1000);
088  digitalWrite(greenPeople, HIGH);
089  digitalWrite(displayA, LOW); //esta sequencia = 1
090  digitalWrite(displayB, HIGH);
091  digitalWrite(displayC, HIGH);
092  digitalWrite(displayD, LOW);
093  digitalWrite(displayE, LOW);
094  digitalWrite(displayF, LOW);
095  delay(1000);
096  digitalWrite(greenPeople, LOW);
097  digitalWrite(redPeople, HIGH);
098  digitalWrite(displayA, LOW); //esta sequencia = desligado
099  digitalWrite(displayB, LOW);
100  digitalWrite(displayC, LOW);
101  digitalWrite(displayD, LOW);
102  digitalWrite(displayE, LOW);
103  digitalWrite(displayF, LOW);
104  delay(250);
105  
106 //aqui começa o estado inicial
107  digitalWrite(redPeople, HIGH); //acende led vermelho pessoa
108  digitalWrite(redCar, LOW); //apaga led vermelho pessoa
109  digitalWrite(greenCar, HIGH); //acende led verde carro
110  
111 }

Resultado final:

Video:

Post original no blog: http://meetarduino.wordpress.com

Exibições: 2432

Tags: 7, arduino, display, farol, projeto, segmentos, semafaro, sinaleira

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Eduardo castellani em 29 novembro 2012 às 15:21

Bem interessante esse Fritzing, por gerar o esquema e a placa, vou ver uma video aulas dele. abraço

Comentário de Eduardo castellani em 20 junho 2012 às 20:52

OBRIGADO PELA RESPOSTA, ABRAÇO

Comentário de Eduardo castellani em 20 junho 2012 às 20:32

Mas pra mim que sou iniciante, e bota iniciante nisso, seria mais legal a montagem passo a passo.

Comentário de Eduardo castellani em 20 junho 2012 às 20:31

Legal, gostei, parabéns

Publicidade

Convide um amigo para o Lab!

 Loja Lab de Garagem

Novo!

Garagino Rev1

Por: R$ 29,00

Ou em até 6x de

R$ 5,18 

Novo!

Servo Motor Grande 180°

Por: R$ 54,00

Ou em até 12x de

R$ 5,10

 

Exclusividade do LdG!

Android 4.0 Mini PC

Por: R$ 195,00

Ou em até 18x de

R$ 13,00

Válvula Solenóide de 12V - 3/4"

Por: R$ 36,00

Ou em até 7x de

R$ 5,56

© 2013   Criado por Marcelo Rodrigues.

Badges  |  Relatar um incidente  |  Termos de serviço