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
João Pereira , esse erro que está aparecendo e pelo fato de você ter copiado o código original com a numeração das linhas de código. Se você tirar a numeração que vai de 001 a 111 o código funciona normalmente. Mas para título de curiosidade esse erro que você encontrou ( sketch_feb03a:35: error: expected unqualified-id before numeric constant ) é referente a números representados de forma incorreta referente a base octal.
sketch_feb03a:35: error: expected unqualified-id before numeric constant
porque me está a aparecer este erro?
Muito Bom !!!!!!!!
Bem interessante esse Fritzing, por gerar o esquema e a placa, vou ver uma video aulas dele. abraço
OBRIGADO PELA RESPOSTA, ABRAÇO
Mas pra mim que sou iniciante, e bota iniciante nisso, seria mais legal a montagem passo a passo.
Legal, gostei, parabéns
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)