Ajuda com arduino - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T10:59:36Zhttps://labdegaragem.com/forum/topics/ajuda-com-arduino-2?commentId=6223006%3AComment%3A731209&xg_source=activity&feed=yes&xn_auth=noolá Matheus.
Ok.
…tag:labdegaragem.com,2020-05-16:6223006:Comment:7326232020-05-16T11:44:20.397ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ok.</span></p>
<p><span style="font-size: 12pt;"> Vi que vc usou novamente o "<em><strong>readString</strong></em>". Esta função tende a ser "<span style="text-decoration: underline;"><em>bloqueante</em></span>", uma vez que está condicionada a um "<em><strong>timeout</strong></em>" (claro, pode ser alterado a qualquer momento via "<em><strong>setTimeout</strong></em>", mas isso não é…</span></p>
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ok.</span></p>
<p><span style="font-size: 12pt;"> Vi que vc usou novamente o "<em><strong>readString</strong></em>". Esta função tende a ser "<span style="text-decoration: underline;"><em>bloqueante</em></span>", uma vez que está condicionada a um "<em><strong>timeout</strong></em>" (claro, pode ser alterado a qualquer momento via "<em><strong>setTimeout</strong></em>", mas isso não é muito adequado, a não ser que seja feito sempre antes da chamada de qualquer outra função que dependa desse "<em><strong>timeout</strong></em>").</span></p>
<p><span style="font-size: 12pt;"> Neste momento, isto não está tendo impacto no seu código. Mas a médio ou longo prazo, se vc acrescentar outros elementos (como sensores ou módulos que necessitem pronta resposta), então o "<em><strong>readString</strong></em>" poderá se tornar um problema.</span></p>
<p><span style="font-size: 12pt;"> Então se possível, procure usar da forma como demonstrei nos códigos "<em><strong>Fita_LED_xx</strong></em>", os quais postei anteriormente. Usando da forma como está nestes códigos (sem o "<span><em><strong>readString</strong></em></span>"), vc evitará eventuais problemas "futuros" de engasgamento no funcionamento do seu Sistema.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Ola Elcids, desculpa a demora…tag:labdegaragem.com,2020-05-14:6223006:Comment:7320002020-05-14T23:53:37.953ZMatheus Victor Avelino Silvahttps://labdegaragem.com/profile/MatheusVictorAvelinoSilva
<p>Ola Elcids, desculpa a demora pra responder, estava meio ocupado esses dias e só pude mexer com arduino essa semana. Fiz algumas modificações no seu sketch e esta funcionando perfeitamente , muito obrigado por ter me ajudado.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/5026361286?profile=original" target="_blank" rel="noopener">Controle_Leds.ino</a></p>
<p>Ola Elcids, desculpa a demora pra responder, estava meio ocupado esses dias e só pude mexer com arduino essa semana. Fiz algumas modificações no seu sketch e esta funcionando perfeitamente , muito obrigado por ter me ajudado.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/5026361286?profile=original" target="_blank" rel="noopener">Controle_Leds.ino</a></p> ah Matheus,
Caso vc qu…tag:labdegaragem.com,2020-04-28:6223006:Comment:7310982020-04-28T22:56:35.503ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">ah Matheus,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso vc queira que a atualização tenha efeito imediatamente (ou seja, sem esperar concluir o ciclo atual), então use este outro código, onde acrescentei esta característica:</span></p>
<p><span style="font-size: 12pt;"> Segue o arquivo: …</span></p>
<p><span style="font-size: 12pt;">ah Matheus,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso vc queira que a atualização tenha efeito imediatamente (ou seja, sem esperar concluir o ciclo atual), então use este outro código, onde acrescentei esta característica:</span></p>
<p><span style="font-size: 12pt;"> Segue o arquivo: <a href="https://storage.ning.com/topology/rest/1.0/file/get/4541086489?profile=original" target="_blank" rel="noopener">"<em><strong>Fita_LED_02.zip</strong></em>"</a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> olá Matheus.
Partindo…tag:labdegaragem.com,2020-04-28:6223006:Comment:7312452020-04-28T09:24:58.465ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Partindo do seu código "<strong><em>sketch_apr27b.ino</em></strong>", fiz a implementação para obter o resultado que vc esperava.</span></p>
<p><span style="font-size: 12pt;"> Infelizmente este seu código <em><strong>"27b"</strong></em> ainda estava um pouco bagunçado, e desrespeitando regras de boas práticas de programação (já percebi que isto não é seu objetivo).…</span></p>
<p></p>
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Partindo do seu código "<strong><em>sketch_apr27b.ino</em></strong>", fiz a implementação para obter o resultado que vc esperava.</span></p>
<p><span style="font-size: 12pt;"> Infelizmente este seu código <em><strong>"27b"</strong></em> ainda estava um pouco bagunçado, e desrespeitando regras de boas práticas de programação (já percebi que isto não é seu objetivo).</span></p>
<p><span style="font-size: 12pt;"> Assim eu o organizei, analisei o que precisava ser feito, e reestruturei de uma forma que será fácil pra vc entender e usar. Alterei alguns nomes de Variáveis e Funções, de forma a ficar mais lógico o entendimento.</span></p>
<p><span style="font-size: 12pt;"> Como ainda é um código simples, espero que vc o use para aprender como a coisa deve ser feita, principalmente em termos de organização do código. Olhe com cuidado, e se vc realmente quiser, tenho certeza que vc irá aprender.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Segue o código: <a href="https://storage.ning.com/topology/rest/1.0/file/get/4536191335?profile=original" target="_blank" rel="noopener">"<em><strong>Fita_LED_01.zip</strong></em>"</a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> 1° estou utilizando uma fita…tag:labdegaragem.com,2020-04-28:6223006:Comment:7312392020-04-28T00:21:10.822ZMatheus Victor Avelino Silvahttps://labdegaragem.com/profile/MatheusVictorAvelinoSilva
<p>1° estou utilizando uma fita de leds ws2812 de 60 leds ligada na digital 6 de um arduino mega, que esta sendo alimenta por uma fonte de computador.</p>
<p>2° estou enviando pela serial valores para controlar a fita ex:</p>
<p>03 05 255 00 06 255,000,000 000,255,000 000,000,255 255,000,255 000,255,255</p>
<p>03 é a customização, que é a quantidade de cores que a fita vai acender.</p>
<p>05 é o efeito que indica se a fita vai ficar acesa, piscando entre outros.</p>
<p>255 é o brilho.</p>
<p>00…</p>
<p>1° estou utilizando uma fita de leds ws2812 de 60 leds ligada na digital 6 de um arduino mega, que esta sendo alimenta por uma fonte de computador.</p>
<p>2° estou enviando pela serial valores para controlar a fita ex:</p>
<p>03 05 255 00 06 255,000,000 000,255,000 000,000,255 255,000,255 000,255,255</p>
<p>03 é a customização, que é a quantidade de cores que a fita vai acender.</p>
<p>05 é o efeito que indica se a fita vai ficar acesa, piscando entre outros.</p>
<p>255 é o brilho.</p>
<p>00 é o milissegundos para dar uma pausa para acender cada led.</p>
<p>06 é o segundos para dar uma pausa entre as trocas de cores.</p>
<p>e o resto é o rgb das cinco cores.</p>
<p>3° leio esses valores da serial, utilizo o substring para separar os valores e gravo em um vetor de strings, converto as strings em inteiro e gravo num vetor inteiro. Depois gravo na eeprom do arduino.</p>
<p>4° depois faço alguns if para verificar qual customização foi enviada e utilizo o switch case para ver o efeito enviado,depois chamo a função do efeito. Como o <span>"</span><em><strong>sketch_apr27b.ino</strong></em><span>" é só para teste não tem essa parte, mas vou deixar o sketch principal abaixo.</span></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/4532897181?profile=original" target="_blank" rel="noopener">Controle_Leds.ino</a></p> olá Matheus.
Irei veri…tag:labdegaragem.com,2020-04-27:6223006:Comment:7310642020-04-27T21:34:22.487ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Irei verificar este seu código "<em><strong>sketch_apr27b.ino</strong></em>".</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Mas o melhor seria se vc descrevesse o que ele deve fazer. Vou te sugerir que dê uma olhada em como isto pode ser feito. Mas por favor, faça o possível para olhar isto. É neste post: …</span></p>
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Irei verificar este seu código "<em><strong>sketch_apr27b.ino</strong></em>".</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Mas o melhor seria se vc descrevesse o que ele deve fazer. Vou te sugerir que dê uma olhada em como isto pode ser feito. Mas por favor, faça o possível para olhar isto. É neste post: <a rel="nofollow noopener" href="http://labdegaragem.com/forum/topics/programa-em-arduino-que-utiliza-dois-sensores-de-fluxo-de-gua-e?commentId=6223006%3AComment%3A729566" target="_blank">"<em><strong>exemplo de como descrever o funcionamento</strong></em>"</a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> O tópico onde está este post que te passei acima, é longo, então basta ler especificamente o post do link, somente ele ok?</span></p>
<p><span style="font-size: 12pt;"> Acredito que vai te ajudar a descrever o funcionamento do seu Sistema aqui, facilitando assim para que eu possa ajudá-lo.</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> Ola Elcids, seu sketch funcio…tag:labdegaragem.com,2020-04-27:6223006:Comment:7311462020-04-27T21:06:53.152ZMatheus Victor Avelino Silvahttps://labdegaragem.com/profile/MatheusVictorAvelinoSilva
<p>Ola Elcids, seu sketch funcionou perfeitamente, só mais uma duvida. Eu modifiquei o seu código para receber o tempo e as cores pela serial. Quando envio pela 1° vez ex vermelho,verde,azul ele executa corretamente, mas se eu envia outros valores ex roxo,amarelo,branco enquanto ele esta executando o vermelho, ele envia amarelo,branco,roxo e depois continua a sequência de cores normalmente, teria como eu "forçar" ele executar roxo,amarelo,branco.…</p>
<p></p>
<p></p>
<p>Ola Elcids, seu sketch funcionou perfeitamente, só mais uma duvida. Eu modifiquei o seu código para receber o tempo e as cores pela serial. Quando envio pela 1° vez ex vermelho,verde,azul ele executa corretamente, mas se eu envia outros valores ex roxo,amarelo,branco enquanto ele esta executando o vermelho, ele envia amarelo,branco,roxo e depois continua a sequência de cores normalmente, teria como eu "forçar" ele executar roxo,amarelo,branco.</p>
<p></p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/4531755820?profile=original" target="_blank" rel="noopener">sketch_apr27b.ino</a></p>
<p></p>
<p><span>Abrçs,</span></p>
<p><span>Matheus</span></p> olá Matheus.
Quando li…tag:labdegaragem.com,2020-04-27:6223006:Comment:7312092020-04-27T11:13:27.753ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Quando li o texto aqui do seu tópico e vi os dois códigos que vc postou, ficou claro pra mim toda a questão.</span></p>
<p><span style="font-size: 12pt;"> Na realidade Matheus, vc não está com uma dúvida. Vc está com uma boa quantidade de dúvidas.</span></p>
<p><span style="font-size: 12pt;"> Mas também me parece evidente que vc quer ir em frente e aprender. Uma amostra disso é o…</span></p>
<p><span style="font-size: 12pt;">olá Matheus.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Quando li o texto aqui do seu tópico e vi os dois códigos que vc postou, ficou claro pra mim toda a questão.</span></p>
<p><span style="font-size: 12pt;"> Na realidade Matheus, vc não está com uma dúvida. Vc está com uma boa quantidade de dúvidas.</span></p>
<p><span style="font-size: 12pt;"> Mas também me parece evidente que vc quer ir em frente e aprender. Uma amostra disso é o fato de que vc abriu vários tópicos aqui no <em><strong>LDG</strong></em>, e essencialmente todos eles tratavam da mesma coisa, e apesar de aparentemente vc não ter obtido as respostas que queria, vc não desistiu. E isto é o que realmente é importante, insistir e seguir em frente.</span></p>
<p><span style="font-size: 12pt;"> Mas também é necessário ter os pés no chão, e principalmente os olhos abertos e a mente centrada. Senão, irão passar pelas suas mãos, informações significativas, mas que vc poderá descartar ou mesmo ignorar se não estiver realmente centrado.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Bem, é muito fácil apontar os problemas com os seus <em><strong><span style="text-decoration: underline;">dois</span> códigos</strong></em>. Sim, nos dois existem problemas, tanto no que vc chamou de "<strong><em>errado</em></strong>" como no "<em><strong>certo</strong></em>". Vou destacar um que é bastante sutil, principalmente para principiantes (e acredite: até mesmo pessoas experientes podem cometer erros assim), mas <em><strong>inicialmente</strong></em> não vou dizer o motivo (direi depois em outro post aqui mesmo no seu tópico). Mesmo no seu <em><strong>código</strong></em> "<em><strong>certo</strong></em>", se vc deixar ele executando por vários minutos, e se ficar todo o tempo prestando atenção nele, vai ver que eventualmente, ele irá falhar. Ou seja, ele irá pular uma das mensagens. Não dá pra afirmar qual delas ele irá "pular" primeiro, e conforme o tempo passa, irá ficar "aleatório" isso, ou seja, ele poderá pular ora uma, ora outra. E acredite: em algum momento poderá pular até mesmo duas mensagens, e até mesmo pular todas as três mensagens (será raro essa ocorrência, mas ela irá ocorrer em algum momento).</span></p>
<p><span style="font-size: 12pt;"> Então em nosso próximo diálogo aqui, explicarei em detalhes estes "problemas", tanto no seu <em><strong>código</strong></em> "<em><strong>errado</strong></em>" como no "<em><strong>certo</strong></em>".</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Isto porque, irei mostrar como deveria estar o código, de uma forma que ele sempre funcionará corretamente, independente de quanto tempo vc o deixe executando. Além disso, essa forma de codificar, abre caminhos ilimitados para o que vc pode fazer. E melhor: ela é extremamente simples e confiável. Mas claro tem que aprender a fazer isso (o que também é simples).</span></p>
<p><span style="font-size: 12pt;"> Um detalhe: na implementação eu usei apenas <em><span style="text-decoration: underline;">duas Variáveis</span></em>, enquanto vc usou <span style="text-decoration: underline;"><em>sete Variáveis</em></span> no seu <em><strong>código</strong></em> "<em><strong>certo</strong></em>" (ou seja, mais que o triplo).</span></p>
<p><span style="font-size: 12pt;"> O bom é que, o que o seu código faz é bem simples, e isso ajuda bastante vc a aprender as técnicas.</span></p>
<p><span style="font-size: 12pt;"> O código que implementei, é este aqui: <a href="https://storage.ning.com/topology/rest/1.0/file/get/4527905237?profile=original" target="_blank" rel="noopener">"<em><strong>Mensagens_Temporizadas_01.zip</strong></em>"</a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ele está totalmente comentado, explicando seu funcionamento de forma clara e objetiva <span>(os comentários tem que ser <span style="text-decoration: underline;"><em>funcionais</em></span>, e não a torto e à direita)</span>. E principalmente: ele está <span style="text-decoration: underline;"><em><strong>organizado</strong></em></span>. Veja: a organização é absolutamente necessária em programação, senão vc será conduzido ao desastre em algum momento (pode demorar um pouco, mas irá acontecer). E mais ainda: este código segue regras as quais chamamos de "<em><strong>boas práticas de programação</strong></em>". Então se concentre no código (e esqueça os que vc postou antes), e analise ele até vc entender claramente (irei ajudar neste processo, se vc precisar e se vc permitir).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> E caso vc use o <em><strong>Proteus</strong></em>, eu implementei a simulação deste Sistema no mesmo. Na figura a seguir vc pode ver o resultado:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><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/4527899595?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/4527899595?profile=RESIZE_710x" class="align-center" width="520" height="365"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Claro, na simulação (assim como na execução "real"), o ideal seria "printar" no <em><strong>Terminal do Arduino</strong></em>, o tempo que passou entre uma mensagem e outra, pra vc conferir se está realmente correto. Isto é muito simples de fazer, mas preferir não inserir isto no código para que ele ficasse o mais próximo do que vc estava tentando fazer, e assim evitar inserir quaisquer outras informações que atrapalhassem o entendimento. Numa versão seguinte, posso inserir a "printagem" desse tempo. Mas na <em><strong>execução</strong></em> "<em><strong>real</strong></em>", vc pode também ligar a "printagem" do tempo na opção "<em><strong>Show timestamp</strong></em>" no <em><strong>Terminal do Arduino</strong></em>, facilitando bastante conferir o funcionamento (claro, existirá alguma variação mínima nos tempos, devido aos processamentos dentro do Windows e todos os Drivers executando).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Seguem os arquivos para a simulação no Proteus: <a href="https://storage.ning.com/topology/rest/1.0/file/get/4527939122?profile=original" target="_blank" rel="noopener">"<em><strong>Simulacao_Proteus.zip</strong></em>"</a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Fique à vontade para perguntar.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>