Galera, beleza?

Eu estou com dificuldade no meu projeto que é um semáforo para ajudar deficientes. Funciona assim, o semáforo em seu estado normal, e quando o deficiente visual acionar o botão (devidamente indicado no chão em relevo), um audio irá se reproduzir avisando se o pedestre pode ou não atravessar. Então quando ele puder atravessar, depois de ser avisado, uma luz azul irá se acender para indicar que pode ter alguém com dificuldade para atravessar a rua, e o tempo do semáforo aumenta, além de um buzzer para guiar a travessia de possíveis outros pedestres indicando que a passagem já está liberada. Ou seja, o botão não faz o semáforo dos motoristas se fechar imediatamente, só reproduz um audio e aguarda o momento do pedestre atravessar para reproduzir um outro áudio.

quanto a questão do audio eu usei o modulo WTV-020, testei separadamente e funcionou.

Mas a dificuldade por enquanto está sendo no acionamento dos botoes. Já que a função "delay" é que controla o tempo que cada led está aceso, eu aciono o botão e não acontece nada. Tentei a função "milis()" mas eu me perdi total para fazer a alternância dos 3 leds e ainda o azul junto com o vermelho quando o botão for acionado( apenas quando a passagem for liberada).

Será que alguem poderia me ajudar nessa?

EDIT:

~~~~~~~~ GALERA:::: FUNCIONOU....

Agradecimentos ao Rui "mineirim RV" - Rui. 

 segue Sketch completo.

Exibições: 1825

Anexos

Responder esta

Respostas a este tópico

Boa noite MEF,

há algum tempo eu vi aqui no LdG um projeto bem parecido com o seu.

Fui procurar mas ainda não encontrei.

Sugiro que vc faça o seguinte:

Clique em : " Deseja carregar arquivos? "  e depois em " Escolher arquivo" e anexe o arquivo com o seu

sketch, para que possamos dar uma olhada e opinar sobre uma possível solução.

RV

anexei, Obrigada!

O delay() para o processamento. Nada bom isso. 

Existem várias alternativas que não param o processamento.

Uma delas é fazer um for() com por ex 1000 contagens e executar 1000 delays(1) e 1000 testes de tecla.

Vai dar um pouco mais de tempo que 1000 direto em função do processamento, mas nesse caso não muda nada.

Recomendo ver esse video:

https://www.youtube.com/watch?v=02YcUVmzYQE

Esse é um padrão luxo do que tem sido adotado por aih. 

Note que o sim de marteladinha toca de um lado da calçada, para, toca do outro, para, toca de um lado. Isso dá uma sensação muito precisa de pra onde vc tem que ir.

Tem os mais simples:

https://www.youtube.com/watch?v=GaidHMQD3wQ

https://www.youtube.com/watch?v=A2IPd2_OJkE

https://www.youtube.com/watch?v=3LPAasvJmuI

Mas esse tem sido o padrão. Sons dos 2 lados parecidos com martelinhos. Eh alto mas não incomoda. Quem está nas primeiras fileiras de carro escuta muito bem mesmo com os vidros fechados.

Olá Mariana!

Como o Eduardo disse, o delay() é um comando do mal e só deve ser usado em situações muito específicas.

Existem libs que ajudam a fazer o controle de intervalos de tempo com millis de forma fácil.

Veja um tutorial que fiz, justamente para acionar leds:

http://josecintra.com/blog/arduino-controlando-intervalos-tempo/

este é o código que eu cheguei mais próximo ao que eu queria, usando a função millis (), estou usando um buzzer como teste de resposta ao acionamento do botão. Porém os leds piscam de forma aleatória e irregular, além do buzzer não parar hora nenhuma.

Anexos

Boa tarde MEF,

vou dar uma olhada no seu sketch e sugerir possíveis correções.

RV

Boa tarde MAF.

estou com dificuldade de entender seu texto.

Por exemplo, veja esta parte: 

""  Funciona assim, o semáforo em seu estado normal, e quando o deficiente visual acionar o botão (devidamente indicado no chão em relevo),   ""

O botão fica no chão?

"" Ou seja, o botão não faz o semáforo dos motoristas se fechar imediatamente, ""

Qual é o semáforo dos motoristas?

Então quando ele puder atravessar, depois de ser avisado, uma luz azul irá se acender para indicar que pode ter alguém com dificuldade para atravessar a rua "

Não entendi nada.

Sugiro você descreve-lo em duas partes.

1a. instalações físicas: 

     A O semáforo terá 3 LEDs Vermelho Amarelo verde;

     B  Eles serão instalado em poste;

     C Existirá um piso .....

     D........

 2a. Descrição em blocos do funcionamento:

     A  Existirá um  botão ........     Diga com pequenas frases a sequencia dos acontecimentos

     B  Ao pressionar o botão ........     Diga com pequenas frases a sequencia dos acontecimentos

     C Um buzzer.......

     D........

RV

a estrutura será a mesma dos semáforos padrões, o relevo que eu me refiro é aquela faixa  que existe no chão para o pedestre deficiente (piso tátil), esse piso guiará o deficiente até o poste onde se encontra o botão a ser acionado.

seguindo a forma que você sugeriu:

1a. instalação física:

A) o semáforo chamado de 'semáforo dos motoristas' terá 4 LEDs: vermelho, amarelo, verde e azul.

B) o semáforo chamado de  'semáforo do pedestre' terá 3 LEDs: vermelho, verde e azul.

C) o botão será instalado da forma convencional, no 'poste' onde se encontra o semáforo de pedestre.

D) o piso tátil guiará o deficiente na direção do botão.

2a. FUNCIONAMENTO:

A) todos os semáforos devem estar funcionando simulando a sinalização padrão. Ou seja, dos motoristas indica: verde por 5 segundos, amarelo por 2 segundos e vermelho por 5 segundos. Dos pedestres: verde ou vermelho. Enquanto o botão não for acionado.

B) Se o botão for acionado: deve ser verificado em qual estado o semáforo se encontra( se está fechado ou aberto para o pedestre) dessa forma:

♦ SE semáforo dos motoristas - > verde(aberto) / semáforo dos pedestres -> vermelho (fechado) = Executa um áudio "aguarde para atravessar". Aguarda o semáforo dos pedestres ficar verde = Executa outro áudio "já pode atravessar", aumenta o tempo do semáforo dos pedestres aberto para por exemplo (10s), acende os leds azuis do semáforo do pedestre e do motorista juntamente com  o buzzer que deverão permanecer acionados até o semáforo dos pedestres ficar vermelho (fechar).

♦SE  semáforo dos motoristas -> vermelho (fechado) / semáforo dos pedestres -> verde = Executa o áudio "já pode atravessar", aumenta o tempo do semáforo dos pedestres aberto para por exemplo (10s), acende os leds azuis do semáforo do pedestre e do motorista juntamente com  o buzzer que deverão permanecer acionados até o semáforo dos pedestres ficar vermelho (fechar).

♦SE semáforo dos motoristas -> amarelo(quase fechando) / semáforo dos pedestres -> vermelho (fechado)= Aguarda o tempo do semáforo dos pedestres abrir e executa o áudio "já pode atravessar", aumenta o tempo do semáforo dos pedestres aberto para por exemplo (10s), acende os leds azuis do semáforo do pedestre e do motorista, juntamente com  o buzzer que deverão permanecer acionados até o semáforo dos pedestres ficar vermelho (fechar).

após a execução dos comandos, volta o funcionamento do semáforo padrão, sem o áudio, sem o buzzer e sem led azul. Até que o botão seja acionado novamente. 

Bom dia MEF,

segue anexo o sketch para o semáforo conforme suas informações.

modifiquei um bocado o seu sketch original

Um detalhe, o botão, basta ligar entre o port e o gnd, já que ativei o pullup interno do port.

RV

Anexos

algumas coisas não deram certo. Eu não até tentei mexer de curiosidade mesmo pra ver se dava pra resolver  algo mas preferi pedir opinião. numerei o que aconteceu pra ficar mais fácil  de entender a sequencia que acontece.

1-      Buzzer fica acionado direto.

2-      Semáforo dos pedestres não acende o led vermelho enquanto o do motorista está verde. (mas o verde acende normalmente quando o semáforo do motorista está vermelho)

3-      Quando o botão é acionado, o led vermelho do pedestre pisca durante os 10s enquanto o do motorista também está vermelho.

4-      Toda vez que o botão é acionado, o led azul já se acende imediatamente,  independente do estado do semáforo dos motoristas. ( Deve ser aceso somente quando a passagem for liberada aos pedestres).

obrigada!

Boa tarde MEF,

testa este:

RV

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço