Publicitate

Știați că Arduino poate stoca date când este oprit? Nu schița stocată în memoria flash. Vorbesc despre date variabile în EEPROM. Alătură-te mie, în timp ce îți arăt cum să-l citești și să-i scrii și ce poate face pentru proiectele tale.

Dacă sunteți nou la Arduino, asigurați-vă că îl consultați ghid pentru incepatori Noțiuni introductive cu Arduino: Ghid pentru începătoriArduino este o platformă de prototipare electronică open-source bazată pe hardware și software flexibile, ușor de utilizat. Este destinat artiștilor, designerilor, pasionaților și oricui este interesat să creeze obiecte sau medii interactive. Citeste mai mult .

Ce este EEPROM?

EEPROM înseamnă memorie de citire programabilă ștergătoare electric. Este un tip de memorie non-volatilă. Nu vă faceți griji dacă nu înțelegeți ce înseamnă asta. Pur și simplu stochează date chiar și cu puterea eliminată (spre deosebire de Berbec Un ghid rapid și murdar pentru RAM: Ce trebuie să știțiMemoria RAM este o componentă crucială a fiecărui computer, dar poate fi confuză. Îl descompunem în termeni ușor de înțeles pe care îi veți înțelege.

instagram viewer
Citeste mai mult , care are nevoie de energie electrică pentru a reține orice date).

Exemplu EEPROM filmat

EEPROM este încorporat într-o multitudine de procesoare, cum ar fi matricea de poartă programabilă pe câmp (FPGA) folosită în Matrix Creator Matrix Creator pentru Raspberry Pi ReviewMatrix Creator este un cuțit elvețian al armatei pentru Pi, cu 15 senzori, o suită de protocoale de comunicații, un inel de LED-uri RGB, un sistem de microfoane și multe altele! Citeste mai mult Pi HAT. Toți Arduinos au EEPROM disponibili, dar capacitatea variază în funcție de model. Asigurați-vă că aruncați o privire asupra noastră ghid de cumpărare Ghidul de cumpărare Arduino: ce placă ar trebui să obțineți?Există atât de multe tipuri diferite de plăci Arduino, încât ai fi iertat că ai fost confuz. Ce ar trebui să cumperi pentru proiectul tău? Să ne ajutăm, cu acest ghid de cumpărare Arduino! Citeste mai mult pentru mai multe detalii pe fiecare bord.

Cum functioneazã?

EEPROM este șters electric și programat folosind Tunelarea Fowler-Nordheim. Nu trebuie să cunoașteți detaliile tehnice pentru a putea utiliza. Premisa de bază este că energia electrică este utilizată pentru a schimba datele binare (ceea ce este binar Ce este binarul? [Tehnologie explicată]Având în vedere că binarul este atât de fundamental pentru existența calculatoarelor, pare ciudat că nu am mai abordat subiectul până acum - așa că astăzi am crezut că voi oferi o scurtă privire de ansamblu a ceea ce binare ... Citeste mai mult ). Poate fi citit, șters și re-scris electronic.

Din fericire, Limba Arduino facilitează schimbarea datelor, toate fără a fi nevoie de o diplomă în informatică.

EEPROM Close Up

Speranța de viață

Deși este ușor de utilizat EEPROM în Arduino, are o viață limitată. EEPROM este specificat pentru a gestiona 100.000 de cicluri de citire / ștergere. Aceasta înseamnă că puteți scrie și apoi șterge / rescrie datele de 100.000 de ori înainte ca EEPROM să devină instabile. In realitate, Atmel (producătorii semiconductorilor „Chip” Arduino) pot face față unui număr mai mare sau mai mic de cicluri, în funcție de toleranțele fiecărui procesor.

EEPROM Close Up

Odată ce locația a fost scrisă și ștersă de prea multe ori, poate începe să devină nesigură. Este posibil să nu returneze datele corecte sau să returneze valoarea dintr-un bit vecin.

Acest lucru poate suna ca multe scrieri, dar poate fi ușor să atingeți această limită dacă citiți și scrieți programatic (într-o versiune a) buclă, de exemplu). Citirea datelor nu degradează siliciul, numai scrisul face. Puteți citi date de la EEPROM atât cât doriți, fără teamă!

Este important să rețineți că această limită se aplică fiecărei locații de memorie. Arduino-ul dvs. poate avea 1.000 sau mai multe locații de memorie disponibile în EEPROM, deci dacă scrieți de prea multe ori într-o locație, este doar acea locație afectată, și nu oricare dintre celelalte. Mai târziu voi discuta nivel de uzură, care poate reduce uzura EEPROM prin distribuirea uniformă a datelor - ceva care SSD-urile Cum să estimați durata de viață rămasă a SSD-ului dvs.Toate SSD-urile au o durată de viață limitată datorită ciclurilor de scriere (deși această durată de viață este mult mai lungă decât ați putea crede). Iată cum puteți estima cât de aproape sunteți până la sfârșit. Citeste mai mult a te folosi de.

Pentru ce este util?

EEPROM este incredibil de util pentru proiectele tale Arduino. Deoarece își amintește datele chiar și atunci când este scoasă puterea, puteți stoca starea Arduino. Poate ai putea construi o turela cu laser Pew Pew! Cum se construiește o turelă laser cu un ArduinoEști plictisit? De asemenea, ar putea construi o turelă cu laser. Citeste mai mult care își amintește poziția sau cât de multă „muniție” a rămas. Ai putea să o folosești pentru controlează-ți aparatele Aparate de control dintr-un Arduino: începutul automatizării casniceUltima dată, v-am arătat câteva modalități de a face discursurile proiectelor dvs. Arduino controlate prin SiriProxy, OS X's elemente de vorbire încorporate și unele scripturi Automator sau chiar un hardware dedicat recunoașterii vocale cip. Eu ... Citeste mai mult și înregistrați de câte ori aparatul dvs. a fost activat.

