Arduino può mantenere salvati i dati?

Arduino può mantenere salvati i dati? Può fare una "store" dei dati in modo persistente? In questo articolo ho il piacere di rispondere a questa domanda. 

Ma prima di cominciare, permettimi di presentarmi: sono Lorenzo Neri: chief education officer di Elettronica Open Source, mi occupo di realizzare contenuti educativi per aiutare persone come te a comprendere meglio questo mondo!

Arduino per quello che è, una scheda a micro-controllore, è dotata di memoria di lavoro, quindi una piccola quantità di RAM e un'altra che ti permette di eseguire il firmware che tu stesso scrivi, quindi la ROM. Precisiamo: la EEPROM.

Senza dubbio non si tratta di un computer dotato di hard disk con centinaia di GigaByte a disposizione, questo no: però puoi "sfruttare" la ROM disponibile all'interno del micro-controllore stesso.

La ROM di Arduino: come mantenere salvati i dati

Devo essere totalmente sincero con te: per "salvare i dati" è molto probabile che tu sottintenda informazioni strutturate e/o pesanti. Se nella tua testa c'è l'idea di poter salvare un report dati di un sensore della durata di un mese ti devo fermare. Una cosa del genere è pressoché impossibile: in questo caso ti suggerirei di trovare soluzioni alternative per trasferire questi dati e magari analizzarli...

La ROM messa a disposizione da Arduino, senza dubbio può salvare piccoli quantitativi di dati: ma parliamo di dati molto semplici, non di certo di file strutturati come l'esempio di prima. Devi fare un'altra considerazione: all'interno della ROM è presente il firmware stesso, perciò gran parte di questa memoria viene occupata dal programma che hai scritto.

Quindi, hai a tua disposizione la ROM di Arduino: come usarla?

EEPROM Arduino: una libreria omonima

Possiamo sfruttare una libreria "built-in" realizzata direttamente dalla casa madre: EEPROM, di cui ti lascio le referenze ufficiali qui. Grazie a questa libreria, come ti dicevo prima, possiamo salvare, scrivere, leggere, aggiornare ed eliminare informazioni semplici in maniera persistente, quindi un modo vero e proprio di eseguire una store dei dati all'interno di Arduino. Questa libreria ti permette di usare i 512 byte all'interno della ROM: non sono tanti, anzi. Sono pochi, ma dipende dall'uso che ne fai.

Alcuni modelli di Arduino però, permettono di avere a disposizione un maggior quantitativo di ROM. Come dicevo ad inizio articolo, mentirei se ti dicessi che puoi salvare file grandi e strutturati: ma dati semplici e piccoli puoi. Ogni singolo byte, proprio per la natura stessa di un byte, permette di mantenere salvato al suo interno un valore compreso fra 0 e 255 inclusi.

Ognuno di essi ha un suo indirizzo.

Ma penso sia meglio mostrarti direttamente un esempio in codice su come poter concretizzare tutto questo e mantenere salvati i dati in modo persistente:

#include <EEPROM.h>


int indirizzo = 0;

void setup() {

  // qui puoi aggiungere il tuo codice.
}

void loop() {

  // prendiamo un valore a caso di tipo intero, 
compreso fra i valori consentiti

  int val = random(0,256);

  EEPROM.write(indirizzo, val);

  // Incrementiamo l'indirizzo 
così da poter scrivere nel byte successivo
  indirizzo = indirizzo + 1;
  // Se raggiungiamo il massimo indirizzo, riprendiamo dal primo.
  if (indirizzo == EEPROM.length()) {

    indirizzo = 0;

  }

  delay(100);
}

 

Ovviamente, abbiamo a disposizione tutte le altre operazioni: scoprile all'interno della documentazione ufficiale della libreria EEPROM!

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend