Neste “projeto“, ou melhor, neste desenvolvimento com a ajuda da plataforma totalmente “open-source” do Arduino, vamos desenvolver um “simulador” de sistema de semáforos (como os utilizados e que vemos “funcionar” no mundo real):
- Utilizaremos 3 LEDs de cores diferentes (verde, amarelo e vermelho) para “imitar” os semáforos de automóveis;
- Utilizaremos 2 LEDs de cores diferentes (verde e vermelho) para “imitar” os semáforos atuais de pedestres:
- Utilizaremos 1 botão, para “imitar” o interruptor presente nos semáforos de pedestres utilizados atualmente:
Para ver o circuito em ação, assista a pequena introdução abaixo:
→ COMPONENTES UTILIZADOS:
O ESQUEMÁTICO DO PROTÓTIPO DO NOSSO CIRCUITO DE SIMULAÇÃO DE SEMÁFOROS:
OBS: NÃO importa se no esquemático, observamos os diodos LED de variados tamanhos (maiores e/ou menores), se você não possui LEDs de variados tamanhos, não há qualquer problema na execução do nosso projeto aqui mencionado! Pode seguir adiante sem problemas.
O CÓDIGO:
Neste sketch (código), não precisaremos utilizar nenhuma biblioteca. O código é muito simples. Vou deixar aqui algumas dicas. Estas dicas poderão ajudar a entender melhor o que acontecerá no circuito:
- A luz dos automóveis é sempre verde, e desta forma, a luz de pedestres será sempre vermelha, a menos que alguém aperte o botão.
- Quando alguém pressionar “o botão”, o que vai acontecer?
- A luz do semáforo dos automóveis muda para amarelo e depois para vermelho;
- A luz dos pedestres muda para verde;
- As luzes ficam neste estado por um tempo (no código desta vez é a variável tempoAtravessando)
- A luz verde para pedestres, pisca, desliga e liga a luz vermelha
- A luz do semáforo de automóveis muda de vermelho para verde.
- Todas estas ações serão executadas (porque estão declaradas dentro desta função) na “função” : mudaLuzes () . Toda vez que desejarmos alterar as luzes, precisamos apenas “chamar” esta função. 💡
Copie o código que segue abaixo para sua IDE do Arduino, verifique, compile e envie à placa Arduino. Certifique-se de que você tem a placa (PCB) correta para a execução do projeto e a correta porta COM selecionada na sua IDE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
/* * Autor: Rui Santos * Complete Project Details http://randomnerdtutorials.com * * Modificado e Adaptado por: Rodrigo Costa * Rev1: 21/03/2017 * * Maiores detalhes do Projeto em: * https://eletronicaparatodos.com/ * http://eletronicaparatodos.net/ * */ /* * Abaixo declaramos as variáveis que utilizaremos em nosso código * visando identificar os componentes eletronicos que vao no circuito. * --------------------------------------------------------------------------- * Dica do RCosta: observe que as variáveis são utilizadas como sendo * o verdadeiro nome do componente! Isso facilita a vida na hora da leitura :) * --------------------------------------------------------------------------- * */ int carroVermelho = 13; int carroAmarelo = 12; int carroVerde = 11; int pessoaVerde = 2; int pessoaVermelho = 3; int botao = 7; int tempoAtravessando = 5000; unsigned long mudaTempo; void setup() { // Inicializamos o temporizador aqui // Observe que o "contador" foi atrelado // a váriavel que setamos acima. mudaTempo = millis(); /* * Aqui nós configuramos alguns dos pinos da nossa placa Arduino como "saídas" e outros comos "entradas". * Dica do RCosta: Isso significa que alguns pinos "mostrarão" o resultado enquanto outro * atuará como um sensor, "captando informações" do mundo exterior. * OBS: Alguns perguntarão: por que utilizar "OUTPUT" e "INPUT" ao invés de utilizarmos "SAIDA" e "ENTRADA" respectivamente? * Pessoal, a resposta é que não podemos fazer isso neste caso, isso porque a "memória interna" do Arduino só conhece estes * comandos em idioma Inglês apenas, assim como outras situações que perceberão ao longo dos estudos, não desanima! :) * */ pinMode(carroVermelho, OUTPUT); pinMode(carroAmarelo, OUTPUT); pinMode(carroVerde, OUTPUT); pinMode(pessoaVermelho, OUTPUT); pinMode(pessoaVerde, OUTPUT); pinMode(botao, INPUT); //Começamos deixando acesas as luzes: verde (referente aos veículos) e vermelha (referente aos pedestres) //OBS: O comando "Serial.begin" utilizado abaixo serve neste caso como uma espécie de "DEBUG", isto porque //com este comando somos capazes de "acompanhar" o funcionamento do circuito pelo Painel Serial da IDE do Arduino! digitalWrite(carroVerde, HIGH); digitalWrite(pessoaVermelho, HIGH); digitalWrite(carroVermelho, LOW); digitalWrite(carroAmarelo, LOW); digitalWrite(pessoaVerde, LOW); Serial.begin(9600); } void loop() { // A variável que vamos setar abaixo servirá para "guardar" o estado do nosso botão (pressionado ou não pressionado) int estado = digitalRead(botao); delay(50); Serial.println(estado); // Se o botão está sendo pressionado E se já passou 5 segundos desde a última pressão. if (estado == HIGH && (millis() - mudaTempo) > 5000) { //Então SE SIM, executa a função de mudar o estado das luzes abaixo: mudaLuzes(); } } void mudaLuzes() { digitalWrite(carroVerde, LOW); // A luz verde é desligada digitalWrite(carroAmarelo, HIGH); // A luz amarela vai ligar por 4 segundos delay(4000); digitalWrite(carroAmarelo, LOW); // A luz amarela vai desligar digitalWrite(carroVermelho, HIGH); // A luz vermelha vai ligar por 5 segundos digitalWrite(pessoaVermelho, LOW); digitalWrite(pessoaVerde, HIGH); delay(tempoAtravessando); // Pisca a luz verde dos PEDESTRES for (int x=0; x<10; x++) { digitalWrite(pessoaVerde, LOW); delay(160); digitalWrite(pessoaVerde, HIGH); delay(160); } digitalWrite(pessoaVerde, LOW); digitalWrite(carroVermelho, LOW); digitalWrite(pessoaVermelho, HIGH); digitalWrite(carroVerde, HIGH); mudaTempo = millis(); } |
PARA FINALIZAR O POST PESSOAL:!:
💡 Se você, SIM, você, (ahh, eu estou incluso também), está começando agora com o Arduino, um bom exercício é o que propõe alterar o valor de algumas variáveis: como tempoAtravessando e mudaLuzes e a partir daí, ir “brincando”, testando e observando os resultados que se pode obter! 😀
E se você quiser algo um pouco mais desafiador, pode tentar “imitar” o que acontece em um cruzamento com várias luzes e para ambos: carros e pedestres.
Valeu Pessoal! Espero que tenham gostado. Comentem!
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021
Na penúltima linha a verificação acontece informando o seguinte erro:
expected constructor, destructor, or type conversion before ‘(‘ token
Gostaria de saber o que pode ser, sendo que copiei o código ?
Uso a placa uno R3
Fala Crinova! Tudo Bom?
Respondendo sua pergunta, o que posso dizer é que não deveria existir este erro.
Acabei de compilar este mesmo código disponível aqui na página na IDE do Arduino Uno Versões 1.8.10 e a última 1.8.12 e em nenhuma delas apresentou qualquer erro na hora de verificar o código.
Acredito que você tenha copiado o código mas por alguma razão, a formatação do mesmo não ficou exata.
Recomendo que copie e cole o código no bloco de notas e salve em formato .txt – depois disso, abra o arquivo e copie e cole a partir daí na sua IDE Arduino. Deve estar indo alguma “sujeira” quando você está copiando e colando aí.
PS: Lendo a mensagem de erro que você mostrou, o que diz é que está faltando no seu código alguma informação antes de um determinado parêntesis (em alguma parte dele, já que você não disse a linha).
Veja o que consegue daí.
Se não conseguir nada, me envia uma mensagem através do formulário de contato do Blog que a partir dali te respondo via email e lhe envio o meu arquivo aqui já da IDE Arduino, o .INO
Sucesso!
Um Abraço,
Rodrigo Costa do Blog, Fanpage e Instagram,
———————————————————————————
https://EletronicaParaTodos.com
https://facebook.com/EletronicaParaTodosBR
https://instagram.com/EletronicaParaTodosBrasil
———————————————————————————
▶Contribua com o Crescimento do Canal, faça uma Doação 🙂
———————————————————————————
➤https://apoia.se/eletronicaparatodos
➤https://pag.ae/7UyMZmYb4
Parabéns!!!
Sou professora de informática e estou iniciando um trabalho com robótica com meus alunos, seu projeto é bem explicado, foi fácil montar e entender o código!! Obrigada e tenha muito sucesso!!!
Fala Professora Patrícia! Tudo Bom?!
Primeiramente seja muito bem-vinda ao nosso Blog! 🙂
Fico muitíssimo feliz de que o artigo/post tenha lhe ajudado, e mais ainda, tenha lhe ajudado a AJUDAR seus alunos! 😉
Deixo meu muito obrigado pelo seu tempo e comentário de Força e Apoio!
É muito gratificante saber que fomos úteis de alguma forma. 😉
Desejo a ti também todo o Sucesso e parabéns por essa profissão LINDÍSSIMA! 🙂
Fala Pessoal! Tudo Bom?!
Aqui neste artigo utilizamos basicamente o mesmo tipo de sensor ultrassônico utilizado nos parachoques dos automóveis atualmente, confiram! 🙂
Forte Abraço,
Rodrigo Costa do Canal YouTube, Fanpage e Instagram,
https://youtube.com/EletronicaParaTodos
https://facebook.com/EletronicaParaTodosBR
https://instagram.com/EletronicaParaTodosBrasil
Boa noite parabéns por suas explicações com este sistema consigo montar um semaforo com luzes de LED maiores
Fala Antônio! Tudo Bom?!
Primeiramente seja muito bem-vindo ao nosso Blog! ???
Rapaz, eu não entendi bem se você realizou uma afirmação ou se fez uma pergunta…?
Enfim, considerando que fizeste uma pergunta, então meu caro, a resposta é Sim! ????
O que precisaríamos para poder utilizar LEDs mais potentes ou até mesmo lâmpadas, seria adicionar uma etapa DRIVER, uma etapa de potência (utilizando transistores e até relés) nos pinos de saída utilizados do Arduino. ?????
Se desejar se inscreve no Blog e em nosso Canal Youtube!
Sucesso!
Um Abraço,
Rodrigo Costa do Canal YouTube,
https://YouTube.com/EletronicaParaTodos
Olá amigo, muito bom o conteúdo, detalhado e muito bem explicado, parabéns.
Eu consigo utilizar um buzzer para emitir um sinal sonoro quando o sinal fica vermelho para os carros nesse projeto?
Fala Gabriel! Tudo Bom?!
Rapaz, primeiramente agradeço sua visita e comentário! 🙂
Olha só, é possível sim que você “adicione” um pequeno buzzer (5VDC) na saída do MCU que aciona o LED VERMELHO (para os carros). Para isso, basta que você, até mesmo na protoboard ainda (a título de testes), conecte os terminais do buzzer em paralelo com os terminais do respectivo LED VERMELHO (dos carros) que você deseja adicionar o “sinal sonoro” e “literalmente” o circuito estará pronto! 🙂
PS: Num projeto final, talvez você necessite incluir uma etapa “driver” para o buzzer, buzzer e led, etc…mas pra isso bastaria mesmo utilizar um BC548 de uso geral por exemplo e basicamente resolveria o problema. 😉
Desejo Sucesso!
Um Abraço,
Rodrigo Costa do Blog,
https://EletronicaParaTodos.com
Boa noite parabens pelo projeto.
Poderia me ajudar? quero fazer um projeto para garagem tipo: vou colocar dois semaforo de duas cores (verde e veemelho) um vou colocar na garagem e outro na entrada do meu condominio, ambos vai ficar sempre no verde ou seja acesso livre para quem sai e para quem chega. Mas quando tiver entrando no condominio pressiono um botao e logo o da garagem ficarar vermelho e ao chega na garagem voltarar ao normal verde. E assim vice versa como devo fazer essa programacao ?
Fala Isael! Tudo Bom?!
Primeiramente agradeço sua presença e comentário! 🙂
Olha só, eu creio que não serei útil pra ti em matéria de “programar” algo ou até mesmo te passar um “sketch” pré-pronto, infelizmente. 🙁
MAS, em matéria de “ideia prototipal” pra você, ou espécie de “fluxograma estranho” :), eu penso o seguinte:
Você vai precisar utilizar “no mínimo” 1 sensor (independente do tipo que seja), pois como você disse, na ENTRADA do condomínio, você utilizará um botão (beleza, este é seu primeiro sensor, do tipo analógico), e então ao apertar este botão, sua placa microcontrolada, seu sistema, irá “enviar” o seguinte sinal:
– Botão da Entrada do Condomínio PRESSIONADO => MCU RECEBE O SINAL DO SENSOR DE ENTRADA => A PARTIR daí o MCU “manda” executar as tarefas seguintes:
1) DESLIGA LUZES VERDES;
2) LIGA LUZES VERMELHAS;
3) ESPERA O VEÍCULO CHEGAR AO LOCAL ESPERADO;
4) UM SENSOR (OPTICO, ULTRASSÔNICO, ETC) “DETECTA” A PRESENÇA DO VEÍCULO;
5) MICROCONTROLADOR RECEBE O SINAL DE “PRESENÇA DE VEÍCULO” ENVIADO PELO SENSOR;
6) MCU “MANDA” DESLIGAR LUZES VERMELHAS E LIGAR NOVAMENTE LUZES VERDES;
7) SISTEMA RETORNA AO ESTADO INICIAL TORNANDO-SE PRONTO PARA “NOVOS CICLOS DE TRABALHO”.
Peço desculpas caso não lhe sirva de absolutamente nada o que tentei descrever acima (no caso, “os passos, step-by-step”) do “programa” ou forma de funcionamento que acredito poderia funcionar.
De qualquer forma, obrigado pela presença, pelo comentário e pela confiança! 🙂
Votos de Sucesso!
Um Abraço,
Rodrigo Costa do Blog,
https://EletronicaParaTodos.com