EEPROM incorporada de su Arduino: 6 pasos
EEPROM incorporada de su Arduino: 6 pasos
Anonim
EEPROM incorporada de su Arduino
EEPROM incorporada de su Arduino

En este artículo vamos a examinar la EEPROM interna en nuestras placas Arduino. ¿Qué es una EEPROM que algunos de ustedes pueden estar diciendo? Una EEPROM es una memoria de sólo lectura programable y borrable eléctricamente.

Es una forma de memoria no volátil que puede recordar cosas con la energía apagada o después de reiniciar el Arduino. La belleza de este tipo de memoria es que podemos almacenar datos generados dentro de un boceto de forma más permanente.

¿Por qué usaría la EEPROM interna? Para situaciones en las que los datos que son exclusivos de una situación necesitan un hogar más permanente. Por ejemplo, almacenar el número de serie único y la fecha de fabricación de un proyecto comercial basado en Arduino: una función del boceto podría mostrar el número de serie en una pantalla LCD, o los datos podrían leerse cargando un "boceto de servicio". O puede que necesite contar ciertos eventos y no permitir que el usuario los reinicie, como un odómetro o un contador de ciclos de operación.

Paso 1: ¿Qué tipo de datos se pueden almacenar?

¿Qué tipo de datos se pueden almacenar?
¿Qué tipo de datos se pueden almacenar?

Todo lo que pueda representarse como bytes de datos. Un byte de datos se compone de ocho bits de datos. Un bit puede estar activado (valor 1) o desactivado (valor 0) y son perfectos para representar números en forma binaria. En otras palabras, un número binario solo puede usar ceros y unos para representar un valor. Por lo tanto, el binario también se conoce como "base-2", ya que solo puede usar dos dígitos.

¿Cómo puede un número binario con solo el uso de dos dígitos representar un número mayor? Utiliza muchos unos y ceros. Examinemos un número binario, digamos 10101010. Como es un número de base 2, cada dígito representa 2 elevado a x, desde x = 0 en adelante.

Paso 2:

Imagen
Imagen

Vea cómo cada dígito del número binario puede representar un número de base 10. Entonces, el número binario anterior representa 85 en base 10; el valor 85 es la suma de los valores en base 10. Otro ejemplo: 11111111 en binario es igual a 255 en base 10.

Paso 3:

Ahora, cada dígito de ese número binario usa un "bit" de memoria y ocho bits forman un byte. Debido a las limitaciones internas de los microcontroladores en nuestras placas Arduino, solo podemos almacenar números de 8 bits (un byte) en la EEPROM.

Esto limita el valor decimal del número entre cero y 255. Depende de usted decidir cómo se pueden representar sus datos con ese rango de números. No dejes que eso te desanime: ¡los números ordenados de la manera correcta pueden representar casi cualquier cosa! Hay una limitación a tener en cuenta: la cantidad de veces que podemos leer o escribir en la EEPROM. Según el fabricante Atmel, la EEPROM es buena para 100, 000 ciclos de lectura / escritura (consulte la hoja de datos).

Paso 4:

Ahora que conocemos nuestros bits y bytes, ¿cuántos bytes se pueden almacenar en el microcontrolador de nuestro Arduino? La respuesta varía según el modelo de microcontrolador. Por ejemplo:

  • Placas con un Atmel ATmega328, como Arduino Uno, Uno SMD, Nano, Lilypad, etc. - 1024 bytes (1 kilobyte)
  • Placas con Atmel ATmega1280 o 2560, como la serie Arduino Mega - 4096 bytes (4 kilobytes)
  • Placas con un Atmel ATmega168, como el Arduino Lilypad original, el antiguo Nano, Diecimila, etc. - 512 bytes.

Si no está seguro, consulte el índice de hardware de Arduino o pregunte a su proveedor de placas. Si necesita más almacenamiento EEPROM del que está disponible con su microcontrolador, considere usar una EEPROM I2C externa.

En este punto, ahora entendemos qué tipo de datos y cuánto se pueden almacenar en la EEPROM de nuestro Arduino. Ahora es el momento de poner esto en práctica. Como se discutió anteriormente, existe una cantidad finita de espacio para nuestros datos. En los siguientes ejemplos, usaremos una placa Arduino típica con el ATmega328 con 1024 bytes de almacenamiento EEPROM.

Paso 5:

Para usar la EEPROM, se requiere una biblioteca, así que use la siguiente biblioteca en sus bocetos:

#include "EEPROM.h"

El resto es muy sencillo. Para almacenar un dato, usamos la siguiente función:

EEPROM.write (a, b);

El parámetro a es la posición en la EEPROM para almacenar el número entero (0 ~ 255) de los datos b. En este ejemplo, tenemos 1024 bytes de almacenamiento de memoria, por lo que el valor de a está entre 0 y 1023. Para recuperar un dato es igualmente simple, use:

z = EEPROM.read (a);

Donde z es un número entero para almacenar los datos de la posición EEPROM a. Ahora para ver un ejemplo.

Paso 6:

Imagen
Imagen

Este boceto creará números aleatorios entre 0 y 255, los almacenará en la EEPROM, luego los recuperará y mostrará en el monitor en serie. La variable EEsize es el límite superior del tamaño de su EEPROM, por lo que (por ejemplo) sería 1024 para un Arduino Uno o 4096 para un Mega.

// Demostración interna de EEPROM de Arduino

#incluir

int zz; int EEsize = 1024; // tamaño en bytes de la EEPROM de su placa

configuración vacía ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Escribiendo números aleatorios …"); para (int i = 0; i <EEsize; i ++) {zz = random (255); EEPROM.write (i, zz); } Serial.println (); para (int a = 0; a <tamaño EE; a ++) {zz = EEPROM.read (a); Serial.print ("Posición EEPROM:"); Serial.print (a); Serial.print ("contiene"); Serial.println (zz); retraso (25); }}

Aparecerá la salida del monitor en serie, como se muestra en la imagen.

Ahí lo tienes, otra forma útil de almacenar datos con nuestros sistemas Arduino. Aunque no es el tutorial más emocionante, sin duda es útil.

Esta publicación presentada por pmdway.com: todo para fabricantes y entusiastas de la electrónica, con envío gratuito en todo el mundo.

Recomendado: