Semáforo Inteligente - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T18:57:24Zhttps://labdegaragem.com/forum/topics/sem-foro-inteligente?commentId=6223006%3AComment%3A674802&feed=yes&xn_auth=noMuito Obrigado ficou muito bo…tag:labdegaragem.com,2018-06-13:6223006:Comment:6748022018-06-13T14:12:52.998ZLuiz henriquehttps://labdegaragem.com/profile/Luizhenrique21
<p>Muito Obrigado ficou muito bom gostei de mais!!</p>
<p>Muito Obrigado ficou muito bom gostei de mais!!</p> bom dia Luiz.
Mais um…tag:labdegaragem.com,2018-06-12:6223006:Comment:6744742018-06-12T12:20:24.900ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">bom dia Luiz.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Mais um Sistema facilmente implementado com uma "<strong>Máquina de Estados</strong>". Isso mesmo: o Sistema por vc descrito, é um caso típico de uso de uma <span>"<strong>Máquina de Estados</strong>" (assim como são <strong>99,9%</strong> dos casos de implementações sequenciais que aparecem aqui no <strong>Garagem</strong>). Então vamos lá:…</span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;">bom dia Luiz.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Mais um Sistema facilmente implementado com uma "<strong>Máquina de Estados</strong>". Isso mesmo: o Sistema por vc descrito, é um caso típico de uso de uma <span>"<strong>Máquina de Estados</strong>" (assim como são <strong>99,9%</strong> dos casos de implementações sequenciais que aparecem aqui no <strong>Garagem</strong>). Então vamos lá:</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Fiz a implementação do seu Sistema, usando uma "<strong>Máquina de Estados</strong>". O "<strong>Diagrama de Estados</strong>" é mostrado na figura a seguir (para "zoom" clique na imagem ou abra em outra guia do seu navegador):</span></span></p>
<p><span style="font-size: 12pt;"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/1939726716?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/1939726716?profile=RESIZE_1024x1024" width="624" height="904" class="align-center"/></a></span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Pelo diagrama, observe como é trivial e simples o funcionamento da "<strong>Máquina de Estados</strong>". E veja Luiz: o código que implementei segue rigorosamente este diagrama. Ou seja, cria-se o "<strong>Diagrama de Estados</strong>" e analisando este, verifica-se se ele atende completamente a necessidade de funcionamento do Sistema. Uma vez que isto é constatado, então basta seguir-se rigorosamente o "<strong>Diagrama de Estados</strong>" na implementação do código. <span style="text-decoration: underline;"><em>Mas se</em></span> é constatada alguma falha no funcionamento do "<strong>Diagrama de Estados</strong>", basta analisar e corrigir a falha (é muito mais fácil de fazer isso olhando para o diagrama, já que é uma forma gráfica e portanto muito mais facilmente entendida por nós "seres humanos", do que buscar erros de lógica no código em um editor).</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Outro detalhe muito importante: uma vez criado o "<strong>Diagrama de Estados</strong>", na implementação da "<strong>Máquina de Estados</strong>" (o código) basta tratar individualmente todas as ocorrências (<em>tecnicamente chamadas de</em> "<em><strong>eventos</strong></em>"). Algumas destas ocorrências serão "<em><strong>eventos assíncronos</strong></em>", que significa que podem ocorrer a qualquer instante, como por exemplo acionamentos de botões. Já acionamentos de saídas, como por exemplo LEDs, Displays, etc, são acionamentos "<em><strong>síncronos</strong></em>", pois sempre ocorrem em consequência de uma <em><strong>mudança de estado</strong></em> ou da <em><strong>ocorrência de um evento</strong></em>.</span></span></p>
<p><span style="font-size: 12pt;"><span> Geralmente esta parte de tratamento de eventos é a parte realmente "chata" da implementação, pois exige mais análise e atenção. Mas com alguma prática acaba-se "tirando de letra" isso.</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Há uma outra vantagem no processo: com o "<strong>Diagrama de Estados</strong>", é possível ter-se uma visão geral de como seu Sistema irá funcionar, ou seja, de como sua "<strong>Máquina</strong>" irá funcionar (e isto nem sempre é possível "olhando-se" apenas o código em um editor).</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Mas então, funcionou ou não a implementação? Para testar, fiz também a implementação do hardware no <strong>Proteus</strong>, e vc pode ver isso na figura a seguir:</span></span></p>
<p><span style="font-size: 12pt;"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/1939726803?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/1939726803?profile=RESIZE_1024x1024" width="721" class="align-full"/></a></span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Respondendo: funcionou exatamente como esperado.</span></span></p>
<p><span style="font-size: 12pt;"><span> No final deste post, vc encontrará anexado, o código implementado para o <strong>Arduino</strong>, o "<strong>Diagrama de Estados</strong>" (formato Visio e PDF), e o arquivo do Hardware para simulação no <strong>Proteus</strong> (juntamente com a respectiva biblioteca para o <strong>Arduino</strong>).</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> Caso vc queira ver outras "<strong>Máquinas de Estados</strong>" que implementei aqui para o pessoal do <strong>Garagem</strong>, e assim aprender mais sobre a técnica, veja os links a seguir:</span></span></p>
<p></p>
<p><span style="font-size: 12pt;">link 1: <em><a rel="nofollow" href="http://labdegaragem.com/forum/topics/algu-m-poderia-mim-ajudar-nesse-projeto?xg_source=activity" target="_self">Maquina 1 - Garagem</a></em></span></p>
<p></p>
<p><span style="font-size: 12pt;">link 2: <em><a rel="nofollow" href="http://labdegaragem.com/forum/topics/fun-o-millis-6?xg_source=activity" target="_self">Maquina 2 - Garagem</a></em></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> <span style="text-decoration: underline;"><em><strong>Observação importante</strong></em></span>: no seu Hardware simulado, você não colocou <strong>resistores</strong> para os LEDs. Na simulação, isto não vai esquentar circuitos nem tem risco de "queimar" algo (<strong>Arduino</strong> e <strong>LEDs</strong>). Mas se vc for montar na prática, <span style="text-decoration: underline;"><em>coloque</em></span> os resistores limitadores de corrente para os LEDs, conforme mostro na figura anterior (do Proteus). Isto é absolutamente necessário para que seu Sistema funcione adequadamente, e sem riscos.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Quaisquer dúvidas, post aqui que esclarecemos pra você.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> Se entendi vc quer que conte…tag:labdegaragem.com,2018-06-11:6223006:Comment:6744532018-06-11T17:16:50.814ZEduardohttps://labdegaragem.com/profile/EduardoHenriqueMarcondes
<p>Se entendi vc quer que conte somente o momento de pressionar (transição de 0 pra 1) e não o tempo todo pressionado.</p>
<p>Se for isso vc pode fazer usando 2 variáveis.</p>
<p>Uma que é a leitura direta do botão e outra que é a leitura anterior do botão.</p>
<p>Aih no seu if() vc coloca se (botão não estava pressionado e agora está).</p>
<p>Algo assim.</p>
<p>Ou coloque de um jeito mais facil de entender esse trecho:</p>
<p>"<span>ele daria os 8 segundo de tempo só que quando passa-se o…</span></p>
<p>Se entendi vc quer que conte somente o momento de pressionar (transição de 0 pra 1) e não o tempo todo pressionado.</p>
<p>Se for isso vc pode fazer usando 2 variáveis.</p>
<p>Uma que é a leitura direta do botão e outra que é a leitura anterior do botão.</p>
<p>Aih no seu if() vc coloca se (botão não estava pressionado e agora está).</p>
<p>Algo assim.</p>
<p>Ou coloque de um jeito mais facil de entender esse trecho:</p>
<p>"<span>ele daria os 8 segundo de tempo só que quando passa-se o tempo ele muda-se para o outro semáforo e vice - versa</span>"</p>
<p></p>