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
Comentar
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
Por: R$ 29,00
Ou em até 6x de
R$ 5,18
Por: R$ 54,00
Ou em até 12x de
R$ 5,10
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.
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)