Oglas

Ste vedeli, da lahko Arduino shranjuje podatke, ko je izklopljen? Ne skica, shranjena v bliskovnem pomnilniku. Govorim o spremenljivih podatkih v EEPROM-u. Pridružite se mi, ko vam bom pokazal, kako brati in pisati, in kaj lahko naredi za vaše projekte.

Če ste nov za Arduino, preverite naše vodnik za začetnike Uvod v Arduino: Vodnik za začetnikeArduino je odprtokodna platforma za izdelavo prototipov za elektroniko, ki temelji na fleksibilni, enostavni strojni in programski opremi. Namenjen je umetnikom, oblikovalcem, hobistom in vsem, ki jih zanima ustvarjanje interaktivnih predmetov ali okolij. Preberi več .

Kaj je EEPROM?

EEPROM pomeni električno izbrisljiv programirljivi pomnilnik samo za branje. Je vrsta nehlapnega pomnilnika. Ne skrbi, če ne razumeš, kaj od tega pomeni. Podatke preprosto shrani, tudi ko je odtegnjena moč (za razliko od tega Oven Hiter in umazan vodnik za RAM: Kaj morate vedetiRAM je ključna sestavina vsakega računalnika, vendar je lahko zmeden. Razčlenimo jo na preprost način, ki ga boste razumeli. Preberi več

instagram viewer
, ki potrebuje električno energijo, da ohrani kakršne koli podatke).

Primer posnetka EEPROM

EEPROM je vgrajen v nešteto procesorjev, kot je polje, ki ga je mogoče programirati na terenu (FPGA), ki se uporablja v Matrix Creator Matrix Creator za pregled maline PiMatrix Creator je švicarski vojni nož za vaš Pi, s 15 senzorji, paketom komunikacijskih protokolov, obročem RGB LED, nizom mikrofonov in še več! Preberi več Pi HAT. Vsi Arduinosi imajo na voljo EEPROM, vendar se zmogljivost razlikuje glede na model. Prepričajte se o našem Navodila za nakup Vodnik za nakup Arduino: Kateri odbor bi moral dobiti?Obstaja toliko različnih vrst Arduino plošč, da bi bili oproščeni, da ste zmedeni. Kaj bi morali kupiti za svoj projekt? Pomagajmo s tem vodnikom za nakup Arduino! Preberi več za več podrobnosti o vsaki plošči.

Kako deluje?

EEPROM se električno briše in programira z uporabo Fowler-Nordheim predori. Ni vam treba poznati tehničnih podrobnosti, da jih lahko uporabljate. Osnovna predpostavka je, da se električna energija uporablja za spreminjanje binarnih podatkov (kaj je binarno Kaj je dvojiško? [Pojasnjena tehnologija]Glede na to, da je binarnost tako bistvenega pomena za obstoj računalnikov, se zdi čudno, da se še nikoli nismo lotili teme - zato bi danes mislil, da bom dal kratek pregled kaj binarni ... Preberi več ). Lahko ga beremo, brišemo in ponovno napišemo v elektronski obliki.

Na srečo Arduino jezik omogoča enostavno spreminjanje podatkov, ne da bi potrebovali diplomo iz računalništva.

EEPROM Od blizu

Pričakovana življenjska doba

Čeprav je EEPROM v Arduinu enostaven za uporabo, ima življenjsko dobo omejeno. EEPROM je določen za upravljanje 100.000 ciklov branja / brisanja. To pomeni, da lahko 100.000-krat napišete in nato izbrišete / ponovno napišete podatke, preden EEPROM postane nestabilen. V resnici je dr. Atmel (proizvajalci polprevodnikov Arduino "Chip") lahko izvajajo večje ali manjše število ciklov, odvisno od toleranc vsakega procesorja.

EEPROM Od blizu

Ko je lokacija napisana in izbrisana prevečkrat, lahko začne postati nezanesljiva. Pravilnih podatkov morda ne bo vrnil ali vrnil vrednosti iz sosednjega bita.

To se morda sliši kot veliko pisanja, vendar je to mejo enostavno doseči, če beremo in pišemo programsko (v a zankanpr.). Branje podatkov ne uniči silicija, samo pisanje naredi. Podatke iz EEPROM-a lahko brez strahu berete, kolikor želite!

Pomembno je upoštevati, da ta omejitev velja za vsako pomnilniško lokacijo. Vaš Arduino ima morda na voljo 1.000 ali več pomnilniških mest v EEPROM-u, zato če na eno lokacijo napišete prevečkrat, je to vplivalo samo na to lokacijo in ne na katero koli drugo. Kasneje bom razpravljal izravnava obrabe, kar lahko zmanjša obrabo EEPROM-a z enakomerno porazdelitvijo podatkov - nekaj takega SSD diski Kako oceniti preostalo življenjsko dobo vašega SSD-jaVsi SSD diski imajo omejeno življenjsko dobo zaradi ciklov zapisovanja (čeprav je ta življenjska doba precej daljša, kot si morda mislite). Takole lahko ocenite, kako blizu ste do konca. Preberi več izkoristijo.

Za kaj je koristno?

EEPROM je izjemno koristen za vaše Arduino projekte. Ker zapomni podatke, tudi ko je napajanje odstranjeno, lahko shranite stanje Arduino. Mogoče bi lahko zgradil lasersko kupolo Pew Pew! Kako zgraditi lasersko kupolo z ArduinoTi je dolgčas? Lahko sestavi tudi lasersko kupolo. Preberi več ki se spominja svojega položaja ali koliko streliva je ostalo. Lahko bi ga uporabil nadzirajte svoje naprave Krmilni aparati podjetja Arduino: začetek domače avtomatizacijeNazadnje sem vam pokazal nekaj načinov, kako lahko svoj projekt Arduino nadzorujete prek SiriProxy, OS X's vgrajeni elementi, ki govorijo, in nekaj skript Avtomatorja ali celo posebna strojna oprema za prepoznavanje glasu čip. JAZ... Preberi več , in se prijavite, kolikokrat je bila vaša naprava aktivirana.

EEPROM je najbolj primeren za stvari, kot so nastavitve ali visoki rezultati. Če želite redno pisati zapletene podatke, morda razmislite o ethernet ščit Podarite svojemu projektu Arduino lasten mini-spletni strežnik z ethernetnim ščitomPred časom sem vam pokazal, kako lahko nastavite internetni nadzorni sistem za svoj Arduino - vendar je za vzdrževanje internetne povezave moral ostati povezan z računalnikom prek USB-ja ... Preberi več (z vgrajeno režo za SD) ali a Malina Pi Malina Pi: Neuradna vadnicaNe glede na to, ali ste trenutno lastnik Pi, ki se želi naučiti več, ali pa potencialni lastnik te naprave z velikostjo kreditne kartice, to ni vodnik, ki ga želite zamuditi. Preberi več .

EEPROM Od blizu

Beri in piši

Zdaj, ko je teorija povsem na poti, poglejmo, kako brati in zapisati nekaj podatkov! Najprej vključite knjižnico (priložena je Arduino IDE):

#include 

Zdaj napišite nekaj podatkov:

EEPROM.write (0, 12);

Ta zapiše številko 12 do lokacije EEPROM 0. Vsako pisanje traja 3,3 milisekunde (gospa, 1000 ms = 1 sekunda). Opazite, kako ne morete pisati pisem (char), dovoljene so samo številke od nič do 255. Zato je EEPROM idealen za nastavitve ali visoke ocene, vendar ni tako dober za imena ali besede igralcev. Besedilo je možno shraniti s to metodo (vsako črko abecede lahko preslikate v številko), vendar boste morali imeti več pomnilniških mest - eno mesto za vsako črko.

Takole ste prebrali te podatke:

EEPROM.rečit (0);

Nula je naslov, ki ste mu ga že napisali. Če prej niste napisali naslova, bo vrnil največjo vrednost (255).

Na voljo je nekaj nekoliko bolj uporabnih metod. Recite, da želite shraniti decimalno mesto ali niz:

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

To zapisuje podatke na več lokacij - nekaj, kar bi bilo enostavno napisati sami, vendar kljub temu priročno. Še vedno boste morali spremljati, koliko lokacij je napisano, da ne boste slučajno prepisali svojih podatkov! Uporabiti morate dobiti način ponovnega pridobivanja teh podatkov:

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

Vrednost get je shranjena v plovec f spremenljivka. Opazite, kako se to inicializira 0,00f kot vrednost. The f prevajalniku sporoči, da boste morda želeli shraniti večje število v tej spremenljivki, zato med kompilacijo nastavi nekaj dodatnih konfiguracij.

The EEPROM dokumentacija na Spletna stran Arduino ima veliko več primerov.

Nosite izravnavo

Izravnava obrabe je tehnika, ki se uporablja za zmanjšanje obrabe in podaljšanje življenjske dobe EEPROM-a. Če delate le na majhnem projektu, vam morda ne bo treba skrbeti zaradi tega.

EEPROM Od blizu

Najpreprostejša stvar, ki jo lahko naredite, da ohranite življenje EEPROM-a, je, da omejite svoje zapise na določeno lokacijo. To lahko storite tako, da najprej preberete naslov in če je vrednost, ki jo želite napisati, že prisotna, je ni treba več pisati (ne pozabite, da branje podatkov ne škodi). Tukaj je opisano, kako lahko to storite:

int safeWrite (int podatki, naslov) {if (EEPROM.read (naslov)! = podatki) {EEPROM.write (naslov, podatki); } }

To je precej preprost kod, vendar deluje le za cela števila! Namesto da bi ponovno izumili kolo, uporabite funkcijo vgrajeno v knjižnico Arduino EEPROM:

Posodobitev EEPROM (naslov, val);

Ta metoda ima popolnoma enak podpis kot pisati metoda, čeprav lahko drastično zmanjša število potrebnih zapisov!

Če morate napisati veliko podatkov in vas skrbi, da bi silikon porabil, lahko spremljate, koliko pišete, čeprav to uporablja več podatkov. Tu je groba izvedba v psevdokod:

var naslov = 0. var writeCount = 0, če (writeCount> 75 000) writeCount = 0 naslov + = 1 EEPROM.write (naslov, podatki)

V EEPROM boste morali shraniti naslov in writeCount (in writeCount bo treba razdeliti na lokacije naslovov). Večina časa ta raven zaščite ne bo potrebna. Arduinosi so tudi tako poceni, zato boste morda lažje kupili varnostno kopijo!

Zdaj bi morali vedeti dovolj, da lahko naredite nekaj super projektov. Sporočite nam, če naredite nekaj kul! Lahko prepoznate vse naprave na slikah? Pustite nam komentar spodaj!

Joe je diplomirani iz računalništva na Univerzi v Lincolnu v Veliki Britaniji. Je profesionalni razvijalec programske opreme, in ko ne leti z droni ali piše glasbe, ga je pogosto mogoče fotografirati ali ustvarjati videoposnetke.