Arduino: Usar PROGMEM é a mesma coisa que macro F()?

Estou desenvolvendo um medidor para um tanque de Diesel com Ultrasom + RTC + Log no SD + Temperatura + Pagina WEB. 

Resumindo o programa esta muito grande, já fiz de tudo para reduzir o tamanho dele. 
Usando o macro F() consegui rodar mas em partes isoladas, estou tentando rodar o programa completo no Arduino Nano ou Uno mas ainda não consegui. 

Ai pintou a duvida. Usar PROGMEM da o mesmo resultado que macro F()?
A função das duas é parecida, ou seja armazenar dados fora da RAM, por isso pintou a duvida.

Fiz a maior parte da exibição web com client.println(F(" "));

obs: não fiz o teste comparativo pois ainda não consegui usar o PROGMEM no programa. 

Exibições: 806

Responder esta

Respostas a este tópico

Olá Willians.

Você fez certo em usar a macro F().

No entanto a diretiva PROGMEM só pode ser usada para valores constantes, ou seja que não vão ser alterados durante o programa.

Por exemplo, se você tiver um array no seu programa com valores que nunca se modificam, então com certeza você deve usar PROGMEM para declará-lo.

Obrigado pela rápida resposta! 

Você pode me ajudar a gerar o PROGMEM? Não estou conseguindo. 


Estou tentando usar a diretiva PROGMEM para imprimir a pagina HTML visto que posso dividir o HTML em partes e no meio dessas partes enviar as variáveis.
Dentro do HTML estou usando Canvas para criar 3 Gauges através dessa API do Google( https://developers.google.com/chart/interactive/docs/gallery/gauge ).

Estou pensando em gerar o PROGMEM com as partes fixas do HTML como por exemplo.

<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['gauge']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['DIESEL' , 700 ]

]);

onde tem o 700 eu corto o PROGMEM, envio um client.print(F(" 700 ")); e depois envio o comando para imprimir o restante do PROGMEM. 

No lugar do 700 vou usar uma variável proveniente do sensor. 

A duvida é como imprimir um HTML completo usando PROGMEM. 

Obrigado desde já. 

Outro bom procedimento para reduzir o uso de SRAM é comentar (ou excluir) todas as linhas de Serial.print () que você usou para a depuração durante o desenvolvimento. Tive que fazer isso no projeto do ArduFarmBot
https://mjrobot.org/2016/09/21/ardufarmbot-part-2-estacao-remota-iot/

Dica muito boa! Ajuda bastante.

Cheguei a conclusão que devido a baixa capacidade de memória do Uno//Nano preciso partir para um Mega ou fazer um cluster com 2 arduino Nano devido ao tamanho dele. 

Estou estudando como funcionam as comunicações I2C e Serial para ver qual se enquadra melhor no projeto. 

Obrigado pelas dicas! 



RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço