Ajuda com a função mills - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T02:22:53Zhttps://labdegaragem.com/forum/topics/ajuda-com-a-fun-o-mills?commentId=6223006%3AComment%3A871170&feed=yes&xn_auth=noComo disse antes o intuito do…tag:labdegaragem.com,2021-08-01:6223006:Comment:8724852021-08-01T20:40:29.269ZAndre Alveshttps://labdegaragem.com/profile/AndreAlves
<p>Como disse antes o intuito do código é apenas para aprender o funcionamento de algumas coisas que ainda não conheço, e acredito que essas informações serão bastante uteis em diversas aplicações, podendo substituir o Ohmímetro por um sensor e em vez de leds atribuir funções e etc.</p>
<p></p>
<p>Planejo depois que conseguir compreender tudo elaborar algum projetinho e mostrar as coisas aprendidas em aplicação.</p>
<p> </p>
<p>Como disse antes o intuito do código é apenas para aprender o funcionamento de algumas coisas que ainda não conheço, e acredito que essas informações serão bastante uteis em diversas aplicações, podendo substituir o Ohmímetro por um sensor e em vez de leds atribuir funções e etc.</p>
<p></p>
<p>Planejo depois que conseguir compreender tudo elaborar algum projetinho e mostrar as coisas aprendidas em aplicação.</p>
<p> </p> Olá Tiago Merces,
Então li s…tag:labdegaragem.com,2021-08-01:6223006:Comment:8725912021-08-01T20:34:51.930ZAndre Alveshttps://labdegaragem.com/profile/AndreAlves
<p>Olá Tiago Merces,</p>
<p></p>
<p>Então li sua postagem e entendi todas as correções que voce sugeriu.</p>
<p>O problema que estava tendo com o LCD foi resolvido. Para fazer o teste eu estava removendo o cabo que ligava o pino de leitura ao circuito ao em vez de tirar o resistor por isso ele ficava dando um valor errado.</p>
<p></p>
<p>So tenho mais uma questão. Quando R2 é menor que 60 ele incrementa a contagem certo? so que enquanto essa informação é verdadeira ele fica incrementando sem…</p>
<p>Olá Tiago Merces,</p>
<p></p>
<p>Então li sua postagem e entendi todas as correções que voce sugeriu.</p>
<p>O problema que estava tendo com o LCD foi resolvido. Para fazer o teste eu estava removendo o cabo que ligava o pino de leitura ao circuito ao em vez de tirar o resistor por isso ele ficava dando um valor errado.</p>
<p></p>
<p>So tenho mais uma questão. Quando R2 é menor que 60 ele incrementa a contagem certo? so que enquanto essa informação é verdadeira ele fica incrementando sem parar e eu queria que isso acontece-se apenas uma vez a cada transição. Como poderia fazer isso ? Tentei fazer alguns teste baseado em alguns videos que vi mas não tive sucesso.</p>
<p></p>
<p>Assim que terminarmos o código e estiver funcionando conforme planejo eu tento montar um simulação no proteus pra mostrar como tudo esta funcionando o circuito, ou gravo um vídeo e posto aqui.</p>
<p></p> Andre Alves, depois teste iss…tag:labdegaragem.com,2021-07-26:6223006:Comment:8722202021-07-26T20:44:00.422Ztiago merceshttps://labdegaragem.com/profile/tiagomerces
<p>Andre Alves, depois teste isso e me diz o que exibe para você.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9315126880?profile=original" target="_blank" rel="noopener">TEST2.ino</a></p>
<p>Andre Alves, depois teste isso e me diz o que exibe para você.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9315126880?profile=original" target="_blank" rel="noopener">TEST2.ino</a></p> Olá André Alves.
Olhei seu có…tag:labdegaragem.com,2021-07-26:6223006:Comment:8722072021-07-26T16:14:04.878Ztiago merceshttps://labdegaragem.com/profile/tiagomerces
<p>Olá André Alves.</p>
<p>Olhei seu código. Então vamos olhar rapidamente suas alterações antes de dar continuidade.</p>
<p> </p>
<p>Primeira: leds (cima, dentro, baixo + contador).</p>
<p>Segunda: divisão da função “Exibicao_LedCont()” para “Exibicao_LedCont()” e “Exibicao_LedSin()”</p>
<p> </p>
<p>Agora vamos as correções das suas mudanças.</p>
<p></p>
<p><strong>1º) Linha 108 (em “Exibicao_LedCont()”).</strong></p>
<p></p>
<p>Você diz no comentário: “Se a contagem chegar a 3 acende o…</p>
<p>Olá André Alves.</p>
<p>Olhei seu código. Então vamos olhar rapidamente suas alterações antes de dar continuidade.</p>
<p> </p>
<p>Primeira: leds (cima, dentro, baixo + contador).</p>
<p>Segunda: divisão da função “Exibicao_LedCont()” para “Exibicao_LedCont()” e “Exibicao_LedSin()”</p>
<p> </p>
<p>Agora vamos as correções das suas mudanças.</p>
<p></p>
<p><strong>1º) Linha 108 (em “Exibicao_LedCont()”).</strong></p>
<p></p>
<p>Você diz no comentário: “Se a contagem chegar a 3 acende o led1.”, entretanto a formula que você escreve (if (contador > 3 )) não diz isso. A sua formula diz: “Se a contagem for SUPERIOR a 3, isto é, se for igual ou superior a 4).</p>
<p></p>
<p>Exemplo: if(contador >3) é o mesmo que if(contador >=4)</p>
<p>Correção: if(contador ==3) ou if(contador>=3)</p>
<p> </p>
<p><strong>2º) Linha 131 (Em “Exibicao_LedSin())</strong></p>
<p></p>
<p>Aqui existem 2 problemas, o primeiro é de lógica de programação, e o segundo é de lógica matemática.</p>
<p></p>
<p></p>
<p>“if ( 60 >= R2 <=68)”, na matemática isso diria: 60 é MAIOR ou igual a R2, e R2 é MENOR ou igual a 68., ou seja, NESTA LÓGICA, para isso ser verdadeiro, obrigatoriamente R2 deverá ser IGUAL ou INFERIOR a 60. Qualquer outra situação, será falso. Então não faz sentido o R2<=68.</p>
<p></p>
<p>Penso que, como você quer um valor entre estes dois números, o correto seria: 60 <= R2 <= 68.</p>
<p></p>
<p>Entretanto, até onde tenho conhecimento, a formula não pode ser escrita desta forma. Veja o exemplo que postei abaixo. </p>
<p></p>
<p><em style="font-size: 12pt;"><span style="text-decoration: underline;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/9314409288?profile=original" target="_blank" rel="noopener">rascunho.ino</a></span></em></p>
<p></p>
<p>Ao utilizar sua formula, em TODAS as condições ele irá retornar verdadeiro, e tenho certeza que este não é seu objetivo. (obs- existem algumas instruções no código).</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9314273277?profile=original" target="_blank" rel="noopener"></a></p>
<p></p>
<p>A forma correta de se escrever, é utilizando o "e" (&&), seria: if( R2 >= 60 && R2 <= 68). Para facilitar a leitura, no primeiro momento, eu costumo colocar assim: if( ( R2 >= 60) && (R2 <=68) )</p>
<p></p>
<p></p>
<p></p>
<p>Sugestão de leitura: <a rel="nofollow noopener" href="https://www.arduino.cc/reference/pt/language/structure/boolean-operators/logicaland/" target="_blank">https://www.arduino.cc/reference/pt/language/structure/boolean-oper...</a></p>
<p></p>
<p>Isso encerra as correções de suas ultimas mudanças. Agora vamos para o próximo passo.</p>
<p> </p>
<p>Vamos seguindo o cronograma citado anteriormente.</p>
<p></p>
<p></p>
<p><strong>1º) "A cada 1 segundo, seria calculado o valor de R2."</strong></p>
<p></p>
<p>Tudo o que precisamos aqui, é remover aquele delay(1000) e adicionar um “delay” baseado no cálculo com millis. Para isso, primeiro declaramos a variável (chamei de OhmTimer, para ficar parecido com o nome da função, mas pode renomear ao seu gosto e colocar até “cachorro5000”, não fará diferença)<strong>.</strong></p>
<p></p>
<p><em>unsigned long OhmTimer;</em></p>
<p> </p>
<p>depois, no setup, atribuímos o valor de millis() a esta variável</p>
<p></p>
<p><em>OhmTimer = millis();</em></p>
<p></p>
<p>Por fim, colocamos a condição no próprio loop, fazendo com que este se mantenha constante.</p>
<p></p>
<p><em>if (millis() - OhmTimer >= 1000) { Ohmimetro(); OhmTimer = millis();}</em></p>
<p> </p>
<p> </p>
<p><strong>2º) SOMENTE APÓS obter o valor de R2, iremos saber se ele É ou não, maior que 60.</strong></p>
<p></p>
<p>Como é necessário que seja aguardado o valor de R2, consequentemente teremos que aguardar 1 segundo também, então tudo que precisamos fazer é realizar a chamada desta função logo após a conclusão de Ohmimetro()! Então para deixar o processo BEM simples, apenas iremos jogar a função “Contador()” para dentro da condição responsável pelo delay com millis de Ohmimetro(), mas somente após este.</p>
<p></p>
<p><em>if (millis() - OhmTimer >= 1000) {</em></p>
<p><em>Ohmimetro(); </em></p>
<p><em>Contador();</em></p>
<p><em>OhmTimer = millis();</em></p>
<p><em>}</em></p>
<p> </p>
<p><strong>3º) SEEEE ele for menor que </strong><strong><u>60</u></strong><strong>, então iriamos imprimir o valor no LCD</strong></p>
<p>Exatamente a mesma coisa que o item 2. Ohmimetro é requisito de contador. Contador é requisito de Print_LCD(). Então também iremos adicionar esta função dentro da condição responsável pelo delay(com millis) de ohmímetro, mas após o contador() e antes do OhmTimer.</p>
<p> </p>
<p><strong>4º) SEEEE ele for menor que </strong><strong><u>60</u></strong><strong>, iriamos adicionar +1 ao contador.</strong></p>
<p>Já resolvido no item 2.</p>
<p> </p>
<p><strong>5º, 6º, 7º e 8º) Não é necessário <span style="text-decoration: underline;">correção</span></strong></p>
<p><strong> </strong></p>
<p><strong>/// ============= ///</strong></p>
<p>Então, observe que fazendo desta forma, faremos a leitura do ohmímetro() a cada 1 segundo, e colocando na sequencia as funções que utilizam-na como requesito.</p>
<p><strong>//===============//</strong></p>
<p><strong> </strong></p>
<p>E depois disso, ta pronto? Não, principalmente por essa questão: “Como falei quando não tem nem um resistor o Display fica meio bugado piscando.”</p>
<p></p>
<p>Isso pode acontecer por vários motivos, mas não tenho como saber sem conhecer seu circuito, em todo caso, podemos fazer um teste, certo? E, depois de resolvermos a questão do pisca-pisca do lcd, podemos otimizar esse código.</p>
<p></p>
<p>1º passo) Leia o valor de R2, no monitor serial, quando você remove o resistor. Para isso, adicione no Print_LCD():</p>
<p></p>
<p>Serial.print("R2: ");</p>
<p>Serial.println(R2);</p>
<p></p>
<p></p>
<p>2º passo) se der um numero muuuuuuuuuito grande, você pode limitar o valor</p>
<p>Exemplo: if (R2 > 9999) {R2 = 9999;)</p>
<p>3º) Se não funcionar, mantenha essas alterações e altere R2 de float para long, e veja o que acontece.</p>
<p></p>
<p>obs- passo 2 e 3 é apenas um chute, pois não sei o que é exibido.</p> Vamos lá !!
O ";" foi apenas…tag:labdegaragem.com,2021-07-25:6223006:Comment:8721682021-07-25T21:01:01.637ZAndre Alveshttps://labdegaragem.com/profile/AndreAlves
<p>Vamos lá !!</p>
<p>O ";" foi apenas um erro de digitação eu atualizei o sketch e já o removi.</p>
<p>Também fiz a alteração sugerida por você para trocar o delay pelo millis.</p>
<p>Fiz a alteração de ">=" que você falou, realmente foi algo que não percebi na hora que estava escrevendo.</p>
<p></p>
<p>Respondendo suas perguntas</p>
<p>Sim entendi tudo que vc falou e tentei alterar o que consegui.</p>
<p>Como falei quando não tem nem um resistor o Display fica meio bugado…</p>
<p>Vamos lá !!</p>
<p>O ";" foi apenas um erro de digitação eu atualizei o sketch e já o removi.</p>
<p>Também fiz a alteração sugerida por você para trocar o delay pelo millis.</p>
<p>Fiz a alteração de ">=" que você falou, realmente foi algo que não percebi na hora que estava escrevendo.</p>
<p></p>
<p>Respondendo suas perguntas</p>
<p>Sim entendi tudo que vc falou e tentei alterar o que consegui.</p>
<p>Como falei quando não tem nem um resistor o Display fica meio bugado piscando.</p>
<p>Sim eu fiz algumas alterações, separei a função dos leds em duas, uma delas vai mostrar o estado do resistor e a outra vai ser para acender o led de quando o contador for igual ou maior a 3.</p>
<p>E agora quando o valor de R2 esta dentro dos parâmetros ele acende um terceiro led.</p>
<p></p>
<p>vou deixar o arquivo e anexo abaixo<a href="https://storage.ning.com/topology/rest/1.0/file/get/9310473686?profile=original" target="_blank" rel="noopener"></a></p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9310473686?profile=original" target="_blank" rel="noopener">TEST2.ino</a></p>
<p></p>
<p></p>
<p></p>
<p></p> Muito legal! Parabéns pelas m…tag:labdegaragem.com,2021-07-24:6223006:Comment:8718282021-07-24T04:35:53.379Ztiago merceshttps://labdegaragem.com/profile/tiagomerces
<p>Muito legal! Parabéns pelas mudanças.</p>
<p>Adicionei um ino com alguns <span style="text-decoration: underline;">pequenos ajustes estéticos</span>, que são 1<span style="text-decoration: underline;">00% dispensáveis</span> durante a escrita, mas que fica mais arrumado <span style="text-decoration: underline;"><strong>APÓS a conclusão</strong></span> do código.…</p>
<p></p>
<p></p>
<p>Muito legal! Parabéns pelas mudanças.</p>
<p>Adicionei um ino com alguns <span style="text-decoration: underline;">pequenos ajustes estéticos</span>, que são 1<span style="text-decoration: underline;">00% dispensáveis</span> durante a escrita, mas que fica mais arrumado <span style="text-decoration: underline;"><strong>APÓS a conclusão</strong></span> do código.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9305124876?profile=original" target="_blank" rel="noopener">TESTE2.ino</a></p>
<p></p>
<p>Então vamos aos próximos passos. </p>
<p>Agora que está tudo separado, devemos analisar algumas questões em cada uma das funções.</p>
<p></p>
<p></p>
<p><strong>1º) void Ohmimetro(); {</strong></p>
<p><em>Obs- Pessoalmente, não entendi o ";" ali (assim como em outras funções), mas tudo bem.</em></p>
<p></p>
<p>A ideia aqui é obter o valor da diferença entre duas tensões para saber qual resistor foi utilizado. como você já tinha citado que o calculo funcionava, então não analisei ele, entretanto uma coisa deve ser observada.</p>
<p></p>
<p>Veja que nesta rotina existe um <strong>delay(1000)</strong>. Tomando como base as outras funções, acredito que TALVEZ fosse o caso de substituí-lo por um millis, assim, seu código não ficará travado pela maior parte do tempo.</p>
<p></p>
<p></p>
<p><strong>2º) void Print_LCD()</strong></p>
<p></p>
<p>Esta era uma separação que eu realmente achei importante para facilitar a visualização. Veja... anteriormente você tinha comentado que não queria que fosse impresso os valores no lcd, caso uma condição não fosse obedecida. Correto?</p>
<p></p>
<p>Já que ela está isolada, percebe que isso abre espaço para aplicarmos essa condição em alguns locais?</p>
<p>Podemos criar uma condição direto no loop, SOMENTE para esta função, ou podemos criar uma condição em uma outra função existente.</p>
<p></p>
<p>Mas vamos dar continuidade e voltaremos com ela logo depois.</p>
<p></p>
<p></p>
<p><strong>3º) Contador()</strong></p>
<p></p>
<p>Este servirá para tomarmos referência de ordem de chamada baseando-nos nas condições anteriores.</p>
<p></p>
<p>Se nosso objetivo, nesta função, é saber ser o R2 será menor que 60, então, OBRIGATORIAMENTE, deveremos saber o valor de R2 primeiro. Concorda comigo? </p>
<p></p>
<p>Então, a condição para esta função ser chamada, seria no exato instante em que o calculo de R2 foi realizado e, após, ele interrompe até o novo calculo. Caso contrário, ele ficaria incrementando o valor de forma infinita. E acho que este não seria o objetivo (acho que por isso você colocou o delay(1000) no Ohmimetro() ).</p>
<p></p>
<p><strong>4º) Resultado_Cont()</strong></p>
<p>O que temos nesta função, é um "reset" constante, para um "delay" com millis, que será utilizado na função Zerar_Tempo().</p>
<p></p>
<p>Aqui não tem mistério, então vamos dar continuidade.</p>
<p></p>
<p></p>
<p><strong>5º) Exibicao_Led()</strong></p>
<p></p>
<p>Aqui temos alguns problemas baseado nas descrições.</p>
<p></p>
<p><em>if (contador > 3 ) {</em><br/> <em>digitalWrite(led1, HIGH); // Se a contagem <span style="text-decoration: underline;">chegar a 3</span> acende o led1.</em><br/> <em>}</em></p>
<p></p>
<p>Neste caso, sua descrição não bate com sua formula, pois a <span style="text-decoration: underline;">formula</span> diz que:</p>
<p>"Quando o número foi MAIOR que 3, o led acende". </p>
<p>Ou seja, quando ela for <span style="text-decoration: underline;">IGUAL a 3, ela não irá acender.</span></p>
<p></p>
<p>Solução A: se contador for IGUAL a 3: if(contador == 3){</p>
<p>Solução B: Se contador for MAIOR ou IGUAL a 3: if(contador >= 3){</p>
<p></p>
<p>Pessoalmente, quando um determinado número é o teto, eu costumo colocar um "maior ou igual" ou "menor ou igual", para me prevenir de erros que, eventualmente, eu possa não ter percebido por falta de atenção. Ai fica a seu critério, pois qualquer um dos dois resolverá.</p>
<p></p>
<p></p>
<p><strong>6º) Zerar_Tempo()</strong></p>
<p>Aqui temos a função com millis, para zerar o tempo. Simples e direta. Mas vamos as observações:</p>
<p></p>
<p>void Zerar_Tempo(); {<br/> if (millis() - inicioTimer > tempoTimer) { <br/> inicioTimer = 0; // Zera a váriavel inicioTimer.<br/> contador = 0; // Zera o contador.<br/> }</p>
<p></p>
<p>A linha "inicioTimer = 0", é meio morta, afinal, quando você coloca o "contador = 0", na próxima rotina do "<strong>Resultado_Cont()"</strong> ele fará essa alteração. Então perceba que se você colocar a chamada citada, após o "zerar_tempo()", então esta linha não terá nenhuma importância prática, só irá ocupar mais espaço.</p>
<p></p>
<p>Exemplo:</p>
<p>void loop(){</p>
<p>// Ohmimetro() e todas as outras chamadas......</p>
<p>// depois...</p>
<p>Zerar_Tempo();</p>
<p>Resultado_Cont();</p>
<p>}</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p><strong>Então, acredito que o código deveria ter uma rotina semelhante a esta:</strong></p>
<p></p>
<p>1º) A cada 1 segundo, seria calculado o valor de R2.</p>
<p>2º) SOMENTE APÓS obter o valor de R2, iremos saber se ele É ou não, maior que 60.</p>
<p>3º) SEEEE ele for menor que <span style="text-decoration: underline;"><strong>60</strong></span>, então iriamos imprimir o valor no LCD (correto?)</p>
<p>4º) SEEEE ele for menor que <span style="text-decoration: underline;"><strong>60</strong></span>, iriamos adicionar +1 ao contador.</p>
<p>5º) SEEEE o contador for igual a 3 (ou maior), então ligaríamos o led, caso contrário, off.</p>
<p>6º) SEEEE R2 for MAIOR (ou igual?) <span style="text-decoration: underline;"><strong>a 68</strong></span>, então o led2 será acionado, caso contrário, off.</p>
<p></p>
<p>PAUSA ---- Observou que se o valor de R2 estiver <span style="text-decoration: underline;"><strong>entre</strong></span> 61 e 68, nada acontece? É intencional? </p>
<p></p>
<p>7º) Se, após contador >= 1, o tempo for maior que 3s, o tempo reinicia.</p>
<p>8º) Se o contador ficar em 0, o tempo reinicia sempre (é possível otimizar isso ainda)</p>
<p></p>
<p></p>
<p></p>
<p>Então, esta parte é apenas para compreendermos melhor a linha de pensamento do código.</p>
<p></p>
<p>Antes de darmos continuidade para sugestões de melhorias (com exemplos), gostaria de saber:</p>
<p>- Você conseguiu compreender o que apresentei?</p>
<p>- Chegou a fazer alguma modificação no seu código, baseado no citado?</p>
<p>- Quando possui apenas 1 resistor, qual valor é exibido?</p>
<p>- Faltou analisar algo? Me equivoquei em algo? Se sim, por favor, informe.</p>
<p></p>
<p>Aguardo seu retorno.</p> Boa noite Tiago !
Acabei de…tag:labdegaragem.com,2021-07-24:6223006:Comment:8721662021-07-24T00:06:53.629ZAndre Alveshttps://labdegaragem.com/profile/AndreAlves
<p>Boa noite Tiago !</p>
<p></p>
<p>Acabei de dar uma organizada no sketch acho que já podemos prosseguir com a explicação. Estou deixando ele em anexo.</p>
<p></p>
<p>Obrigado.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9304706487?profile=original" target="_blank" rel="noopener">TESTE2.ino</a></p>
<p>Boa noite Tiago !</p>
<p></p>
<p>Acabei de dar uma organizada no sketch acho que já podemos prosseguir com a explicação. Estou deixando ele em anexo.</p>
<p></p>
<p>Obrigado.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9304706487?profile=original" target="_blank" rel="noopener">TESTE2.ino</a></p> Assim que tiver um tempo vou…tag:labdegaragem.com,2021-07-22:6223006:Comment:8720292021-07-22T23:09:21.237ZAndre Alveshttps://labdegaragem.com/profile/AndreAlves
<p>Assim que tiver um tempo vou fazer todas essas modificações que você sugeriu e posto o resultado aqui pra darmos continuidade. Agradeço a ajuda </p>
<p>Assim que tiver um tempo vou fazer todas essas modificações que você sugeriu e posto o resultado aqui pra darmos continuidade. Agradeço a ajuda </p> Então vamos lá, já que você e…tag:labdegaragem.com,2021-07-22:6223006:Comment:8721082021-07-22T12:34:31.283Ztiago merceshttps://labdegaragem.com/profile/tiagomerces
<p>Então vamos lá, já que você está fazendo como um exercício, então vamos pegar esta linha de pensamento para melhorarmos nossa visão sobre o código ok?</p>
<p></p>
<p><strong>Primeiro passo é organizar as coisas antes do setup() e deixar bem comentado.</strong></p>
<p>- Comentar as libs adicionadas </p>
<p>- Comentar os #define</p>
<p>- Separar as variáveis e comenta-las</p>
<p></p>
<p>veja o exemplo na imagem…</p>
<p></p>
<p>Então vamos lá, já que você está fazendo como um exercício, então vamos pegar esta linha de pensamento para melhorarmos nossa visão sobre o código ok?</p>
<p></p>
<p><strong>Primeiro passo é organizar as coisas antes do setup() e deixar bem comentado.</strong></p>
<p>- Comentar as libs adicionadas </p>
<p>- Comentar os #define</p>
<p>- Separar as variáveis e comenta-las</p>
<p></p>
<p>veja o exemplo na imagem</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/9295992098?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/9295992098?profile=RESIZE_710x" class="align-full" width="728" height="246"/></a></p>
<p></p>
<p><strong>Segundo passo é utilizar nomes FÁCEIS para suas variáveis.</strong></p>
<p>A ideia aqui é você e as outras pessoas lerem e identificar RÁPIDO sobre o que se trata.</p>
<p></p>
<p>Então, utilizar variáveis como: "lastDebounceTime" quando você não usa nenhuma função para Debounce, deixa muito ruim a leitura. Pois apesar de ser uma variável genérica (como escrever "cachorro" ou "var138192") mas é muito comum em código, assim como um "i").</p>
<p></p>
<p>Sugestões: VarMillis (que será igualada ao millis()), VarTempo (que será o comparador da subtração ===> millis() - VarMillis == VarTempo), ou qualquer outra coisa.</p>
<p></p>
<p>Certa feita ouvi que programador tem que ser preguiçoso, isto é, quanto menos ele escreve (louvado sejam os for e matrizes) e quanto menos ele precisa pensar para interpretar, melhor.</p>
<p></p>
<p></p>
<p><strong>Terceiro passo é dividir tudo em funções separadas.</strong></p>
<p>Questão: Isso não vai gerar perda de performance? </p>
<p>Resposta: mínima, mas SIM. Quando meu código é muito grande, eu costumo separar em funções e abas para facilitar a visualização. No final, eu gero 2 arquivos, o primeiro é o principal para edição, cheio de funções, e o segundo é o principal editado, isto é, para compilar para o controlador (que basicamente é recortar o conteúdo de algumas funções e colar em outra, reduzindo o número de chamadas).</p>
<p></p>
<p>Questão: Eu não vou perder tempo com isso?</p>
<p>Resposta: Para uma boa parcela aqui do fórum, e pelo tamanho do código, eu diria que sim, mas como a ideia aqui <span style="text-decoration: underline;">é exercitar</span>, então temos que aprender a VER o código separado antes de junta-lo.</p>
<p></p>
<p>No seu caso, podemos criar as seguintes funções:</p>
<p>Ohmimetro();</p>
<p>Print_LCD();</p>
<p>Contador();</p>
<p>Resultado_Cont();</p>
<p>Exibicao_Led();</p>
<p>Zerar_Tempo();</p>
<p></p>
<p>E por fim, claro, comentar cada uma das funções, no mínimo, com o que ela deve fazer.</p>
<p></p>
<p>obs- o loop() pode deixar vazio por agora.</p>
<p></p>
<p></p>
<p></p>
<p>Então, vamos exercitar?</p>
<p>Sugiro que dê uma corrigida nesses pontos (que vai ser rápido), e em seguida daremos continuidade.</p>
<p></p> Boa noite,
Você pode me fal…tag:labdegaragem.com,2021-07-21:6223006:Comment:8720082021-07-21T23:41:22.861ZAndre Alveshttps://labdegaragem.com/profile/AndreAlves
<p>Boa noite, </p>
<p></p>
<p>Você pode me falar uma forma de identificar que o circuito está sem o resistor. Algo como uma condição pra caso essa resistência for muito alta imprimir o texto "sem resistor" resolveria?</p>
<p></p>
<p>Obrigado.</p>
<p>Boa noite, </p>
<p></p>
<p>Você pode me falar uma forma de identificar que o circuito está sem o resistor. Algo como uma condição pra caso essa resistência for muito alta imprimir o texto "sem resistor" resolveria?</p>
<p></p>
<p>Obrigado.</p>