conflito com i2c e interrupção - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T15:37:14Zhttps://labdegaragem.com/forum/topics/conflito-com-i2c-e-interrup-o?xg_source=activity&feed=yes&xn_auth=noBoa tarde Elcids,
Veja as es…tag:labdegaragem.com,2019-07-16:6223006:Comment:7133652019-07-16T18:31:38.264ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Boa tarde Elcids, </p>
<p>Veja as especificações do sensor <span>YF-S401 que ele esta usando.</span></p>
<p><span>Os seus cálculos são para outro tipo de sensor. </span></p>
<p></p>
<p><span>Flow Rate Range: 1~ 5 L/min ( máximo 5 litros/minuto) </span></p>
<p></p>
<p><strong>Flow pulse characteristics F = (98 * Q) ± 2% Q = L / MIN</strong></p>
<p><strong>Frequencia = (98 * Q ) Q = Litros/minuto </strong></p>
<p><strong>Q = Frequencia / 98 </strong></p>
<p></p>
<p><strong>Exemplo (…</strong></p>
<p>Boa tarde Elcids, </p>
<p>Veja as especificações do sensor <span>YF-S401 que ele esta usando.</span></p>
<p><span>Os seus cálculos são para outro tipo de sensor. </span></p>
<p></p>
<p><span>Flow Rate Range: 1~ 5 L/min ( máximo 5 litros/minuto) </span></p>
<p></p>
<p><strong>Flow pulse characteristics F = (98 * Q) ± 2% Q = L / MIN</strong></p>
<p><strong>Frequencia = (98 * Q ) Q = Litros/minuto </strong></p>
<p><strong>Q = Frequencia / 98 </strong></p>
<p></p>
<p><strong>Exemplo ( 217 Hz) :</strong></p>
<p><strong>Q = Frequencia / 98 = 217 / 98 = 2,21 L/min</strong></p>
<p></p> olá Hélio.
Acho que vc…tag:labdegaragem.com,2019-07-16:6223006:Comment:7131942019-07-16T17:31:30.266ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Hélio.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Acho que vc está fazendo alguma confusão com o processo. Vou esclarecer em detalhes.</span></p>
<p><span style="font-size: 12pt;"> Mas antes, vou postar a simulação que fiz agora a pouco, pois será mais um recurso que vc poderá utilizar, já que pode poupar tempo de desenvolvimento (claro, a simulação deve ser utilizado com critério, senão não tem sentido, e aí as pessoas vem dizer que a…</span></p>
<p><span style="font-size: 12pt;">olá Hélio.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Acho que vc está fazendo alguma confusão com o processo. Vou esclarecer em detalhes.</span></p>
<p><span style="font-size: 12pt;"> Mas antes, vou postar a simulação que fiz agora a pouco, pois será mais um recurso que vc poderá utilizar, já que pode poupar tempo de desenvolvimento (claro, a simulação deve ser utilizado com critério, senão não tem sentido, e aí as pessoas vem dizer que a simulação não funciona ou não corresponde à realidade - mas na verdade são as pessoas que não sabem usar a simulação de forma adequada para que corresponda à realidade).</span></p>
<p><span style="font-size: 12pt;"> Veja o resultado:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><em><strong>(clique na figura para "zoom")</strong></em></span></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/3300450094?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3300450094?profile=RESIZE_710x" class="align-center"/></a></p>
<p></p>
<p><span style="font-size: 12pt;"> Alguns pontos importantes sobre esse resultado:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong>1)</strong> para o <strong>Sensor de Fluxo</strong>, foi utilizado um <strong>Gerador de Sinais</strong>, o qual está gerando uma <em><strong>onda quadrada</strong></em> na <strong>Frequência</strong> que o <strong>Sensor de Fluxo</strong> envia para o <strong>pino</strong> "<strong>2</strong>" do <strong>Arduino</strong>. No resultado da simulação mostrado na figura anterior, esta Frequência está em <strong>217 Hz</strong>, o que no seu Sistema corresponde a <strong>39.45 L/min</strong> (ou seja, o resultado de <strong>217 / 5.5</strong>). Para alterar a Frequência, altere as propriedades do Gerador de Sinais, mudando o parâmetro "<em><strong>Frequência</strong></em>" (no circuito aparece com o nome "<em><strong>CLOCK</strong></em>"). Neste circuito, usei um Gerador que não permite alterar a Frequência enquanto a simulação está rodando. Mas existe uma imensidade de geradores disponíveis para o Proteus, que permitem mudar a Frequência durante a simulação. Vc pode usar qualquer um deles, o que será interessante porque vc verá a alteração da Vazão em "tempo real". Se vc não encontrar um Gerador assim, me avise que eu implemento um para vc.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong>2)</strong> no <em><strong>Osciloscópio</strong></em> usado na simulação, você pode ver os <em><strong>Pulsos</strong></em> gerados pelo <em><strong>Sensor de Fluxo</strong></em>. No Datasheet do Sensor que vc está utilizando, diz que o "<strong>duty cycle</strong>" é de <strong>50%</strong>, e vc pode ver isso na onda mostrada, além é claro de conferir a Frequência e amplitude do Sinal gerado.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong>3)</strong> o <em><strong>Módulo I2C</strong></em> para <strong><em>LCD</em></strong>, está como o Hardware da plaquinha comercializada aos montes por aí. No entanto existem versões usando o <strong>PCF8574</strong> e o <strong>PCF8574A</strong>. A diferença, é apenas a <em><strong>faixa de endereços I2C</strong></em> do Módulo. A plaquinha que tem o <strong>PCF8574</strong> tem endereço default em <strong>0x27</strong>, e a que tem o <strong>PCF8574A</strong> tem endereço default <strong>0x3F</strong>. No módulo que implementei na simulação, você encontrará um "<strong>DIP Switch</strong>", onde pode mudar o endereço (baseado no endereço default), o que permite utilizar até 8 Módulos deste tipo, simultaneamente (cada um com um endereço diferente configurado no "DIP Switch").</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong>4)</strong> O <strong>Terminal</strong> do <strong>Arduino</strong> está incluído, e pode ser usado exatamente como se usa na prática. Embora no seu código original ele não esteja sendo usado, achei conveniente deixá-lo ali, pois poderá ser útil para depuração na simulação.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Segue então o código e simulação correspondente: <em><a href="https://storage.ning.com/topology/rest/1.0/file/get/3300434875?profile=original" target="_blank" rel="noopener">I2C_x_IRQ_00.zip</a></em></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Observe que há duas pastas com arquivos de simulação: uma para quem está usando a <em><strong>plaquinha I2C</strong></em> com o <strong>PCF8574</strong> (endereço base <strong>0x27</strong>), e outra para quem está usando como o <em><strong>PCF8574A</strong></em> (endereço base <em><strong>0x3F</strong></em>, que é o seu caso Hélio). Testei ambas, e funcionaram perfeitamente.</span></p>
<p><span style="font-size: 12pt;"> Mesmo assim uma observação: a <strong>simulação</strong> do <strong>I2C</strong> do <strong>Arduino</strong> no <strong>Proteus</strong>, tem uma certa sensibilidade à performance do computador onde está rodando. Se o seu computador tiver uma boa performance, não ocorrerá nenhuma falha (se tiver baixa performance, durante a simulação evite rodar outras programas pesados que requisitam uma certa performance do computador, evitando "competição" com o simulador).</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Agora, falemos sobre o processo.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Vc disse que o <strong>código</strong> "<em><strong>I2C_Dispaly.ino</strong></em>" do <strong>RV</strong>, funcionou corretamente. E realmente deveria funcionar, pois da forma como está, irá medir corretamente a Vazão.</span></p>
<p><span style="font-size: 12pt;"> Veja Hélio: o que o Sistema precisa fazer, é <em><strong>medir a quantidade de Pulsos</strong></em> vindos do <em><strong>Sensor de Fluxo</strong></em>, em um <em><strong>certo período de tempo</strong></em>. Como isto está sendo medido durante <em><strong>1 segundo</strong></em>, essa medição corresponde exatamente à <em><strong>Frequência dos Pulsos vindos do Sensor de Fluxo</strong></em>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Vc disse que não entendeu como o <strong>RV</strong> conseguiu medir "<em><strong>sem ter habilitado e desabilitado a interrupção</strong></em>". Veja: o <strong>RV</strong> fez uma condicional com "<strong>if</strong>" onde ele espera (através do "<strong>millis</strong>"), que se passe <em><strong>1 segundo</strong></em>. E quando se passa esse 1 segundo, ele simplesmente lê a contagem de pulsos que está na variável "<strong>contaPulso</strong>" e calcula a vazão. E depois, essa contagem "<strong>contaPulso</strong>" <span style="text-decoration: underline;"><em>tem que ser zerada</em></span>, para permitir reiniciar um <em><strong>novo ciclo de contagem</strong></em>. E para permitir que se conte novamente mais 1 segundo, ele usa o "<strong>millis</strong>" <strong>atual</strong> como uma referência para cronometrar mais <em><strong>1 segundo</strong></em> a partir dessa contagem do "<strong>millis</strong>" <strong>atual</strong>.</span></p>
<p><span style="font-size: 12pt;"> No "<em><strong>background</strong></em>", as <strong>Interrupções</strong> estão sendo cadenciadas pelos pulsos vindos do <em><strong>sinal do Sensor de Fluxo</strong></em>. A cada novo pulso, uma nova Interrupção ocorre, e a cada Interrupção o <strong>contador</strong> "<strong>contaPulso</strong>" é incrementado. Assim após <em><strong>1 segundo</strong></em>, terá sido contado exatamente a quantidade correspondente à <em><strong>Frequência dos Pulsos</strong></em>. Mas como o "<strong>if</strong>" do <strong>código</strong> do <strong>RV</strong> zera o "<strong>contaPulso</strong>" a cada segundo, então, cada vez que o <em>código dentro do</em> "<strong>if</strong>" for executado, lendo o "<strong>contaPulso</strong>" teremos exatamente a Frequência dos pulsos medida.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Então veja: tudo se resume a <em><strong>medir a quantidade de pulsos</strong></em>, <em><strong>dentro do período de 1 segundo</strong></em>. É isso que vc tentou fazer no seu código original, mas como as <em><strong>Interrupções estavam ficando desabilitadas</strong></em> quando vc acessava o <strong>LCD</strong>, isso acabava travavando o <strong>I2C</strong> do <strong>Arduino</strong> (como eu disse em post anterior, as Interrupções tem que estar habilitadas para o <strong>I2C</strong> funcionar). Siga a sequência de execução do código, que está na figura onde mostro as "setas na cor rosa", e vc verá exatamente isso acontecendo.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Assim o que precisa, é <strong>habilitar</strong> e <strong>desabilitar</strong> a <strong>IRQ</strong> (<em><strong>Interrup Request</strong></em>), de forma a detectar que passou <strong>1 segundo</strong>, <em><strong>mas sem corromper o protocolo I2C</strong></em>. Nas alterações "<em><strong>brutas</strong></em>" (que foram inclusive usadas na simulação), é exatamente isso que faço. Pegue o código com as alterações "brutas", e siga a sequência de execução como mostrei na figura com as "setas na cor rosa", e verá isso.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Agora o dilema (será?): qual técnica usar?</span></p>
<p></p>
<p><span style="font-size: 12pt;"> A técnica que o <strong>RV</strong> usou, está perfeitamente correta. Mas é uma técnica usada para testes. É ótima para isso.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> E a técnica "<strong>bruta</strong>", é simplesmente "<strong>bruta</strong>"!!!! A técnica "<em><strong>bruta</strong></em>" é muito "primitiva", e não permite flexibilidade alguma no código. Nem para testes eu usaria. Só usei para tentar demonstrar a vc, o problema que estava ocorrendo no seu código, que era o "<em><strong>travamento</strong></em>" do <em><strong>protocolo I2C</strong></em>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Se vc estiver implementando algo mais profissional, então use uma metodologia de <strong>Amostragem</strong> (como a que eu usei e que está no arquivo "<em><strong>I2C_x_IRQ_02.zip</strong></em>" no meu primeiro post). Há diversas técnicas de amostragem. Eu usei uma bem simples ("<em><strong>Amostragem Síncrona</strong></em>"), pra evitar confundir os <em><strong>princípios básicos</strong></em> com elementos mais sofisticados, pois o objetivo era apenas conseguir uma medição correta, usando uma técnica de amostragem simples (mas posso te garantir que existem técnicas muito mais sofisticadas, "<em><strong>Assíncronas</strong></em>").</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Então aqui vai uma sugestão: teste com o código que o <strong>RV</strong> postou (o "<em><strong>I2C_Dispaly.ino</strong></em>"). Então imediatamente a seguir, compile e teste com o código "bruto". Eu fiz isso exatamente assim, e funcionou perfeitamente. Se não funcionar, é porque alguma coisa "diferente" vc está fazendo, e só acompanhando isso ou conversando sobre o procedimento, pra descobrir o que é.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Espero ter ajudado.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Boa tarde,
A biblioteca que e…tag:labdegaragem.com,2019-07-16:6223006:Comment:7133612019-07-16T15:48:27.925ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Boa tarde,</p>
<p>A biblioteca que esta usando é outra :</p>
<p><a href="https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home">https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home</a></p>
<p></p>
<p>Sugiro que faça testes com a biblioteca que eu enviei o link. Ela é oficial para Arduino.</p>
<p>Boa tarde,</p>
<p>A biblioteca que esta usando é outra :</p>
<p><a href="https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home">https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home</a></p>
<p></p>
<p>Sugiro que faça testes com a biblioteca que eu enviei o link. Ela é oficial para Arduino.</p> Mas você testou com o sensor…tag:labdegaragem.com,2019-07-16:6223006:Comment:7132542019-07-16T12:25:52.370ZHélio Netohttps://labdegaragem.com/profile/HelioMonteiroSantosNeto
<p>Mas você testou com o sensor de fluxo? o display funciona normal com o contador de amostras mas o valor do fluxo não sai de zero mesmo tendo fluxo.</p>
<p>Mas você testou com o sensor de fluxo? o display funciona normal com o contador de amostras mas o valor do fluxo não sai de zero mesmo tendo fluxo.</p> Bom dia José, eu baixei essa…tag:labdegaragem.com,2019-07-16:6223006:Comment:7131822019-07-16T12:19:58.950ZHélio Netohttps://labdegaragem.com/profile/HelioMonteiroSantosNeto
<p>Bom dia José, eu baixei essa biblioteca aqui:</p>
<p><a href="https://mega.nz/#" target="_blank">https://mega.nz/#</a>!SURRTQwY!y0I7uUAgKnCQsW7ntnONUGxakezjk6NW49p4EIraDcY</p>
<p></p>
<p>É do canal WR kits. Pelo o que eu comparei, não é exatamente a mesma, mas posso estar errado.</p>
<p></p>
<p>Github é um site que eu nunca dei muita atenção, mas vou começar a pesquisar mais por ele a partir de agora.</p>
<p></p>
<p>Muito obrigado pelas dicas José.</p>
<p></p>
<p>Bom dia José, eu baixei essa biblioteca aqui:</p>
<p><a href="https://mega.nz/#" target="_blank">https://mega.nz/#</a>!SURRTQwY!y0I7uUAgKnCQsW7ntnONUGxakezjk6NW49p4EIraDcY</p>
<p></p>
<p>É do canal WR kits. Pelo o que eu comparei, não é exatamente a mesma, mas posso estar errado.</p>
<p></p>
<p>Github é um site que eu nunca dei muita atenção, mas vou começar a pesquisar mais por ele a partir de agora.</p>
<p></p>
<p>Muito obrigado pelas dicas José.</p>
<p></p> Hélio boa noite,
Favor conf…tag:labdegaragem.com,2019-07-15:6223006:Comment:7130372019-07-15T01:16:55.151ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Hélio boa noite, </p>
<p></p>
<p>Favor confirmar se é essa a biblioteca que esta usando para o LCD:</p>
<p><a href="https://github.com/johnrickman/LiquidCrystal_I2C" rel="nofollow">https://github.com/johnrickman/LiquidCrystal_I2C</a></p>
<p></p>
<p><strong>Uma dica importante! </strong></p>
<p>Quando tiver problemas com alguma biblioteca, sugiro que pesquise mais sobre a mesma.</p>
<p>No Github, acesse issues (problemas). …</p>
<p></p>
<p>Hélio boa noite, </p>
<p></p>
<p>Favor confirmar se é essa a biblioteca que esta usando para o LCD:</p>
<p><a rel="nofollow" href="https://github.com/johnrickman/LiquidCrystal_I2C">https://github.com/johnrickman/LiquidCrystal_I2C</a></p>
<p></p>
<p><strong>Uma dica importante! </strong></p>
<p>Quando tiver problemas com alguma biblioteca, sugiro que pesquise mais sobre a mesma.</p>
<p>No Github, acesse issues (problemas). </p>
<p><a href="https://github.com/johnrickman/LiquidCrystal_I2C/issues">https://github.com/johnrickman/LiquidCrystal_I2C/issues</a></p>
<p></p>
<p>Veja esse problema relatado em 2015:</p>
<p><strong>Problems using the library within an interrupt</strong></p>
<p><a href="https://github.com/johnrickman/LiquidCrystal_I2C/issues/1">https://github.com/johnrickman/LiquidCrystal_I2C/issues/1</a></p>
<p></p>
<p><a href="https://forum.arduino.cc/index.php?topic=140588.0">https://forum.arduino.cc/index.php?topic=140588.0</a></p>
<p></p>
<p></p>
<p></p> tente substituir isso lcd.pri…tag:labdegaragem.com,2019-07-14:6223006:Comment:7131562019-07-14T18:48:20.343ZDavidson Fellipe Penahttps://labdegaragem.com/profile/DavidsonFellipePena
<p>tente substituir isso lcd.print(vazao);</p>
<p>por lcd.print (vazao, DEC);</p>
<p></p>
<p>e vê se vai exibir.</p>
<p>tente substituir isso lcd.print(vazao);</p>
<p>por lcd.print (vazao, DEC);</p>
<p></p>
<p>e vê se vai exibir.</p> Se a frequência for calculada…tag:labdegaragem.com,2019-07-12:6223006:Comment:7131222019-07-12T20:29:19.446ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Se a frequência for calculada com o período em milisegundos :</p>
<p></p>
<p><span>Frequência = 1.000 / periodo</span></p>
<p><br/><span>Vazão (L/min) = Frequência / 98 </span></p>
<p></p>
<p></p>
<p></p>
<p>Se a frequência for calculada com o período em milisegundos :</p>
<p></p>
<p><span>Frequência = 1.000 / periodo</span></p>
<p><br/><span>Vazão (L/min) = Frequência / 98 </span></p>
<p></p>
<p></p>
<p></p> Complementando os cálculos pa…tag:labdegaragem.com,2019-07-12:6223006:Comment:7131212019-07-12T20:05:39.731ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Complementando os cálculos para o sensor <span>YF-S401:</span></p>
<p><a rel="nofollow" href="https://forum.arduino.cc/index.php?topic=538366.0">https://forum.arduino.cc/index.php?topic=538366.0</a></p>
<p></p>
<p>Volume = 1 Litro corresponde a 5880 pulsos 1 minuto = 60 segundos</p>
<p></p>
<p>Para a vazão de 1 Litro / minuto => </p>
<p>Frequência = 5880 pulsos / 60 seg = 98 pulsos/seg = 98 Hz </p>
<p> </p>
<p>Complementando os cálculos para o sensor <span>YF-S401:</span></p>
<p><a rel="nofollow" href="https://forum.arduino.cc/index.php?topic=538366.0">https://forum.arduino.cc/index.php?topic=538366.0</a></p>
<p></p>
<p>Volume = 1 Litro corresponde a 5880 pulsos 1 minuto = 60 segundos</p>
<p></p>
<p>Para a vazão de 1 Litro / minuto => </p>
<p>Frequência = 5880 pulsos / 60 seg = 98 pulsos/seg = 98 Hz </p>
<p> </p> olá Hélio.
Acabei de t…tag:labdegaragem.com,2019-07-12:6223006:Comment:7128882019-07-12T15:40:02.527ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Hélio.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Acabei de testar os dois códigos aqui, com <strong>Arduino</strong> <strong>UNO</strong> e um <strong>LCD I2C 20x4</strong>. Ambos funcionaram perfeitamente (o primeiro que postei "<em><strong>I2C_x_IRQ_02.ino</strong></em>", e o seu com as alterações "<em>brutas</em>").</span></p>
<p><span style="font-size: 12pt;"> O <em><strong>endereço</strong></em> do seu <em><strong>LCD…</strong></em></span></p>
<p><span style="font-size: 12pt;">olá Hélio.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Acabei de testar os dois códigos aqui, com <strong>Arduino</strong> <strong>UNO</strong> e um <strong>LCD I2C 20x4</strong>. Ambos funcionaram perfeitamente (o primeiro que postei "<em><strong>I2C_x_IRQ_02.ino</strong></em>", e o seu com as alterações "<em>brutas</em>").</span></p>
<p><span style="font-size: 12pt;"> O <em><strong>endereço</strong></em> do seu <em><strong>LCD I2C</strong></em> é o mesmo que está no código (no caso <strong>0x3F</strong>) ?</span></p>
<p><span style="font-size: 12pt;"> Confira o endereço, pois no comentário do seu código, isto estava confuso.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Peguei seu <strong>código original</strong>, e acrescentei <span style="text-decoration: underline;"><em>apenas</em></span> a parte "<em><strong>bruta</strong></em>" (aquela parte que marquei em amarelo no post anterior). Veja o resultado da compilação:</span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/3277735285?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3277735285?profile=RESIZE_710x" class="align-center" width="679" height="734"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Para o sinal do Sensor, injetei diversas frequências, e todas foram medidas corretamente (claro, considerando o seu <strong>fator</strong> de <strong>5.5</strong>). Testei também com a técnica do ruído de 60 Hz, funcionando da mesma forma.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Para teste, você pode também mudar o fator para "<strong>1.0</strong>", com o que estará medindo diretamente o valor da <strong>frequência</strong> (já que o período de medição é de <em><strong>1 segundo</strong></em>). Testei tanto com "<strong>5.5</strong>" como "<strong>1.0</strong>".</span></p>
<p><span style="font-size: 12pt;"> Estou anexando o código: <em><a href="https://storage.ning.com/topology/rest/1.0/file/get/3277733690?profile=original" target="_blank" rel="noopener">I2C_x_IRQ_00.zip</a></em></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Veja que é exatamente o seu original com o acréscimo das partes "brutas". Tirando isso, não modifiquei absolutamente nada no código.</span></p>
<p><span style="font-size: 12pt;"> <span style="text-decoration: underline;"><em><strong>Mas veja</strong></em></span>: a forma adequada de medir, é da forma que mostrei no primeiro post (arquivo "<em><strong>I2C_x_IRQ_02.ino</strong></em>"), com uma amostragem sistemática (a qual também acabei de testar e funcionou perfeitamente).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso vc ache interessante, posso também implementar uma simulação e postar a mesma.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>