Como fazer com que a função tone respeite a duração específicada? - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T22:34:48Zhttps://labdegaragem.com/forum/topics/como-fazer-com-que-a-fun-o-tone-respeite-a-dura-o-espec-ficada?commentId=6223006%3AComment%3A881901&xg_source=activity&feed=yes&xn_auth=noboa tarde Elcids vc esta sem…tag:labdegaragem.com,2022-06-29:6223006:Comment:8843972022-06-29T20:11:56.022ZEliseu Donadonihttps://labdegaragem.com/profile/eliseudonadoni
<p>boa tarde Elcids vc esta sem Skype, se tiver passa pra mim, presizo falar com vc um abrço</p>
<p>boa tarde Elcids vc esta sem Skype, se tiver passa pra mim, presizo falar com vc um abrço</p> olá Guilherme.
Sobre o…tag:labdegaragem.com,2022-03-25:6223006:Comment:8821082022-03-25T20:31:13.971ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre o envio do <em><strong>comando para testar tons</strong></em> via <strong><em>Terminal do Arduino</em></strong>, não se esqueça de configurar a <strong><em>velocidade</em></strong> no seu terminal <em>(neste caso <strong>115200</strong>)</em>, do contrário o <em><strong>ESP32</strong></em> não receberá o comando corretamente. Veja a figura a seguir, onde mostro o exemplo para…</span></p>
<p><span style="font-size: 12pt;">olá Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre o envio do <em><strong>comando para testar tons</strong></em> via <strong><em>Terminal do Arduino</em></strong>, não se esqueça de configurar a <strong><em>velocidade</em></strong> no seu terminal <em>(neste caso <strong>115200</strong>)</em>, do contrário o <em><strong>ESP32</strong></em> não receberá o comando corretamente. Veja a figura a seguir, onde mostro o exemplo para enviar 3 comandos, gerando 3 tons um em seguida do outro:</span></p>
<p></p>
<p style="text-align: center;"><span style="font-size: 8pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/10237999457?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/10237999457?profile=RESIZE_710x" class="align-center" width="469" height="369"/></a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Observe no Terminal, que na opção do <strong><em>"final de linha"</em></strong>, vc pode selecionar qualquer das 4 opções disponíveis, pois o código irá funcionar em todos os casos (mas a opção mais comum é <strong><em>"Ambos NL e CR"</em></strong>, que é também considerada "padrão").</span></p>
<p><span style="font-size: 12pt;"> E em uma única linha, vc pode enviar apenas um comando ou quantos desejar. Eles serão executados sequencialmente.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ah, como vc pode ver na figura anterior, no meu caso o Terminal está em Português (o padrão no meu computador), mas em inglês não será muito diferente.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre a documentação, vou deixar uma dica valiosa.</span></p>
<p><span style="font-size: 12pt;"> <em><span style="text-decoration: underline;">Veja</span>:</em> <strong><em>"alti1"</em></strong> e <strong><em>"alti2"</em></strong> são nomes não muito representativos, e não clarificam para o que estas variáveis são usadas. Observe que daqui a algum tempo, nem mesmo vc saberá o que estas variáveis significam, e seria bom saber isso sem precisar analisar o código (e sim apenas olhando o nome das variáveis).</span></p>
<p><span style="font-size: 12pt;"> Por isso, procure usar nomes que possam aludir ao significado do uso das <em><strong>Variáveis</strong></em> (o mesmo vale para <strong><em>funções</em></strong> ou quaisquer outros nomes no código, incluindo os definidos via <strong><em>"#define"</em></strong>).</span></p>
<p><span style="font-size: 12pt;"> Não sei o que <em><strong>"alti1"</strong></em> e <strong><em>"alti2"</em></strong> significam exatamente, mas vou chutar dois nomes que acredito serem mais representativos (de acordo com o que vc descreveu), como mostro a seguir:</span></p>
<p></p>
<p><span style="font-size: 16px;"> <span style="font-size: 12pt;"><em><strong>float alti_Delta_subida;</strong></em></span></span></p>
<p><span style="font-size: 16px;"><span> <span style="font-size: 12pt;"><em><strong>float alti_Delta_queda;</strong></em></span></span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Faz uma diferença, não é?</span></p>
<p></p>
<p><span style="font-size: 12pt;"> E não fique receoso (ou com preguiça) de colocar nomes um pouco mais longos, mas também não exagere no comprimento (apenas o suficiente para ser entendido, senão começa a "poluir" e dificultar o entendimento do código).</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Qualquer dúvida ou dificuldade, e que esteja ao meu alcance para ajudar, fique à vontade para perguntar.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> E sucesso no seu Projeto !!!</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Opa, peço desculpas pela demo…tag:labdegaragem.com,2022-03-25:6223006:Comment:8820602022-03-25T19:17:38.984ZGuilherme Carrijohttps://labdegaragem.com/profile/GuilhermeCarrijo
<p>Opa, peço desculpas pela demora em responder!!</p>
<p></p>
<p>Eu tentei mas não consegui resposta quando uso o terminal.</p>
<p>Já quanto ao restante do código, funcionou sem problema algum. A única outra coisa que coloquei foi uma nova função para que o altímetro não dispare o alarme de altitude crítica na subida, só na descida. </p>
<p></p>
<p>Inclusive to tentando fazer o exercicio comentado e descrever melhor o que está sendo implementado.</p>
<p>Nesse caso fiz…</p>
<p>Opa, peço desculpas pela demora em responder!!</p>
<p></p>
<p>Eu tentei mas não consegui resposta quando uso o terminal.</p>
<p>Já quanto ao restante do código, funcionou sem problema algum. A única outra coisa que coloquei foi uma nova função para que o altímetro não dispare o alarme de altitude crítica na subida, só na descida. </p>
<p></p>
<p>Inclusive to tentando fazer o exercicio comentado e descrever melhor o que está sendo implementado.</p>
<p>Nesse caso fiz isso</p>
<p></p>
<p>//***********************************************************************</p>
<p>// Variaveis para comparação de valores de altitude e definicao se delta positivo (subida) ou negativo (queda)<br/>float alti1;<br/>float alti2;</p>
<p>//***********************************************************************</p>
<p></p>
<p>if ( ( int( alti_Pressao ) < 6000 ) && ( int( alti_Pressao ) > 5000 ) && ((alti1 - alti2) < 0) ) // se a pressao esta' entre 5000 e 6000 e em queda (delta negativo)<br/> {<br/> Display_TFT.fillScreen( TFT_RED ); // sinaliza via tela vermelha.<br/> Display_TFT.print( int( alti_Pressao ) ); // exibe no Display, a Pressao atual.</p>
<p></p>
<p>**********************************************************************************</p>
<p></p>
<p>Acabei de baixar aqui o novo codigo modificado. Vou botar pra rodar e volto com as novidades ahahahah</p>
<p></p>
<p>Abraço!</p> Olá novamente Guilherme.
…tag:labdegaragem.com,2022-03-23:6223006:Comment:8817842022-03-23T23:59:18.263ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">Olá novamente Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre a documentação, é também um exercício. É algo que temos que fazer constantemente, praticamente impor uma rotina. Mas claro, nem sempre é fácil, e infelizmente 99% dos programadores não fazem isso da forma que deveriam (a verdade é que a maioria detesta fazer isso, e não se incomodam em admitir isso).</span></p>
<p><span style="font-size: 12pt;"> Mas se vc fizer a…</span></p>
<p><span style="font-size: 12pt;">Olá novamente Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre a documentação, é também um exercício. É algo que temos que fazer constantemente, praticamente impor uma rotina. Mas claro, nem sempre é fácil, e infelizmente 99% dos programadores não fazem isso da forma que deveriam (a verdade é que a maioria detesta fazer isso, e não se incomodam em admitir isso).</span></p>
<p><span style="font-size: 12pt;"> Mas se vc fizer a documentação desde o início, já será um passo grande pra facilitar o gerenciamento do próprio código. E não precisa seguir completamente as regras técnicas (que são bem rigorosas em relação à documentação). Para códigos do dia a dia, tente seguir a "receita" de como fiz no seu caso, pois irá te ajudar muito conforme vc desenvolve estes códigos.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre a questão do <strong><em>Nível Lógico de acionamento do Buzzer</em></strong>, o importante é que vc tenha entendido o motivo de especificar isso no código. Procure sempre fazer isso. Note inclusive que isso deveria ser feito também em relação ao <strong><em>Nível Lógico</em></strong> presente no pino de um <em><strong>Botão</strong></em> quando este é acionado (e embora isso seja muito simples, eu preferi não fazer no seu código pra não parecer rigoroso e chato).</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre a questão de usar o <strong><em>"PWM via LEDC"</em></strong>, também o importante é que vc tenha entendido o motivo: garantir que a geração da frequência dos tons não tenha influência da execução do código (especificamente <strong><em>Interrupções</em></strong> e <strong><em>chaveamento de Tasks/Processos</em></strong> no <strong><em>ESP32</em></strong>).</span></p>
<p><span style="font-size: 12pt;"> Assim, alterei o último código que postei, para que a geração dos tons no <em><strong>Buzzer</strong></em> seja com <em>"PWM via LEDC" do ESP32</em>. Inclusive essa alteração simplificou um pouco o código. Mas não há nada realmente significativo para falar sobre isso, pois todo o código está funcionalmente comentado, além da alteração ser bem simples. Eu inclusive t<span>estei na prática e funcionou como esperado, gerando os tons com grande fidelidade.</span></span></p>
<p></p>
<p><span style="font-size: 12pt;"> O código com <em>"PWM /LEDC"</em>, é este: <span style="font-size: 10pt;"><strong><em><a href="https://storage.ning.com/topology/rest/1.0/file/get/10233334487?profile=original" target="_blank" rel="noopener">"<span style="text-decoration: underline;">alti_1_V08t_PWM_01.zip</span>"</a></em></strong></span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Sobre a questão de usar o <em><strong>pino "2"</strong></em> para controle do <strong><em>Buzzer</em></strong>, recomendo usar um outro pino, pois caso em algum momento futuro vc precise trocar o Buzzer por um outro que tenha uma impedância perceptível, evitará problemas com o <strong><em>"boot"</em></strong> do <strong><em>ESP32</em></strong>. Claro, se trocar o pino, não esqueça de alterar o número dele no código, assim como setar o Nível Lógico ("HIGH" ou "LOW") adequadamente. Estes settings são mostrados na figura a seguir:</span></p>
<p style="text-align: center;"><span style="font-size: 8pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/10233329899?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/10233329899?profile=RESIZE_710x" class="align-center" width="498" height="164"/></a></span></p>
<p></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Ah, vc não comentou se testou o código do post anterior. Caso tenha testado, espero que tenha apreciado o "feature" de enviar <strong><em>comandos</em></strong> via <strong><em>Terminal do Arduino</em></strong> para testar a geração de tons ou sequências de tons no <strong><em>Buzzer</em></strong> (no post anterior eu mostrei exemplos de como usar isso).</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Mas rapaaazzz, muito obrigado…tag:labdegaragem.com,2022-03-22:6223006:Comment:8819512022-03-22T15:39:26.682ZGuilherme Carrijohttps://labdegaragem.com/profile/GuilhermeCarrijo
<p>Mas rapaaazzz, muito obrigado por toda ajuda! Principalmente em documentar melhor. To tentando melhorar essas coisas também.</p>
<p>Humm no caso pra usar o PWM eu poderia migrar o buzzer pra outro canal que não o 2, mantendo do duty-cicle em 50%, é isso?</p>
<p>Quanto a ligação do buzzer ele funciona em high; então acho que a implementação é essa mesma.</p>
<p></p>
<p>Mais uma vez, muito obrigado!</p>
<p>Mas rapaaazzz, muito obrigado por toda ajuda! Principalmente em documentar melhor. To tentando melhorar essas coisas também.</p>
<p>Humm no caso pra usar o PWM eu poderia migrar o buzzer pra outro canal que não o 2, mantendo do duty-cicle em 50%, é isso?</p>
<p>Quanto a ligação do buzzer ele funciona em high; então acho que a implementação é essa mesma.</p>
<p></p>
<p>Mais uma vez, muito obrigado!</p> olá novamente Guilherme.
…tag:labdegaragem.com,2022-03-21:6223006:Comment:8817632022-03-21T16:50:16.774ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá novamente Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Quando eu ouvi o som do <em><strong>Buzzer</strong></em> gerado no seu código original, achei um pouco estranho, pois as frequências dos tons gerados pareciam ser diferentes daquelas que vc estava setando. Mas no código que postei, não me atentei muito a isso, e reproduzi a mesma função original que setava a frequência do Buzzer.</span></p>
<p><span style="font-size: 12pt;"> …</span></p>
<p><span style="font-size: 12pt;">olá novamente Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Quando eu ouvi o som do <em><strong>Buzzer</strong></em> gerado no seu código original, achei um pouco estranho, pois as frequências dos tons gerados pareciam ser diferentes daquelas que vc estava setando. Mas no código que postei, não me atentei muito a isso, e reproduzi a mesma função original que setava a frequência do Buzzer.</span></p>
<p><span style="font-size: 12pt;"> Mas como fiquei com isso na cabeça, resolvi me atentar ao setting da frequência no código, e para minha surpresa vi que estava incorreta. O método usado pelo autor original (o "pschatzmann" do link que vc postou), usa uma <strong><em>Interrupção gerada por um Timer de Hardware</em></strong>, para inverter o sinal no <strong><em>pino de ON/OFF do Buzzer</em></strong>, e por isso essas Interrupções tem que ocorrer na <strong><em>metade do período da frequência desejada</em></strong>. Mas da forma que estava no código, estava gerando Interrupções numa taxa exatamente igual ao período da frequência desejada, e como resultado, os tons audíveis no Buzzer tinham sempre a metade da frequência esperada, confirmando minha suspeita dos tons parecerem estranhos. A figura a seguir mostra como isto estava sendo feito, onde salientei em amarelo:</span></p>
<p></p>
<p style="text-align: center;"><span style="font-size: 8pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/10226640292?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/10226640292?profile=RESIZE_710x" class="align-center" width="557" height="171"/></a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Assim, modifiquei a função para que gerasse os tons nas frequências corretas. Isto consistiu em apenas <em><strong>dividir por 2</strong></em> o valor setado para o período do Timer. Claro, testei novamente e dessa vez percebi que os tons estavam "normais". Também medi os períodos gerados no Buzzer e constatei que agora estavam corretos. A figura a seguir mostra a alteração, salientada na cor verde:</span></p>
<p></p>
<p style="text-align: center;"><span style="font-size: 8pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><span><a href="https://storage.ning.com/topology/rest/1.0/file/get/10226641272?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/10226641272?profile=RESIZE_710x" class="align-center" width="613" height="180"/></a></span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> O <em><strong>"if"</strong></em> na parte salientada em azul, apenas impede o setting do Timer quando a frequência é zero (o que corresponde a um sinal "DC").</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Aproveitei, e também fiz algumas pequenas melhorias no código. Algumas são um tanto sutis e de pouco significado. Mas duas dessas melhorias eu acredito que vale a pena mencionar:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong><em>1)</em></strong> melhoria do controle ON/OFF do Driver do Buzzer. A <strong><em>ISR</em></strong> da <strong><em>Interrupção do Timer</em></strong>, agora também desliga o Driver do Buzzer quando ele não está habilitado. Isso garante que o Driver fique "OFF", caso alguma Interrupção ocorra depois que o controle lógico "mandou" desligar o Buzzer. Essa medida pode ser considerada um exagero, uma vez que mesmo para frequências muito baixas, é improvável que uma Interrupção ocorra depois que o controle lógico desligou o Buzzer (mas como não é impossível de ocorrer, já que as as Interrupções são "pseudo-assíncronas" ao controle, achei melhor deixar implementado esse desligamento "extra").</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong><em>2)</em></strong> acrescentei a execução de um comando enviado <span>via Terminal do Arduino, </span>para testar os tons gerados no Buzzer. Para isso basta digitar no Terminal, um comando simples especificando a frequência (em Hz) e a duração (em mili-segundos), para o tom a ser gerado. Por exemplo: caso deseje gerar <em>1430 Hz</em> durante <em>50 mili-segundos</em>, basta digitar e enviar pelo Terminal o seguinte comando:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <strong><em>1430:50</em></strong></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ao invés do <em>"<strong>:</strong>"</em>, vc pode usar qualquer caracter de separação. Mas aconselho usar o <em>":"</em>, pois parece mais lógico. No Terminal vc também pode digitar vários comandos seguidos separados por um "espaço", e enviar todos de uma vez só, como no exemplo a seguir:</span></p>
<p></p>
<p><span style="font-size: 12pt;"><span> <strong><em>2100:20 1000:80 500:200</em></strong></span></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Mas claro, devido ao "<em>delay(150)"</em> que existe no final do <strong><em>"loop"</em></strong> do <strong><em>Arduino</em></strong>, entre cada som gerado haverá justamente um intervalo mínimo de <em>150ms</em>. Mas observe que se vc quiser apenas inserir um intervalo adicional, basta colocar um comando com <strong><em>frequência zero</em></strong>, como por exemplo <em><strong>0:50</strong></em> para <em>50 mili-segundos adicionais</em>, e isto vc pode acrescentar a seu critério entre cada comando que vc digitou na linha do Terminal.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> A figura a seguir mostra a execução do comando no "loop" do Arduino, que como se pode ver é muito simples:</span></p>
<p></p>
<p style="text-align: center;"><span style="font-size: 8pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/10226652077?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/10226652077?profile=RESIZE_710x" class="align-center" width="626" height="193"/></a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Aproveito também para algumas observações importantes:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <span style="font-size: 14pt;"><em><strong>-</strong></em></span> sobre a questão do ON/OFF do Driver do Buzzzer no Hardware, que eu me referi no post anterior, explico agora por que é importante. Como se está gerando tons no Buzzer, obrigatoriamente este Buzzer deve ser do tipo "passivo", e a maioria deles possui uma impedância de carga relativamente baixa, normalmente menor que 50 Ohms. Assim se o sinal de controle do Buzzer for deixado "ON" por longos períodos, poderá sobre-aquecer o <strong><em>Transistor Driver</em></strong> que existe na plaquinha do Buzzer, podendo inclusive "queimar" o mesmo. Assim, é importante deixar o Driver (o Transistor) desligado quando não estiver gerando sinais no Buzzzer. Por isso é importante saber se o Buzzer utilizado é ligado com <strong><em>"HIGH"</em></strong> ou <strong><em>"LOW"</em></strong>. Além disso, isso evita consumo exagerado da alimentação, principalmente se vc está usando o <strong><em>"sleep"</em></strong> do <em>ESP32</em>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Inclusive seria de bom senso, evitar usar o <em><strong>pino</strong> <strong>"2"</strong></em> para controle do Buzzer, pois este pino tem influência no <em><strong>"boot"</strong></em> do <em>ESP32</em>, e dependendo do Buzzer usado, este poderá "enganar" o "boot" após um reset.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> <span style="font-size: 14pt;"><em><strong>-</strong></em></span> a placa ESP32 "TTGO", tem um <strong><em>"Pullup" externo</em></strong> (normalmente 100k) conectado ao <strong><em>pino</em> <em>"35"</em></strong> do ESP32. Isto porque este pino é <strong><em>"Input only"</em></strong>, e não possui <strong><em>"Pullup" interno</em></strong>. Assim para aqueles que queiram usar <span style="text-decoration: underline;"><em>outras placas</em></span> ESP32, o pino "35" <span style="text-decoration: underline;"><em>não é</em></span> uma boa opção para a conexão de um Botão, já que a maioria das outras placas não possui um "Pullup" externo naquele pino. Mas diversos outros pinos podem ser usados, e deve ser um pino de <strong><em>"RTC_IO"</em></strong> caso o <em><strong>"wakeup"</strong></em> do ESP32 seja efetivamente usado (não esquecer de setar o <strong><em>número do pino</em></strong> na função <span style="font-size: 10pt;"><strong><em>"esp_sleep_enable_ext0_wakeup"</em></strong></span>).</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> <span style="font-size: 14pt;"><em><strong>-</strong></em></span> ao invés de usar o método via <em><strong>Timer</strong></em> para gerar tons no Buzzer, seria mais interessante usar um <em><strong>sinal PWM</strong></em> com ciclo de <strong><em>50%</em></strong>, usando o Hardware do <em><strong>"LEDC"</strong></em> do <em>ESP32</em>. Isso garantiria uma geração mais precisa das frequências dos tons, uma vez que os períodos não teriam influência da execução do código (especificamente devido às <strong><em>IRQs</em></strong> e aos <strong><em>chaveamentos de Processos</em></strong> existentes no <em>ESP32</em>).</span></p>
<p></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Segue o código com as alterações: <span style="font-size: 10pt;"><strong><em><a href="https://storage.ning.com/topology/rest/1.0/file/get/10226651285?profile=original" target="_blank" rel="noopener">"<span style="text-decoration: underline;">alti_1_V08t_03.zip</span>"</a></em></strong></span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> olá Guilherme.
Certame…tag:labdegaragem.com,2022-03-19:6223006:Comment:8819012022-03-19T11:39:14.408ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Certamente o <em><strong>RV</strong></em> <em>(<strong>Minerin</strong>)</em> irá resolver isso. Mas me adiantei um pouco e aproveitei para organizar seu código, além de documentá-lo um pouco.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Claro, também resolvi o problema que vc relatou sobre o Buzzer não estar parando, e inclusive testei o funcionamento no…</span></p>
<p><span style="font-size: 12pt;">olá Guilherme.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Certamente o <em><strong>RV</strong></em> <em>(<strong>Minerin</strong>)</em> irá resolver isso. Mas me adiantei um pouco e aproveitei para organizar seu código, além de documentá-lo um pouco.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Claro, também resolvi o problema que vc relatou sobre o Buzzer não estar parando, e inclusive testei o funcionamento no ESP32.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Segue o código documentado e com o problema resolvido: <span style="font-size: 10pt;"><em><strong><a href="https://storage.ning.com/topology/rest/1.0/file/get/10221317874?profile=original" target="_blank" rel="noopener">"<span style="text-decoration: underline;">alti_1_V08t_02.zip</span>"</a></strong></em></span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Mas há um ponto importante que vc precisa verificar, que é sobre o tipo do Buzzer que vc está usando no seu Hardware.</span></p>
<p><span style="font-size: 12pt;"> Vc precisa checar se seu Buzzer é acionado por <strong>"HIGH"</strong> ou por <strong>"LOW"</strong>, e setar isso no código, conforme vc pode ver na figura a seguir:</span></p>
<p></p>
<p style="text-align: center;"><span style="font-size: 8pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/10221316276?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/10221316276?profile=RESIZE_710x" class="align-center" width="669" height="220"/></a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Neste caso, eu deixei setado como <strong>"HIGH"</strong> (onde está marcado em <em>roxo</em> na figura). Mas se seu Buzzer for acionado por <strong>"LOW"</strong>, então vc deve setar isso naquela linha do código mostrada na figura anterior. <span style="text-decoration: underline;"><strong><em>Isso é muito importante</em></strong></span><em> (depois explico porque).</em></span></p>
<p><span style="font-size: 12pt;"> Se vc não tiver certeza sobre isso, post aqui uma foto do seu Buzzer, para que possamos ajudar nesta identificação.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Observe também na figura anterior, que o pino onde o Buzzer está conectado já está setado para "<strong>2</strong>" (onde está marcado em <em>verde</em> na figura), que é o que vc disse estar usando.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso tenha alguma dúvida, fique à vontade para perguntar.</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><span style="font-size: 12pt;"> Elcids</span></p>