(RESOLVIDO)Incremento no arduino a partir de um número - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T20:05:01Zhttps://labdegaragem.com/forum/topics/incremento-no-arduino-a-partir-de-um-n-mero?xg_source=activity&feed=yes&xn_auth=noBom dia KJ,
lembra?
http://l…tag:labdegaragem.com,2018-12-12:6223006:Comment:6953512018-12-12T11:47:55.469Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>Bom dia KJ,</p>
<p>lembra?</p>
<p><a href="http://labdegaragem.com/forum/topics/promessa-divida-o-natal-est-chegando-1" target="_blank">http://labdegaragem.com/forum/topics/promessa-divida-o-natal-est-chegando-1</a></p>
<p>Feliz natal.</p>
<p>RV</p>
<p>Bom dia KJ,</p>
<p>lembra?</p>
<p><a href="http://labdegaragem.com/forum/topics/promessa-divida-o-natal-est-chegando-1" target="_blank">http://labdegaragem.com/forum/topics/promessa-divida-o-natal-est-chegando-1</a></p>
<p>Feliz natal.</p>
<p>RV</p> Sim! Claro!tag:labdegaragem.com,2018-07-24:6223006:Comment:6797662018-07-24T12:52:28.153Zkleber jameshttps://labdegaragem.com/profile/kleberjames
<p>Sim! Claro!</p>
<p>Sim! Claro!</p> De nada,
No natal vai atender…tag:labdegaragem.com,2018-07-18:6223006:Comment:6790632018-07-18T22:01:16.139Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>De nada,</p>
<p>No natal vai atender minha solicitação?<br/>RV</p>
<p>De nada,</p>
<p>No natal vai atender minha solicitação?<br/>RV</p> Muito obrigado RV!
Valeu pela…tag:labdegaragem.com,2018-07-18:6223006:Comment:6792582018-07-18T21:46:16.361Zkleber jameshttps://labdegaragem.com/profile/kleberjames
<p>Muito obrigado RV!</p>
<p>Valeu pela informação!</p>
<p>Muito obrigado RV!</p>
<p>Valeu pela informação!</p> Boa tarde KJ,
A EEPROM do Ard…tag:labdegaragem.com,2018-07-18:6223006:Comment:6793542018-07-18T20:23:22.246Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>Boa tarde KJ,</p>
<p>A EEPROM do Arduíno tem vida util limitada em +- 100.000 gravações.</p>
<p>Parece até muito, né. Nem seria preocupação. Certo? </p>
<p>Mais ou menos.</p>
<p>Veja cada operação do Arduíno é executa em um clock de 16 Mhz,</p>
<p>ou seja em um segundo teoricamente o Arduíno executa 16.000.000 de instruções.</p>
<p>Se o programa de gravar na EEPROM tiver, digamos 10 instruções, e for um ciclo repetido,</p>
<p>em menos de um segundo executará 1.600.000 de instruções, o que…</p>
<p>Boa tarde KJ,</p>
<p>A EEPROM do Arduíno tem vida util limitada em +- 100.000 gravações.</p>
<p>Parece até muito, né. Nem seria preocupação. Certo? </p>
<p>Mais ou menos.</p>
<p>Veja cada operação do Arduíno é executa em um clock de 16 Mhz,</p>
<p>ou seja em um segundo teoricamente o Arduíno executa 16.000.000 de instruções.</p>
<p>Se o programa de gravar na EEPROM tiver, digamos 10 instruções, e for um ciclo repetido,</p>
<p>em menos de um segundo executará 1.600.000 de instruções, o que causará a "oxidação" </p>
<p>da EEPROM e a perda da mesma.</p>
<p>Claro que o resto do processador continuar funcionando, mas não poderá mais guardar</p>
<p>dados na EEPROM.</p>
<p>Para evitar este problema, eu coloquei um bloqueio e permiti que a rotina de gravar na EEPROM</p>
<p>só rode por completo uma vez. Usei uma função que trava o arduino</p>
<p>while(1){} Enquanto for 1 fique executando o while.</p>
<p></p>
<p>RV</p>
<p>PS</p>
<p>Escrevi um programa pra demostrar +- o tempo que o Arduíno leva para contar até 16.000.000.</p>
<p>Como o programa é em C, ao compilar ele aumenta o numero de instruções em assembly.</p>
<p>Usei o millis() para saber quantos milissegundos foram gastos para esta contagem.</p>
<p>Aqui o resultado foi. 41248 milis (41,248 segundos). </p>
<p>Isto informa que o programa tem +- 41 instruções de assembly.</p>
<p>RV</p>
<p></p> Obrigado RV! fiz as correções…tag:labdegaragem.com,2018-07-18:6223006:Comment:6793532018-07-18T19:36:41.778Zkleber jameshttps://labdegaragem.com/profile/kleberjames
<p>Obrigado RV! fiz as correções aqui e deu tudo certo!</p>
<p>Só pra mim entender. Pra que serve a linha while (1) {}; já que ela trava o arduino?</p>
<p>Muito obrigado pela atenção!</p>
<p></p>
<p>Obrigado RV! fiz as correções aqui e deu tudo certo!</p>
<p>Só pra mim entender. Pra que serve a linha while (1) {}; já que ela trava o arduino?</p>
<p>Muito obrigado pela atenção!</p>
<p></p> Bom dia KJ,
analisando seu sk…tag:labdegaragem.com,2018-07-18:6223006:Comment:6790362018-07-18T14:29:14.918Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>Bom dia KJ,</p>
<p>analisando seu sketch encontrei o seguintes problemas.</p>
<p></p>
<p>1. Problemas com manuseio da variável consumo;</p>
<p>2. Limpeza EEPROM toda vez ao inciar o Arduíno.</p>
<p></p>
<p>Você usa a variável consumo para guardar os dados lidos.</p>
<p>Você modifica esta variável em 3 linhas: </p>
<p></p>
<p>1. Linha 13 ---> <em><strong>long consumo = 35000; </strong></em></p>
<p>2. Linha 41 ---> <em><strong>consumo = EEPROM.read…</strong></em></p>
<p>Bom dia KJ,</p>
<p>analisando seu sketch encontrei o seguintes problemas.</p>
<p></p>
<p>1. Problemas com manuseio da variável consumo;</p>
<p>2. Limpeza EEPROM toda vez ao inciar o Arduíno.</p>
<p></p>
<p>Você usa a variável consumo para guardar os dados lidos.</p>
<p>Você modifica esta variável em 3 linhas: </p>
<p></p>
<p>1. Linha 13 ---> <em><strong>long consumo = 35000; </strong></em></p>
<p>2. Linha 41 ---> <em><strong>consumo = EEPROM.read (0); </strong></em></p>
<p>3. Linha 76 ---> <em><strong>consumo++;</strong></em></p>
<p></p>
<p>A IDE do Arduíno define assim o tamanho das variáveis.</p>
<p> byte ou char === 1 byte;</p>
<p> int === 2 byte2;</p>
<p><em><strong> </strong></em> long === 4 byte2;</p>
<p>Tamanho das variáveis usadas no sketch.</p>
<p> consumo --> long (4 bytes)</p>
<p> conta --> int (2 bytes)</p>
<p></p>
<p>Ao usar o método <em><strong>EEPROM.read (0); </strong></em> você lê somente um byte para sua variável, (O ultimo byte).</p>
<p>mas sua variável ( tamanho long) tem 4 bytes.</p>
<p></p>
<p>Só para teste fiz uma sketch gravando um long <strong>35000</strong> e em seguida imprimi o valor da variável, </p>
<p>e depois li a EEPROM e ai imprimi novamente. Primeiro imprimiu <strong>35000</strong> ( <strong>HEX 88B8</strong>)</p>
<p>e depois imprimiu <strong>184</strong> (<strong>HEX B8</strong>).</p>
<p></p>
<p>Agora vamos corrigir o seu sketch.</p>
<p></p>
<p>1. Linha 13 --> <em><strong>long consumo = 0; </strong></em> Aqui pode ser qq valor, pois você a modifica em seguida.</p>
<p>2. Linha 41 --> <em><strong>consumo = EEPROM.read (0);</strong></em> modificar para: <em><strong> EEPROM.get(0, consumo );</strong></em> </p>
<p>3. Linha 42 --> <em><strong>conta = EEPROM.read (1);</strong></em> modificar para: <em><strong> EEPROM.get(4, conta);</strong></em> </p>
<p>4. Linha 55 --> <em><strong>conta = EEPROM.write(1);</strong></em> modificar para: <em><strong> EEPROM.write(4, conta);</strong></em> </p>
<p>5. Linha 82 --> <em><strong>consumo = EEPROM.write(0);</strong></em> modificar para:<em><strong> EEPROM.put(0, consumo );</strong></em> </p>
<p></p>
<p>Acrescente esta linha após a linha 38: </p>
<p>6. Serial.println(consumo);</p>
<p>Acrescente estas linhas após o } da linha atual 40: </p>
<p>7. <em><strong>EEPROM.put(0, consumo );</strong></em> </p>
<p>8 . while(1) {}.</p>
<p></p>
<p>Em seguida carregue o Arduíno e rode o sketch somente uma vez .</p>
<p>A EPPROM será zerada e o valor <strong>35000</strong> será gravado na EEPROM a partir do endereço <strong>0.</strong></p>
<p>Acompanhe a limpeza pela serial.</p>
<p>Qdo terminar o Arduíno vai travar devido ao while(1) {}. </p>
<p></p>
<p>Em seguida volte ao seu sketch e coloque // (comentar linha) das linhas 37 até linha while(1) {} inclusive.</p>
<p> (itens 6, 7. e 8.)</p>
<p>Recarregue o seu sketch, e o problema deverá estar corrigido.</p>
<p></p>
<p>Tenho solicitado aos amigos que se minha ajudar te ajudar, que no natal distribua brinquedos</p>
<p>para crianças carentes, e post fotos destas crianças sorrindo, na galeria do LdG.</p>
<p>Att:</p>
<p>RV</p>
<p></p>
<p></p> eu quero que inicie em 35000…tag:labdegaragem.com,2018-07-18:6223006:Comment:6791302018-07-18T02:29:46.779Zkleber jameshttps://labdegaragem.com/profile/kleberjames
<p>eu quero que inicie em 35000 porque quero acompanhar a medição feita mensalmente que já foi realizada e ja esta em 35000...</p>
<p>eu quero que inicie em 35000 porque quero acompanhar a medição feita mensalmente que já foi realizada e ja esta em 35000...</p> nesse código por exemplo ele…tag:labdegaragem.com,2018-07-18:6223006:Comment:6791282018-07-18T02:19:37.435Zkleber jameshttps://labdegaragem.com/profile/kleberjames
<p>nesse código por exemplo ele não incrementa a partir de 35000</p>
<p>nesse código por exemplo ele não incrementa a partir de 35000</p> a variável conta e pra inicia…tag:labdegaragem.com,2018-07-18:6223006:Comment:6792302018-07-18T01:59:20.917Zkleber jameshttps://labdegaragem.com/profile/kleberjames
<p>a variável conta e pra iniciar em zero mesmo...</p>
<p>e a variável consumo que preciso que inicie em 35000.</p>
<p></p>
<p>a variável conta e pra iniciar em zero mesmo...</p>
<p>e a variável consumo que preciso que inicie em 35000.</p>
<p></p>