Spanish Utilidad de EEPROM

Bangdido

Member
Licensed User
Longtime User
No soy un experto en Arduino, una de las principales problematicas es el guardar informacion, una de estas formas es almacenarlas en la EEPROM, sin embargo esta tiene un limite de escrituras( creo que son 100,000 veces, por algun lugar lo lei), esta utilidad verifica si la informacion almacenada es la misma, si es asi, no escribe, de lo contrario escribe los nuevos datos en la memoria.

este trabaja como un array, accediendo a travez de indices.

Mostremos sus ventajas
B4X:
Private Sub AppStart

    Serial1.Initialize(115200)
    Delay(3000)
    Log("EEPROM Test")
    Log("EEPROM Memory Size:", uEEPROM.Size)  ' Total de Memoria EEPROM del dispositivo
    Log("Is Configured:", uEEPROM.IsConfigured)  ' Indica si hay algo almacenado o no
    uEEPROM.ShowOptimalSettings  ' Muestra la configuracion optima para el dispositivo
End Sub

Que significa esto?
Puedes realizar cambios en el archivo uEEPROM.bas de acuerdo a la memoria de tu dispositivo, por ejemplo al correrlo en un Arduino MEGA 2560:

--- Optimal Settings ---
EEPROM.Size =4096 bytes, StringSize=35 (34+1 byte of length) at Line #4
MaxElements must be 113 at Line #3
Using this configuration would occupy 4068 of 4096 bytes
------------------------

Esto sigfica que se pueden almacenar 113 elementos del tipo Boolean, Int, UInt, Long, uLong, Double and Strings (con 35 bytes de longitud)

#3 Public const MaxElements As Int = 113
#4 Public const StringSize As Int = 35

Para escribir necesitar llamar a la rutina como
uEEPROM.Write{TYPE}( Index, Value)

Ejemplo:
B4X:
for i = 0 to 4
 uEEPROM.WriteBool(i, False)           ' Boolean
 uEEPROM.WriteInt(i, -32768 + i)       ' Integer
 uEEPROM.WriteUInt(i, i)               ' Uint
 uEEPROM.WriteLong(i, -2147483648 + i) ' Long
 uEEPROM.WriteULong(i, i)              ' ULong
 uEEPROM.WriteDouble(i, -i-0.5)        ' Double
 uEEPROM.WriteString(i, JoinStrings(Array As String("Some String Here", i)))
Next

Ejemplo de Lectura
B4X:
Log("Boolean at Index 2: ",uEEPROM.ReadBool(2))
 Log("String at Index 10:", uEEPROM.ReadString(10))

Espero que te sea de Utilidad,
puedes bajar el archivo desde mi Post Original.

Actualizado a la version 1.2 con una correccion en el Offset de Strings

https://www.b4x.com/android/forum/threads/eeprom-utility.92337/
 
Last edited:
Top