Oglas

Jeste li znali da Arduino može pohraniti podatke kada je isključen? Nije skica pohranjena u flash memoriji. Govorim o promjenjivim podacima u EEPROM-u. Pridružite mi se dok vam pokažem kako čitati i pisati na njemu i što to može učiniti za vaše projekte.

Ako ste novi u Arduinu, provjerite naše vodič za početnike Početak rada s Arduinom: Vodič za početnikeArduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom hardveru i softveru koji se lako koristi. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja. Čitaj više .

Što je EEPROM?

EEPROM je kratica električno izbrisljiva programirljiva memorija samo za čitanje. To je vrsta nehlapljive memorije. Ne brinite ako ne razumijete što bilo što od toga znači. Jednostavno pohranjuje podatke čak i uz isključenu struju (za razliku od toga radna memorija Brzi i prljavi vodič za RAM: Što trebate znatiRAM je bitna komponenta svakog računala, ali može biti zbunjujuće. Raščlanjujemo ga na jednostavan način shvatiti. Čitaj više

, kojoj je potrebna električna energija za zadržavanje podataka.

Primjer EEPROM-a

EEPROM je ugrađen u bezbroj procesora, kao što je polja programirana polja (FPGA) koja se može programirati i koja se koristi u Stvoritelj matrice Matrix Creator za pregled maline PiMatrix Creator je švicarski vojni nož za vaš Pi, s 15 senzora, paketom komunikacijskih protokola, prstenom od RGB LED-ova, nizom mikrofona i još mnogo toga! Čitaj više Pi HAT. Svi Arduinosi imaju na raspolaganju EEPROM, ali kapacitet ovisi o modelu. Obavezno pogledajte naš vodič za kupnju Vodič za kupnju Arduinoa: Koji odbor trebate dobiti?Postoji toliko mnogo vrsta Arduino ploča vani da bi vam bilo oprošteno što ste zbunjeni. Koje biste trebali kupiti za svoj projekt? Pomozite nam s ovim vodičem za kupovinu Arduino! Čitaj više za više detalja o svakoj ploči.

Kako radi?

EEPROM se električno briše i programira pomoću Tuneliranje Fowler-Nordheim. Ne morate znati tehničke detalje da biste ih mogli koristiti. Osnovna pretpostavka je da se električna energija koristi za promjenu binarnih podataka (što je binarno Što je binarno? [Objašnjena tehnologija]S obzirom na to da je binarnost tako apsolutno bitna za postojanje računala, čini se neobično da se nikad nismo bavili tom temom - pa danas bih pomislio da ću dati kratak pregled onoga što binarno okruženje ... Čitaj više ). Može se čitati, brisati i ponovno pisati elektroničkim putem.

Srećom Arduino jezik olakšava promjenu podataka, a sve dok nije potrebna diploma računalnih znanosti.

EEPROM izbliza

Životni vijek

Iako je EEPROM u Arduinuu jednostavan za korištenje, on ima ograničen život. EEPROM je određen za rukovanje 100 000 ciklusa čitanja / brisanja. To znači da možete 100 000 puta upisati i izbrisati / izbrisati podatke prije nego što EEPROM postane nestabilan. U stvarnosti, Atmel (proizvođači Arduino "Chip") poluvodiča mogu raditi s većim ili manjim brojem ciklusa, ovisno o tolerancijama svakog procesora.

EEPROM izbliza

Jednom kada se lokacija napiše i izbriše previše puta, može postati nepouzdana. Možda neće vratiti točne podatke ili vratiti vrijednost iz susjednog bita.

Ovo može zvučati kao puno pisanja, ali može se lako dostići ta granica ako se čita i piše programsko (u a petlja, na primjer). Čitanje podataka ne degradira silicij, samo pisanje čini. Možete čitati podatke s EEPROM-a koliko god želite bez straha!

Važno je napomenuti da se ovo ograničenje odnosi na svaku memorijsku lokaciju. Vaš Arduino možda ima 1.000 ili više memorijskih lokacija dostupnih u EEPROM-u, tako da ako previše puta pišete na jednu lokaciju, to utječe samo na tu lokaciju, a ne na bilo koju drugu. Kasnije ću raspravljati izravnavanje trošenja, što može smanjiti trošenje EEPROM-a ravnomjernom raspodjelom podataka SSD-ovi Kako procijeniti preostali vijek trajanja vašeg SSD-aSvi SSD diskovi imaju ograničen životni vijek zbog ciklusa pisanja (iako je taj vijek trajanja mnogo duži nego što možda mislite). Evo kako možete procijeniti koliko ste blizu kraju. Čitaj više iskoristiti.

Za što je korisno?

EEPROM je nevjerojatno koristan za vaše Arduino projekte. Budući da pamti podatke čak i kad nestane struje, mogli biste pohraniti stanje Arduino. Možda biste mogli izgraditi laserska kupola Pew Pew! Kako izgraditi lasersku kupolu s arduinomJe li ti dosadno? Moglo bi se izgraditi i laserska kupola. Čitaj više koja se sjeća svog položaja ili koliko preostaje „streljivo“. Možete to koristiti kontrolirajte svoje uređaje Upravljački uređaji tvrtke Arduino: početak kućne automatizacijeProšli put pokazao sam vam nekoliko načina na koji govor Arduino projekata možete kontrolirati putem SiriProxy-a, OS X-a ugrađeni predmeti koji se mogu govoriti i neki scenarij Automatora ili čak namjenski hardver za prepoznavanje glasa čip. Ja ... Čitaj više , i zabilježite koliko se puta vaš aparat aktivirao.

EEPROM je najprikladniji za stvari poput postavki ili visokih rezultata. Ako želite redovito pisati složene podatke, razmislite ethernet štit Dajte svom projektu Arduino vlastiti mini web-poslužitelj, s Ethernet štitomPrije nekog vremena pokazao sam vam kako postaviti internetski sustav kontrole za svoj Arduino - ali morao je ostati povezan s računalom putem USB-a da bi održao internetsku vezu ... Čitaj više (s ugrađenim SD utorom) ili a Raspberry Pi Raspberry Pi: Neslužbeni udžbenikBez obzira jeste li trenutni vlasnik Pi-a koji želi naučiti više ili ste potencijalni vlasnik ovog uređaja veličine kartice, ovo nije vodič koji želite propustiti. Čitaj više .

EEPROM izbliza

Čitati i pisati

Sad kad je teorija na putu do kraja, pogledajmo kako čitati i pisati neke podatke! Prvo uključite knjižnicu (dolazi s Arduino IDE):

#include 

Sada napišite neke podatke:

EEPROM.write (0, 12);

Ovo piše broj 12 do lokacije EEPROM 0. Svako pisanje traje 3,3 milisekunde (ms, 1000 ms = 1 sekunda). Primjetite kako ne možete pisati pisma (čađ), dopušteni su samo brojevi od nula do 255. Zbog toga je EEPROM idealan za postavke ili visoke rezultate, ali nije toliko dobar za imena ili riječi igrača. Tekst je moguće pohraniti ovom metodom (svako slovo abecede možete preslikati na broj), no morat ćete imati više memorijskih mjesta - po jedno mjesto za svako slovo.

Evo kako čitate te podatke:

EEPROM.pročitano (0);

Nula je adresa o kojoj ste ranije pisali. Ako prethodno niste napisali adresu, vratit će vam maksimalnu vrijednost (255).

Na raspolaganju su neke malo korisnije metode. Recite da želite pohraniti decimalno mjesto ili niz:

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

To zapisuje podatke na više lokacija - nešto što bi bilo lako napisati sami, ali svejedno korisno. I dalje ćete morati pratiti na koliko je lokacija napisano ovo da slučajno ne prepisujete svoje podatke! Morate koristiti dobiti metoda ponovnog dohvaćanja ovih podataka:

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

Vrijednost get se pohranjuje u float f promjenjiva. Primjetite kako se to inicijalizira 0.00f kao vrijednost. f daje prevoditelju da zna da možda želite pohraniti veliki broj u ovu varijablu, pa postavlja neke dodatne konfiguracije tijekom kompilacije.

EEPROM dokumentacija na Web stranica Arduino ima puno više primjera.

Nošenje izravnavanje

Izravnavanje trošenja je tehnika koja se koristi za smanjenje trošenja i produljenje vijeka trajanja EEPROM-a. Ako radite samo na malom projektu, možda se neće trebati brinuti zbog toga.

EEPROM izbliza

Najjednostavnija stvar koju možete učiniti da sačuvate život EEPROM-a jest ograničiti pisanje na određeno mjesto. To možete učiniti tako da prvo pročitate adresu, a ako je vrijednost koju želite napisati već je prisutna, nema potrebe da je ponovo pišete (zapamtite, čitanje podataka ne šteti). Evo kako biste to učinili:

int safeWrite (int podaci, adresa) {if (EEPROM.read (adresa)! = podaci) {EEPROM.write (adresa, podaci); } }

To je prilično jednostavan bitni kod, no radi samo za cijele brojeve! Umjesto ponovnog pronalaska kotača, koristite funkciju ugrađenu u Arduino EEPROM knjižnicu:

Ažuriranje EEPROM-a (adresa, val);

Ova metoda ima točno isti potpis kao i pisati metoda, iako može drastično smanjiti broj potrebnih zapisa!

Ako trebate napisati puno podataka i zabrinuti ste zbog trošenja silicija, možete pratiti koliko napišete, premda za to koristi više podataka. Evo grube primjene u pseudokod:

var adresa = 0. var writeCount = 0 ako (writeCount> 75,000) writeCount = 0 adresa + = 1 EEPROM.write (adresa, podaci)

Trebat ćete pohraniti adresu i WriteCount u EEPROM (a writeCount će trebati biti podijeljen na adrese adresa). Većinu vremena ta razina zaštite neće biti potrebna. Arduinovi su također toliko jeftini, pa će vam možda biti lakše kupiti rezervnu kopiju!

Sada biste trebali znati dovoljno da biste napravili neke fantastične projekte. Javite nam ako napravite nešto cool! Možete li prepoznati sve uređaje na slikama? Ostavite nam komentar u nastavku!

Joe je diplomski studij informatike na Sveučilištu u Lincolnu u Velikoj Britaniji. On je profesionalni programer softvera, a kad ne leti dronovima ili piše glazbu, često ga mogu naći fotografirati ili snimati videozapise.