Comentários - Artigo: Arduino e Otimização da Memória - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T05:29:37Zhttps://labdegaragem.com/profiles/comment/feed?attachedTo=6223006%3ABlogPost%3A535986&xn_auth=noLuciano, #define TEMPO 500 /…tag:labdegaragem.com,2020-10-20:6223006:Comment:7660872020-10-20T02:46:04.050ZRodrigo Corberahttps://labdegaragem.com/profile/RodrigoCorbera
<p>Luciano, <br></br><br></br><em><strong>#define TEMPO 500 </strong></em> // essa linha não declara qualquer variável e nem aloca espaço na RAM e nem em FLASH</p>
<p></p>
<p>abaixo declaramos uma variável chamada RamVar com o valor 500 (uma mera subtituição, como se fosse um localize->subtitua</p>
<p><em><strong>int RamVar = TEMPO;</strong></em> </p>
<p></p>
<p>abaixo declaramos uma variável que alocará FLASH, usando antes da declaração do tipo e nome da variável o modificador de tipo "const…</p>
<p>Luciano, <br/><br/><em><strong>#define TEMPO 500 </strong></em> // essa linha não declara qualquer variável e nem aloca espaço na RAM e nem em FLASH</p>
<p></p>
<p>abaixo declaramos uma variável chamada RamVar com o valor 500 (uma mera subtituição, como se fosse um localize->subtitua</p>
<p><em><strong>int RamVar = TEMPO;</strong></em> </p>
<p></p>
<p>abaixo declaramos uma variável que alocará FLASH, usando antes da declaração do tipo e nome da variável o modificador de tipo "const PROGMEM" - isso é o que faz a variável ficar em Flash!</p>
<p><strong><em>const PROGMEM int FlashVar = TEMPO/50; </em></strong> // FlashVar terá o valor constante de 10</p>
<p></p>
<p>TEMPO é substituido por 500 em todo lugar ANTES de iniciar a compilação do programa por um processo chamado de PRE-PROCESSADOR.</p>
<p></p>
<p>poderíamos fazer algo como:</p>
<p></p>
<p><em><strong>#define LARGURA 200</strong></em></p>
<p><em><strong>#define CENTRO (LARGURA/2)</strong></em></p>
<p><em><strong>int x = CENTRO;</strong></em> // o preprocessador vai subtituir esta linha para int x = 100;</p>
<p></p>
<p>x será uma variável alocada em RAM com 2 bytes por causa do espaço necessário para um tipo <int> -- isso para o processador ATMEL 328.... outros processadores de 32 bits vão alocar 4 bytes para o tipo <int></p>
<p></p>
<p>Espero que tenha ajudado a entender o que faz o #define e como declarar variáveis em RAM ou variáveis constantes em FLASH, para a qual o seu valor NUNCA muda ao longo da execução do programa.</p>
<p>Abraços.</p> Alguém poderia confirmar como…tag:labdegaragem.com,2020-10-20:6223006:Comment:7659722020-10-20T01:34:35.320ZLuciano Henrique Albanohttps://labdegaragem.com/profile/LucianoHenriqueAlbano
<p>Alguém poderia confirmar como é o comportamento das variáveis que são declaradas utilizando o #define. Elas ficam na flash ou vão para a Ram desperdiçando recursos?</p>
<p>Alguém poderia confirmar como é o comportamento das variáveis que são declaradas utilizando o #define. Elas ficam na flash ou vão para a Ram desperdiçando recursos?</p> muito bom, bem escritotag:labdegaragem.com,2016-11-08:6223006:Comment:5769832016-11-08T00:53:32.882ZAkira Satohttps://labdegaragem.com/profile/AkiraSato
<p>muito bom, bem escrito</p>
<p>muito bom, bem escrito</p> Muito boa a explicação.
Só aj…tag:labdegaragem.com,2016-09-02:6223006:Comment:5613922016-09-02T14:02:03.004ZCarlos Eduardo Freitashttps://labdegaragem.com/profile/CarlosEduardoFreitas
<p>Muito boa a explicação.</p>
<p>Só ajuste o exemplo da utilização da macro F() que a mesma não foi adicionada.</p>
<pre><strong>lcd.print("Vou ocupar espaço na FLASH"); // 26 bytes economizados</strong><br/><br/>para<br/><br/></pre>
<pre><strong>lcd.print(F("Vou ocupar espaço na FLASH")); // 26 bytes economizados<br/><br/></strong>Parabéns</pre>
<p>Muito boa a explicação.</p>
<p>Só ajuste o exemplo da utilização da macro F() que a mesma não foi adicionada.</p>
<pre><strong>lcd.print("Vou ocupar espaço na FLASH"); // 26 bytes economizados</strong><br/><br/>para<br/><br/></pre>
<pre><strong>lcd.print(F("Vou ocupar espaço na FLASH")); // 26 bytes economizados<br/><br/></strong>Parabéns</pre> Excelente!tag:labdegaragem.com,2016-06-02:6223006:Comment:5383762016-06-02T14:24:47.007ZAlexandrehttps://labdegaragem.com/profile/aravecchia
<p>Excelente!</p>
<p>Excelente!</p> Flavio, bom dia!
Realmente us…tag:labdegaragem.com,2016-05-23:6223006:Comment:5360932016-05-23T12:06:10.384ZJose Augusto Cintrahttps://labdegaragem.com/profile/JoseAugustoCintra
<p>Flavio, bom dia!</p>
<p>Realmente usar define para constantes é melhor do que usar variáveis. Deixa o código organizado. Outra alternativa é usar const. A vantagem é que const é tipado.</p>
<p>Existe uma polêmica em torno de define x const:…</p>
<p></p>
<p>Flavio, bom dia!</p>
<p>Realmente usar define para constantes é melhor do que usar variáveis. Deixa o código organizado. Outra alternativa é usar const. A vantagem é que const é tipado.</p>
<p>Existe uma polêmica em torno de define x const:</p>
<p><a href="http://www.revista-programar.info/artigos/arduino-const-vs-define/%20http://forum.arduino.cc/index.php?topic=44023.0%20https://www.arduino.cc/en/Reference/Define" target="_blank">http://www.revista-programar.info/artigos/arduino-const-vs-define/</a><br/><a href="http://forum.arduino.cc/index.php?topic=44023.0" target="_blank">http://forum.arduino.cc/index.php?topic=44023.0</a><br/><a href="https://www.arduino.cc/en/Reference/Define" target="_blank">https://www.arduino.cc/en/Reference/Define</a></p>
<p></p> Usar o pre-processador para a…tag:labdegaragem.com,2016-05-22:6223006:Comment:5361472016-05-22T22:22:15.042ZFlavio Hernanhttps://labdegaragem.com/profile/FlavioHernan
<p>Usar o pre-processador para atribuir valores fixos (constantes), ou definição de pinos, em vez de usar <strong>int pino 13</strong>, por exemplo.</p>
<p>#define PINO13 13</p>
<p> ...</p>
<p>pinMode(PINO13, OUTPUT);</p>
<p>...</p>
<p>digitalWrite(PINO13, HIGH);<br/>...<br/> digitalWrite(PINO13, LOW); <br/><br/></p>
<p></p>
<p></p>
<p>Usar o pre-processador para atribuir valores fixos (constantes), ou definição de pinos, em vez de usar <strong>int pino 13</strong>, por exemplo.</p>
<p>#define PINO13 13</p>
<p> ...</p>
<p>pinMode(PINO13, OUTPUT);</p>
<p>...</p>
<p>digitalWrite(PINO13, HIGH);<br/>...<br/> digitalWrite(PINO13, LOW); <br/><br/></p>
<p></p>
<p></p> Excelente!!! tag:labdegaragem.com,2016-05-22:6223006:Comment:5362132016-05-22T18:18:30.601ZMarcelo Rodrigueshttps://labdegaragem.com/profile/MarceloRodrigues
<p>Excelente!!! </p>
<p>Excelente!!! </p>