Arduino salvare dati eeprom

Arduino salvare dati eeprom

Arduino salvare dati eeprom

progetti arduino eeprom

La settimana scorsa ho passato la maggior parte del mio tempo libero a studiare i chip di memoria non volatile. Il risultato è stato una migliore comprensione della EEPROM di Arduino. Questo potrebbe sembrare un lavoro da principianti, ma spero che i miei pensieri vi aiutino a giocare con la EEPROM di Arduino facilmente!
Una EEPROM (electrically erasable programmable read-only memory) permette di memorizzare permanentemente piccole quantità di dati. Questo è molto utile per salvare le impostazioni dell’utente o accumulare piccoli set di dati in cui è necessario mantenere i dati vitali anche se l’alimentazione è spenta. Quasi tutte le schede del microcontrollore Arduino hanno la memoria EEPROM costruita all’interno del chip principale, quindi non è necessario alcun hardware extra per la conservazione e il recupero di piccoli dati.
La lettura non stressa la EEPROM ma ogni scrittura stressa la memoria. Alla fine diventerà meno affidabile. La EEPROM è specificata con una resistenza alla scrittura di 100.000 cicli. Questo punto limite non è un problema serio se si scrive sulla memoria poco frequentemente.
In Arduino Uno, lo spazio EEPROM può memorizzare fino a 1024 byte. Un singolo byte può memorizzare 8 bit di informazioni, e 8 bit possono memorizzare un numero da 0 a 255. Nelle versioni dell’IDE di Arduino precedenti alla 1.6.2 si aveva accesso solo a lettura, scrittura e aggiornamento che supportavano solo la lettura o la scrittura di un solo byte alla volta. Tuttavia, dalle versioni di Arduino IDE superiori a questa si possono vedere questi due comandi get (simile a read) e put (simile a update). Semplicemente, i nuovi comandi funzioneranno ancora quando si usano numeri più piccoli di 255 ma è necessario chiamare i nuovi comandi se il numero è più grande di255 (riferimento https://www.brainy-bits.com/eeprom-arduino/).

libreria arduino eeprom

All’interno del tuo computer, hai uno o più dischi rigidi per memorizzare tutti i tuoi dati. Ma che dire di una scheda Arduino? Come puoi salvare i valori direttamente sulla scheda Arduino senza un dispositivo di memorizzazione esterno?
Quindi, non aspettatevi di memorizzare l’uscita di una telecamera, o anche un’immagine sulla memoria EEPROM. Questa memoria è davvero adatta per piccoli valori, per esempio un’impostazione predefinita da applicare all’avvio, o una preferenza dell’utente.
Per prima cosa includiamo la libreria EEPROM e definiamo alcuni nomi per i pin utilizzati per tutti i componenti hardware. Questa è una buona pratica che vi incoraggio a seguire d’ora in poi (se non lo state già facendo).
Quando l’utente invia un numero, accendiamo il LED che corrisponde all’indice dato, e salviamo questo indice nella memoria EEPROM. In questo modo, possiamo poi recuperare questo valore al prossimo avvio, ed è proprio quello che stiamo facendo all’interno della funzione setup().
È molto improbabile che l’utente invii 100 000 valori in un tempo molto breve. Ma non ci si può sempre fidare di ciò che l’utente farà. Un miglioramento qui potrebbe essere quello di aggiungere un intervallo minimo di tempo tra 2 operazioni di scrittura, per esempio mezzo secondo. In questo modo, anche se l’utente invia migliaia di valori, la memoria EEPROM sarà preservata.

arduino eeprom

La EEPROM di Arduino, a seconda del tipo di scheda, può memorizzare fino a 4 KB di dati. L’Arduino UNO, in particolare, memorizza 1024 byte o 1024 caratteri ASCII. Con questo spazio, come possiamo memorizzare una frase? O un paragrafo? Questo è l’argomento di questo articolo.
La piattaforma Arduino ha funzioni integrate per salvare e recuperare dati dalla EEPROM. Potremmo già avere familiarità con le funzioni EEPROM.read() e EEPROM.write(), utilizzabili quando includiamo EEPROM.h:
Queste funzioni possono leggere o scrivere un byte alla volta. Qui, leggiamo i dati all’interno dell’indirizzo 0 della EEPROM e li assegniamo alla variabile val. Poi incrementiamo val (qualunque sia il valore) e lo salviamo di nuovo all’indirizzo 0 della EEPROM.
Per salvare questo nella EEPROM usando write(), possiamo usare un ciclo per scomporre la parola lettera per lettera e poi salvare ogni lettera nella EEPROM. Per prima cosa, dobbiamo determinare la dimensione della parola. Questo viene fatto in questo modo:
La funzione sizeof() restituisce il numero di byte di un array. Un tipo di dati char in Arduino usa 1 byte, e dato che stiamo usando un array di dati char, chiamando questa funzione si ottiene il numero di caratteri char.

arduino eeprom scrivere

Le EEPROM, che sono l’acronimo di Electrically Erasable Programmable Read-Only Memory, sono speciali microchip utilizzati per memorizzare dati anche dopo che il dispositivo su cui sono montati è stato spento. La prossima volta che viene acceso, il dispositivo avrà quindi dati disponibili per essere caricati. Cioè, sono dispositivi di memoria che, a differenza della RAM, sono in grado di mantenere le informazioni al loro interno anche dopo che l’alimentazione è stata spenta.
Molti controller, così come quelli utilizzati per Arduino, come l’ATMega328, hanno al loro interno dei chip EEPROM che permettono di mantenere una serie di dati utili anche dopo che il dispositivo è stato spento. Quindi si parla spesso di memoria EEPROM, similmente a quanto ci si riferisce alla memoria RAM.
Quindi ogni scheda Arduino è dotata di questo tipo di memoria, anche se a seconda del modello la loro dimensione sarà diversa. In particolare, la dimensione dipenderà dal tipo di processore utilizzato dalla scheda.
Piccola curiosità sulla EEPROM: in realtà esiste un limite di volte in cui le celle di memoria presenti al suo interno possono essere riscritte. Ma nulla di preoccupante, visto che si tratta di circa un milione di riscritture. Tuttavia, è anche importante tenerne conto in applicazioni particolari. La stessa cosa è la durata del tempo in cui una cella è in grado di mantenere i dati in assenza di corrente. Ebbene i produttori affermano un limite di tempo di 10 anni, ma questo periodo può variare a seconda dello stato di conservazione e della temperatura in cui il microchip è conservato.