Como Armazenar Dados No Arduino

Índice:

Como Armazenar Dados No Arduino
Como Armazenar Dados No Arduino

Vídeo: Como Armazenar Dados No Arduino

Vídeo: Como Armazenar Dados No Arduino
Vídeo: Armazenar Dados no Arduino - EEPROM - Memória Retentiva 2024, Maio
Anonim

As placas Arduino têm vários tipos de memória. Primeiro, é a RAM estática (memória de acesso aleatório), que é usada para armazenar variáveis durante a execução do programa. Em segundo lugar, é a memória flash que armazena os esboços que você escreveu. E em terceiro lugar, é uma EEPROM que pode ser usada para armazenar informações permanentemente. O primeiro tipo de memória é volátil, perde todas as informações após reiniciar o Arduino. Os dois segundos tipos de memória armazenam informações até que sejam substituídas por uma nova, mesmo depois que a alimentação for desligada. O último tipo de memória - EEPROM - permite que os dados sejam gravados, armazenados e lidos conforme necessário. Vamos considerar essa memória agora.

Armazenamento de dados em EEPROM Arduino
Armazenamento de dados em EEPROM Arduino

Necessário

  • - Arduino;
  • - computador.

Instruções

Passo 1

EEPROM significa Electrically Erasable Programmable Read-Only Memory, ou seja, memória somente leitura apagável eletricamente. Os dados nesta memória podem ser armazenados por dezenas de anos após a alimentação ser desligada. O número de ciclos de reescrita é da ordem de vários milhões de vezes.

A quantidade de memória EEPROM no Arduino é bastante limitada: para placas baseadas no microcontrolador ATmega328 (por exemplo, Arduino UNO e Nano), a quantidade de memória é de 1 KB, para placas ATmega168 e ATmega8 - 512 bytes, para ATmega2560 e ATmega1280 - 4 KB.

Passo 2

Para trabalhar com a EEPROM para Arduino, uma biblioteca especial foi escrita, que é incluída no IDE do Arduino por padrão. A biblioteca contém os seguintes recursos.

ler (endereço) - lê 1 byte da EEPROM; endereço - o endereço de onde os dados são lidos (célula a partir de 0);

escrever (endereço, valor) - escreve o valor do valor (1 byte, número de 0 a 255) na memória no endereço do endereço;

atualizar (endereço, valor) - substitui o valor no endereço se seu conteúdo antigo for diferente do novo;

get (address, data) - lê dados do tipo especificado da memória no endereço;

put (endereço, dados) - grava dados do tipo especificado na memória no endereço;

EEPROM [endereço] - permite que você use o identificador "EEPROM" como uma matriz para gravar dados e ler da memória.

Para usar a biblioteca no esboço, nós a incluímos com a diretiva #include EEPROM.h.

etapa 3

Vamos escrever dois inteiros na EEPROM e, em seguida, lê-los da EEPROM e enviá-los para a porta serial.

Não há problemas com números de 0 a 255, eles ocupam apenas 1 byte de memória e são gravados no local desejado usando a função EEPROM.write ().

Se o número for maior que 255, usando os operadores highByte () e lowByte (), ele deve ser dividido por bytes e cada byte deve ser escrito em sua própria célula. O número máximo neste caso é 65536 (ou 2 ^ 16).

Veja, o monitor da porta serial na célula 0 simplesmente exibe um número menor que 255. Nas células 1 e 2, um grande número 789 é armazenado. Neste caso, a célula 1 armazena o fator de estouro 3 e a célula 2 armazena o número 21 ausente (ou seja, 789 = 3 * 256 + 21). Para remontar um grande número, analisado em bytes, existe a função word (): int val = word (hi, low), onde hi e low são os valores dos bytes alto e baixo.

Em todas as outras células que nunca anotamos, os números 255 são armazenados.

Escrevendo inteiros para EEPROM Arduino
Escrevendo inteiros para EEPROM Arduino

Passo 4

Para escrever números de ponto flutuante e strings, use o método EEPROM.put (), e para ler, use EEPROM.get ().

No procedimento setup (), primeiro escrevemos o número de ponto flutuante f. Em seguida, movemos pelo número de células de memória que o tipo float ocupa e escrevemos uma string char com capacidade para 20 células.

No procedimento loop (), leremos todas as células de memória e tentaremos descriptografá-las primeiro como do tipo "float" e, em seguida, como do tipo "char", e enviar o resultado para a porta serial.

Você pode ver que o valor nas células de 0 a 3 foi definido corretamente como um número de ponto flutuante e começando do 4º - como uma string.

Os valores resultantes ovf (estouro) e nan (não um número) indicam que o número não pode ser convertido corretamente em um número de ponto flutuante. Se você souber exatamente que tipo de dados as células de memória estão ocupando, não terá problemas.

Escrevendo números de ponto flutuante e strings para EEPROM Arduino
Escrevendo números de ponto flutuante e strings para EEPROM Arduino

Etapa 5

Um recurso muito conveniente é referir-se às células de memória como elementos de um array EEPROM. Neste esboço, no procedimento setup (), primeiro escreveremos os dados nos primeiros 4 bytes e, no procedimento loop (), a cada minuto leremos os dados de todas as células e os enviaremos para a porta serial.

Recomendado: