Pessoal, boa tarde,
tenho visto aqui vários códigos postado ( e talvez eu mesmo o tenha feito),
sem se preocupar com a convenção usada pelo C ao definir variáveis.


Sei que isto é muito claro para os experientes, mas para aqueles que usam
os códigos de maneira "hobista", ou não fizeram algum treinamento em programação,
podem ter dificuldade em entender como e quando usar estas definições.

Segue abaixo uma "tabela" com os vários tipos de dados possíveis para uma variável,
e anexo um código para demonstrar em uso, mostrando o que acontece quando se usa uma
variável definida como "unsigned" ou não.

E usei neste código, a definição de int ( unsigned int e int), mas a idéia vale também
para unsigned char, e unsigned long, pois só muda a escala de valores.

Rui

             Dado    tamanho        definição
          boolean -- (8 bit)    - lógica true / false (verdadeiro/falso);

               byte -- (8 bits)   - número sem sinal 0 a 255;
               Char -- (8 bit)    - número com sinal de -128 a 127;
 unsigned char -- (8 bit)     - o mesmo que 'byte';

               word -- (16 bits) - número sem sinal 0 a 65535;
                  int -- ((16 bit)   - número com sinal de -32768 a 32767;

    unsigned int -- 16 bit)   - o mesmo que "word";

                long -- (32 bit)   - número com sinal de -2.147.483.648 a 2.147.483.647;
  unsigned long -- (32 bit)   - número sem sinal de 0 a 4,294,967,295;

                float -- (32 bit)  - número com sinal de -3.4028235E38 para 3.4028235E38.

O float no Arduino não é nativo, recomenda-se evitá-lo.


fonte: https://learn.sparkfun.com/tutorials/data-types-in-arduino

Exibições: 2404

Anexos

Responder esta

Respostas a este tópico

Boa tarde TLM,

eu aprendi usar uma solução para reduzir espaço de memoria,

mas não fui atras para entender porque.

Qdo você tem linhas de impressão no seu sketch, me deram a dica de modificar.

Invés de usar:

Serial.println();

usar assim:

Serial.println(F());

Não tenho certeza, mas acho que só funciona com Strings.

RV

Boa noite Tiago, 

O Arduino MEGA tem mais memória.

https://store.arduino.cc/usa/arduino-mega-2560-rev3

No meu caso, tenho muitas matrizes de tamanhos elevados, porem de conteudo 0 ou 1. Ja utiliza esse array como const byte (é o mesmo que usar o #define ?)... o ideal seria se eu tivesse variaveis de um unico bit... vou estudar a possibilidade de trabalhar com tratamento bit a bit..
Boa noite José. Ja uso o Mega. Trabalho com muitos valores de coordenadas do tipo int... memoria estao um problema.. ja pensei em usar um cartao sd externo..

Use um ESP32 então. 

memória RAM estática interna de 520K Bytes
Memória externa (total 4) – suporte para até 16M Bytes Flash e 16M Bytes SRAM

Amigo algumas coisas que utilizo para redução de memória.

Dados estáticos fixos (que não modificam) utilizo flash ao invés de ram. Veja a biblioteca pgmspace.

Referência no site arduino.cc

Evite muito processamento no método principal, quebre em métodos menores dividindo em pequenas partes, isso pode melhorar o consumo de memória, mais em contra-partida pode reduzir o desempenho.

Eu costumo utilizar a ferramenta avr-size para verificar o carregamento de dados na ram no ato do carregamento. Eu otimizo código, compilo e verifico com avr-size o resultado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço