Boa tarde Amigos Garagistas estou usando esse código com o app blynk para abrir meu portão eletrônico, esse delay de 25 segundo esta parando meu sistema, gostaria de trocar ´por millis mais não estou conseguindo, eu uso esse delay para esperar 25 segundos apos eu abrir o portão, para fechar automático, já tentei mais não tive Êxito...segue o código em anexo

Exibições: 919

Anexos

Responder esta

Respostas a este tópico

Boa noite caro Elcids, 

Já vi em  outro tópico, você comentando sobre essa maquina de estados. 

Poderia nos explicar?

Obrigado e abraços. 

oi Murta, boa noite.

      Com todo prazer.  Embora simples, postar aqui neste tópico não deixaria esta contribuição muito evidente para ajudar a todos nas implementações.

      Então me comprometo a abrir um post específico, bastante claro e didático, mostrando os princípios e a técnica clássica para implementar Máquinas de Estado no código.  E assim seria possível também abrir sub-tópicos para elementos mais sofisticados e "avançados" do assunto. Inclusive recentemente implementei um desses elementos "sofisticados" para um amigo que pediu ajuda aqui no LDG, mas não publiquei a solução pois se tratava de um "TCC" do rapaz e sua equipe.

     A Máquina de Estados é o princípio de funcionamento de todas as Máquinas Digitais que existem, seja um microprocessador, seja uma rede-neural inteligente.  O assunto é muito simples, mas rende uma infinidade de elementos bastante sofisticados e poderosos, que resolvem num estalar de dedos 99% dos problemas de implementação de código que o povo sofre pra fazer (e mesmo implementações muito sofisticadas e/ou complexas).

     Também, a maioria dos exemplos que implementei aqui no LDG, e que solucionaram de forma eficiente e confiável, são bastante simples e claros, e praticamente todos podem ser usados como base para entender o funcionamento da Máquina (com exceção do "DOG Feed" que implementei a algum tempo atrás pra Marcela pois este tem mais elementos de temporização, e não aconselharia para quem quer aprender do início). E nestes exemplos, deixei tudo comentado e com arquivos de simulação no Proteus (muito útil para estes testes, sem precisar gastar tempo montando os circuitos físicos).

     Espero em breve poder preparar esse post.

     Abrçs,

     Elcids

Bom dia Elcids, 

Pode abrir um tutorial sobre máquina de estados. 

Obrigado. 

Achei esse vídeo:

ah sim, Marcela...

      Como vc não disse (pra variar um pouco, né?),  tive que adivinhar que o tal  "ledPin" é quem aciona o Portão, através de um pulso de 1 segundo. Claro, não precisei consultar algum oráculo pra desconfiar disso, mas seria bom que vc tivesse informado. Respostas seguras exigem informações seguras. Aprenda sobre isso.

      E que tal mudar esse nome "ledPin" pra outro, que tenha a ver com o acionamento do Portão?  Não acha que melhoraria?

      Abrçs

      Elcids

obrigada  Elcids Chagas pela atenção, gravei o código no ESP, ele esta pulsando uma vez só, gostaria que após o 25 segundos ele pulsa-se novamente para fechar o portão

oi Marcela.

      Já tinha desconfiado disto (que a  a execução do "BLYNK_WRITE (V3)" é um evento assíncrono.

      Veja o post logo a seguir, onde trato e resolvo esta questão.

      Abrçs,

      Elcids.

olá novamente Marcela.

      Considerando aspectos lógicos,  suspeitei que a execução do "BLYNK_WRITE (V3)" é um evento assíncrono à execução do código, pois não acredito que o "Blynk.run()"  chame este "callback" a todo instante (seria um desperdício de tempo, e portanto nem seria um "callback").

      Se eu estiver certo quanto a isso, então o código que enviei anteriormente não funcionará como esperado, pois a Máquina de Estados exige execução cíclica para cadenciamento dos estados (e controle das temporizações que ela implemente, como é o caso do "delay de 25 segundos").

      Por isso estou postando esta nova versão, que irá funcionar em qualquer dos cenários (seja a chamada a "BLYNK_WRITE (V3)" assíncrona ou "cíclica").

      Para contornar a questão, acrescentei um sinalizador de Eventos, com o qual o"BLYNK_WRITE (V3)" sinaliza à Máquina de Estados o evento "abrir o Portão". Da mesma forma o "BLYNK_WRITE (V3)"  aguarda a conclusão do fechamento do Portão, o que é sinalizado pelo evento "Portão sendo fechado" que é sinalizado pela Máquina de Estados.

      Claro, a execução da Máquina de Estados agora não está mais dentro da "BLYNK_WRITE (V3)",  mas sim concorrente com o  "Blynk.run()".

      Você pode estender essa ideia para quaisquer quantidade de comandos que queira implementar (siga a mesma lógica que implementei, e tudo irá funcionar como esperado).

      Segue o código com esta alteração:    Portao_Marcela_02a.zip

      Estados e Eventos são os dois aspectos mais fundamentais no funcionamento de uma Máquina de Estados. Então é importante conhecê-los e saber aplicá-los da forma adequada.

      Abrçs,

      Elcids

Marcela, mil perdões.

     No código versão "02", na correria do "control C" e "control V", acabei trocando entre "=" e "==" em umas duas linhas do código.

     Descobri isso emulando seu Sistema no Proteus. Após perceber o ocorrido, corrigi e testei, e funcionou como esperado.

     Então descartei a postagem anterior e acrescentei novamente, e substituí o arquivo do link com a versão correta.

     Assim, baixe novamente, pois agora está ok.  Mas pra evitar confusão, mudei a versão para "02a".

     Mais uma vez, peço desculpas pela confusão.

     Abrçs,

     Elcids

resolvido, agora sem travamento,muito obrigada  Elcids Chagas e a todos que tirou seu tempo a mim, para ajudar a resolver esse travamento com delay, valeu mesmo grata....

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço