Índice:

EEPROM embutido do seu Arduino: 6 etapas
EEPROM embutido do seu Arduino: 6 etapas

Vídeo: EEPROM embutido do seu Arduino: 6 etapas

Vídeo: EEPROM embutido do seu Arduino: 6 etapas
Vídeo: Como usar a memória especial do Arduino (EEPROM) 2024, Novembro
Anonim
EEPROM embutido do seu Arduino
EEPROM embutido do seu Arduino

Neste artigo, vamos examinar a EEPROM interna em nossas placas Arduino. O que é uma EEPROM que alguns de vocês podem estar dizendo? Uma EEPROM é uma memória somente leitura programável apagável eletricamente.

É uma forma de memória não volátil que pode lembrar coisas com a alimentação desligada ou após reinicializar o Arduino. A beleza desse tipo de memória é que podemos armazenar dados gerados em um esboço de forma mais permanente.

Por que você usaria a EEPROM interna? Para situações em que os dados exclusivos de uma determinada situação precisam de um lar mais permanente. Por exemplo, armazenar o número de série exclusivo e a data de fabricação de um projeto comercial baseado em Arduino - uma função do esboço pode exibir o número de série em um LCD ou os dados podem ser lidos carregando um 'esboço de serviço'. Ou você pode precisar contar certos eventos e não permitir que o usuário os zere - como um hodômetro ou contador de ciclo de operação.

Etapa 1: Que tipo de dados podem ser armazenados?

Que tipo de dados podem ser armazenados?
Que tipo de dados podem ser armazenados?

Qualquer coisa que possa ser representada como bytes de dados. Um byte de dados é composto de oito bits de dados. Um bit pode estar ativado (valor 1) ou desativado (valor 0) e são perfeitos para representar números na forma binária. Em outras palavras, um número binário só pode usar zeros e uns para representar um valor. Assim, o binário também é conhecido como “base 2 ″, pois só pode usar dois dígitos.

Como pode um número binário com apenas o uso de dois dígitos representar um número maior? Ele usa muitos zeros e uns. Vamos examinar um número binário, digamos 10101010. Como este é um número de base 2, cada dígito representa 2 elevado à potência de x, de x = 0 em diante.

Passo 2:

Imagem
Imagem

Veja como cada dígito do número binário pode representar um número de base 10. Portanto, o número binário acima representa 85 na base 10 - o valor 85 é a soma dos valores na base 10. Outro exemplo - 11111111 em binário é igual a 255 na base 10.

Etapa 3:

Agora, cada dígito nesse número binário usa um ‘bit’ de memória e oito bits formam um byte. Devido às limitações internas dos microcontroladores em nossas placas Arduino, podemos armazenar apenas números de 8 bits (um byte) na EEPROM.

Isso limita o valor decimal do número entre zero e 255. Cabe a você decidir como seus dados podem ser representados com esse intervalo de números. Não deixe que isso o desencoraje - os números organizados da maneira correta podem representar quase tudo! Há uma limitação a ser observada - o número de vezes que podemos ler ou gravar na EEPROM. De acordo com o fabricante Atmel, a EEPROM é adequada para 100.000 ciclos de leitura / gravação (consulte a folha de dados).

Passo 4:

Agora que sabemos nossos bits e bytes, quantos bytes podem ser armazenados no microcontrolador do nosso Arduino? A resposta varia dependendo do modelo do microcontrolador. Por exemplo:

  • Placas com um Atmel ATmega328, como Arduino Uno, Uno SMD, Nano, Lilypad, etc. - 1024 bytes (1 kilobyte)
  • Placas com um Atmel ATmega1280 ou 2560, como a série Arduino Mega - 4096 bytes (4 kilobytes)
  • Placas com um Atmel ATmega168, como o Arduino Lilypad original, Nano antigo, Diecimila etc - 512 bytes.

Se você não tiver certeza, dê uma olhada no índice de hardware do Arduino ou pergunte ao seu fornecedor de placa. Se você precisar de mais armazenamento EEPROM do que o que está disponível com seu microcontrolador, considere o uso de um I2C EEPROM externo.

Neste ponto, agora entendemos que tipo de dados e quanto pode ser armazenado em nosso EEPROM do Arduino. Agora é hora de colocar isso em ação. Conforme discutido anteriormente, há uma quantidade finita de espaço para nossos dados. Nos exemplos a seguir, usaremos uma placa Arduino típica com o ATmega328 com 1024 bytes de armazenamento EEPROM.

Etapa 5:

Para usar a EEPROM, é necessária uma biblioteca, portanto, use a seguinte biblioteca em seus esboços:

#include "EEPROM.h"

O resto é muito simples. Para armazenar um dado, usamos a seguinte função:

EEPROM.write (a, b);

O parâmetro a é a posição na EEPROM para armazenar o número inteiro (0 ~ 255) dos dados b. Neste exemplo, temos 1024 bytes de armazenamento de memória, portanto, o valor de a está entre 0 e 1023. Para recuperar um dado é igualmente simples, use:

z = EEPROM.read (a);

Onde z é um número inteiro para armazenar os dados da posição EEPROM a. Agora, para ver um exemplo.

Etapa 6:

Imagem
Imagem

Este esboço irá criar números aleatórios entre 0 e 255, armazená-los na EEPROM e, em seguida, recuperá-los e exibi-los no monitor serial. A variável EEsize é o limite superior do tamanho da EEPROM, então (por exemplo) seria 1024 para um Arduino Uno ou 4096 para um Mega.

// Demonstração EEPROM interna do Arduino

#incluir

int zz; int EEsize = 1024; // tamanho em bytes da EEPROM de sua placa

void setup ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Escrevendo números aleatórios…"); para (int i = 0; i <EEsize; i ++) {zz = aleatório (255); EEPROM.write (i, zz); } Serial.println (); para (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("posição EEPROM:"); Serial.print (a); Serial.print ("contém"); Serial.println (zz); atraso (25); }}

A saída do monitor serial aparecerá, conforme mostrado na imagem.

Então aí está, outra maneira útil de armazenar dados com nossos sistemas Arduino. Embora não seja o tutorial mais emocionante, é certamente útil.

Esta postagem foi trazida a você por pmdway.com - tudo para fabricantes e entusiastas de eletrônicos, com entrega gratuita em todo o mundo.

Recomendado: