image/svg+xml
Logo Tom's Hardware
  • Hardware
  • Videogiochi
  • Mobile
  • Elettronica
  • EV
  • Scienze
  • B2B
  • Quiz
  • Tom's Hardware Logo
  • Hardware
  • Videogiochi
  • Mobile
  • Elettronica
  • EV
  • Scienze
  • B2B
  • Quiz
  • Forum
  • Sconti & Coupon
Sconti & Coupon
Accedi a Xenforo
Immagine di Sconto da record, grande quanto una TV Samsung da 85". Ecco come averla Sconto da record, grande quanto una TV Samsung da 85". Ecco ...
Immagine di Migliori condizionatori portatili senza tubo (giugno 2025) Migliori condizionatori portatili senza tubo (giugno 2025)...

Corso base di Arduino: come gestire la EEPROM

Oggi vedremo le tecniche per conservare le informazioni nella memoria di Arduino, anche quando manca la corrente elettrica.

Advertisement

Quando acquisti tramite i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Scopri di più
Avatar di Elettronica Open Source

a cura di Elettronica Open Source

Pubblicato il 20/10/2017 alle 18:52

banner prova1

Quando si toglie l'alimentazione elettrica ad Arduino, si sa, tutti i dati elaborati nella sua RAM vengono irrimediabilmente persi. Vediamo quali sono le tecniche per conservare le informazioni nella memoria della famosa scheda di sviluppo, anche quando manca la corrente elettrica.

Ormai quasi tutti i microcontrollori ne posseggono una. Arduino ha una piccola memoria, la EEPROM, che ha la capacità di trattenere le informazioni anche in assenza di alimentazione elettrica, proprio come una microscopica memoria di massa. Esistono alcune librerie che permettono la scrittura e la lettura di tale memoria, in modo da conservare alcuni dati importanti.

Le funzioni per la gestione della EEPROM

La EEPROM è una memoria composta da 1024 byte (almeno per il modello di MCU ATmega328). E' un insieme di celle, ognuna delle quali direttamente accessibile attraverso un indirizzo. Ogni cella può contenere una informazione. La libreria di Arduino gestisce alcune potenti funzioni, le più importanti delle quali sono:

  • EEPROM.read(address)        Legge un dato dalla EEPROM a un particolare indirizzo
  • EEPROM.write(addr, val)     Scrive un dato nella EEPROM a un indirizzo specificato

Ne esistono delle altre e il programmatore, ovviamente può crearne ulteriormente, secondo le proprie esigenze.

Ciclo di vita della EEPROM

La EEPROM, purtroppo, non è scrivibile all'infinito ma può essere sottoposta a memorizzazione solamente per 100.000 volte. Si tratta di un valore, comunque, estremamente elevato. In fase di programmazione basterebbe pianificare un numero minimo di scritture ed evitare le memorizzazioni inutili, ossia si devono scongiurare le registrazioni di un determinato valore quando lo stesso risulta già presente in memoria.

Un semplice conta persone con memoria

L'esempio che segue è un semplice conta persone o conta pezzi che incrementa una variabile ogni volta che si preme un pulsante, simulando l'azione di una fotocellula che rileva un raggio di luce interrotto solo dal passaggio di qualcosa. Il conteggio è visualizzato attraverso il monitor seriale dell'IDE di Arduino. La particolarità sta nel fatto che se dovesse mancare la tensione alla scheda, il conteggio non si perde e non si azzera ma riprende dal punto lasciato, appena il circuito è nuovamente alimentato. I valori incrementali sono infatti memorizzati in EEPROM. Il secondo pulsante ha il compito di azzerare il valore, memorizzando 0 semplicemente in memoria. La figura 1 mostra lo schema elettrico del dispositivo.

figura 1 schema elettrico
Figura 1: schema elettrico del conta persone con memoria

Lo sketch

Il programma, in figura 2, è molto semplice. Inoltre risulta estremamente commentato. La funzione setup() ha solo lo scopo di definire la velocità di comunicazione seriale e d'impostare, quale ingresso, i pin 6 (per il pulsante azzera) e 7 (per il pulsante di incremento). La funzione loop(), ripetuta continuamente e all'infinito, attende la pressione dei tasti. Se viene premuto il tasto di azzeramento, il programma memorizza il valore 0 sulla prima cella della EEPROM dimenticando, di fatto, il numero di oggetti o persone contate. Se viene premuto, invece, il tasto d'incremento il programma:

  • Legge il contenuto della EEPROM
  • Incrementa tale valore
  • Memorizza in EEPROM il nuovo valore
  • Visualizza le informazioni anche sul monitor seriale
  • Congela il programma in caso di pressione prolungata del pulsante, evitando inutili e ripetitivi incrementi al passaggio di una sola persona

Il listato è molto semplice è non prevede molte caratteristiche utili quali, ad esempio, il controllo dell'overflow o dell'anti rimbalzo per i pulsanti.

figura 2 sketch
Figura 2: lo sketch

La figura 3 mostra, infine, il monitor seriale durante il funzionamento del sistema.

figura 3 monitor seriale
Figura 3: monitor seriale

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.

Leggi altri articoli

👋 Partecipa alla discussione! Scopri le ultime novità che abbiamo riservato per te!

0 Commenti

⚠️ Stai commentando come Ospite . Vuoi accedere?


Questa funzionalità è attualmente in beta, se trovi qualche errore segnalacelo.

Segui questa discussione
Advertisement

Non perdere gli ultimi aggiornamenti

Newsletter Telegram

I più letti di oggi


  • #1
    Un click per spiarti: 40.000 videocamere accessibili a chiunque, senza password
  • #2
    Reon Pocket Pro, il condizionatore Sony che s’indossa e funziona davvero | Test & Recensione
  • #3
    Il futuro dei laptop è qui: cosa cambia ora?
  • #4
    Cade l'ultimo baluardo delle RAM DDR4: ora è davvero finita
  • #5
    5 condizionatori portatili da tenere d'occhio in vista del Prime Day
  • #6
    Quanto ne sai su Amiga? Mettiti alla prova con il nostro quiz
Articolo 1 di 5
Migliori condizionatori portatili senza tubo (giugno 2025)
Durante l’estate, avere un sistema per rinfrescarsi è praticamente indispensabile. Per molti, la soluzione ideale è un condizionatore portatile senza tubo.
Immagine di Migliori condizionatori portatili senza tubo (giugno 2025)
1
Leggi questo articolo
Articolo 2 di 5
Sconto da record, grande quanto una TV Samsung da 85". Ecco come averla
Offerta imperdibile da Mediaworld. I possessori di MW Club possono prendere la Samsung QE85Q60D da 85" a soli 1117€ circa.
Immagine di Sconto da record, grande quanto una TV Samsung da 85". Ecco come averla
1
Leggi questo articolo
Articolo 3 di 5
Offerte da Black Friday ma in piena estate: Unieuro sorprende tutti
Fino al 18 giugno, da Unieuro è tempo di innamorarsi della tecnologia: un’ondata di sconti trasforma l’inizio dell’estate in una sorta di Black Friday.
Immagine di Offerte da Black Friday ma in piena estate: Unieuro sorprende tutti
Leggi questo articolo
Articolo 4 di 5
#AmazonFinds: mettilo vicino al rubinetto e non potrai più farne a meno
Vi piacciono i prodotti particolari di AmazonFinds scoperti per caso tramite i social? Questo tappetino è uno di quelli e promette migliorie in cucina.
Immagine di #AmazonFinds: mettilo vicino al rubinetto e non potrai più farne a meno
Leggi questo articolo
Articolo 5 di 5
Sempre più richiesto, oggi super scontato: il condizionatore del momento
Il caldo avanza, il prezzo scende. Approfittate di questo condizionatore scontato su Amazon. Attualmente è tra i più venduti del momento.
Immagine di Sempre più richiesto, oggi super scontato: il condizionatore del momento
Leggi questo articolo
Advertisement
Advertisement

Advertisement

Footer
Tom's Hardware Logo

 
Contatti
  • Contattaci
  • Feed RSS
Legale
  • Chi siamo
  • Privacy
  • Cookie
  • Affiliazione Commerciale
Altri link
  • Forum
Il Network 3Labs Network Logo
  • Tom's Hardware
  • SpazioGames
  • CulturaPop
  • Data4Biz
  • TechRadar
  • SosHomeGarden
  • Aibay

Tom's Hardware - Testata giornalistica associata all'USPI Unione Stampa Periodica Italiana, registrata presso il Tribunale di Milano, nr. 285 del 9/9/2013 - Direttore: Andrea Ferrario

3LABS S.R.L. • Via Pietro Paleocapa 1 - Milano (MI) 20121
CF/P.IVA: 04146420965 - REA: MI - 1729249 - Capitale Sociale: 10.000 euro

© 2025 3Labs Srl. Tutti i diritti riservati.