EEPROM este cel mai potrivit pentru lucruri precum setări sau scoruri mari. Dacă doriți să scrieți regulat date complexe, poate luați în considerare un scut Ethernet Dă-ți proiectului tău Arduino propriul mini-server web, cu un scut EthernetCu ceva timp în urmă, v-am arătat cum puteți configura un sistem de control internet pentru Arduino - dar a trebuit să rămână conectat la un computer prin USB pentru a menține conexiunea la internet ... Citeste mai mult (cu slot SD încorporat) sau a Zmeura Pi Raspberry Pi: Tutorialul neoficialIndiferent dacă sunteți un proprietar actual de Pi care dorește să învețe mai multe sau un potențial proprietar al acestui dispozitiv de dimensiune a cardului de credit, acesta nu este un ghid pe care doriți să îl pierdeți. Citeste mai mult .

EEPROM Close Up

Citeste si scrie

Acum că teoria este pe cale, să ne uităm la citirea și scrierea unor date! În primul rând, includeți biblioteca (aceasta este furnizată de IDE Arduino):

#include 

Acum scrie câteva date:

EEPROM.write (0, 12);

Acesta scrie numărul 12 la locația EEPROM 0. Fiecare scriere durează 3,3 milisecunde (Domnișoară, 1000ms = 1 secundă). Observați cum nu puteți scrie scrisori (carboniza), sunt permise doar numerele de la zero la 255. Acesta este motivul pentru care EEPROM este ideal pentru setări sau scoruri mari, dar nu este atât de bun pentru numele sau cuvintele jucătorului. Este posibil să stocați text folosind această metodă (puteți face maparea fiecărei litere a alfabetului la un număr), cu toate acestea va trebui să aveți mai multe locații de memorie - o locație pentru fiecare literă.

Iată cum citiți aceste date:

EEPROM.read (0);

Zero este adresa pe care ai scris-o anterior. Dacă nu ați scris anterior pe o adresă, aceasta va returna valoarea maximă (255).

Există câteva metode ceva mai utile. Spuneți că ați dorit să stocați o zecimală sau un șir zecimal:

EEPROM.put (2, "12,67");

Acest lucru scrie datele în mai multe locații - ceva care ar fi ușor de scris singur, dar la îndemână, cu atât mai puțin. Va trebui totuși să țineți cont de câte locații i-au fost scrise, astfel încât să nu vă suprascrieți accidental datele! Trebuie să utilizați obține metoda pentru a prelua din nou aceste date:

float f = 0,00f; EEPROM.get (2, f);

Valoarea obtinuta este stocata in float f variabil. Observați cum este inițializat acest lucru 0.00f ca valoare. f permite compilatorului să știe că este posibil să doriți să stocați un număr mare în această variabilă, astfel încât să configureze unele configurații suplimentare în timpul compilării.

Documentația EEPROM pe Site-ul Arduino are multe alte exemple.

Nivelare de uzură

Nivelarea uzurii este o tehnică folosită pentru a reduce uzura și a crește durata de viață a EEPROM. Dacă lucrați doar la un proiect mic, poate nu trebuie să vă faceți griji pentru acest lucru.

EEPROM Close Up

Cel mai simplu lucru pe care îl puteți face pentru a păstra viața EEPROM este să vă limitați scrierea la o anumită locație. Puteți face acest lucru citind mai întâi adresa și, dacă valoarea pe care doriți să o scrieți este deja prezentă, nu este nevoie să o scrieți din nou (nu uitați, citirea datelor nu dăunează). Iată cum ai face acest lucru:

int safeWrite (date int, adresa) {if (EEPROM.read (adresa)! = data) {EEPROM.write (adresă, date); } }

Acesta este un pic de cod simplu, dar funcționează numai pentru întregi! În loc să reinventați roata, folosiți funcția încorporată în biblioteca Arduino EEPROM:

EEPROM.update (adresa, val);

Această metodă are exact aceeași semnătură ca și scrie metodă, deși poate reduce drastic numărul de scrieri necesare!

Dacă trebuie să scrii o mulțime de date și ești preocupat de uzura siliciului, poți urmări câte scrieri faci, deși aceasta folosește mai multe date. Iată o implementare brută în pseudo cod:

adresa var = 0. var writeCount = 0 if (writeCount> 75.000) writeCount = 0 adresa + = 1 EEPROM.write (adresa, date)

Va trebui să stocați adresa și writeCount în EEPROM (iar writeCount va trebui împărțit în locațiile adreselor). Majoritatea timpului, acest nivel de protecție nu va fi necesar. Arduinos este la fel de ieftin, așa că este mai ușor să cumpărați o copie de rezervă!

Acum ar trebui să știți suficient pentru a realiza niște proiecte nemaipomenite. Spune-ne dacă faci ceva mișto! Puteți recunoaște toate dispozitivele din imagini? Lasă-ne un comentariu mai jos!

Joe este absolvent în informatică de la Universitatea din Lincoln, Marea Britanie. Este un dezvoltator de software profesionist, iar atunci când nu zboară drone sau scrie muzică, poate fi găsit adesea făcând fotografii sau producând videoclipuri.