Reklama

Vedeli ste, že Arduino dokáže ukladať údaje, keď je vypnuté? Nie je to náčrt uložený v pamäti Flash. Hovorím o premenných údajoch v EEPROM. Pripojte sa ku mne, keď vám ukážem, ako čítať a písať a čo môže urobiť pre vaše projekty.

Ak ste pre Arduino nováčikom, nezabudnite sa pozrieť na našu sprievodca pre začiatočníkov Začíname s Arduino: Príručka pre začiatočníkovArduino je otvorená prototypová platforma elektroniky založená na flexibilnom, ľahko použiteľnom hardvéri a softvéri. Je určený pre umelcov, dizajnérov, fandov a kohokoľvek, kto má záujem vytvárať interaktívne objekty alebo prostredia. Čítaj viac .

Čo je EEPROM?

EEPROM je skratka pre elektricky vymazateľná programovateľná pamäť určená len na čítanie. Je to typ stálej pamäte. Nerobte si starosti, ak nerozumiete, čo to znamená. Jednoducho ukladá údaje aj pri odstránenom napájaní (na rozdiel od RAM Stručný a špinavý sprievodca po RAM: Čo potrebujete vedieťRAM je kľúčovou súčasťou každého počítača, ale môže byť mätúci. Rozkladáme to tak, aby ste ich ľahko pochopili. Čítaj viac

instagram viewer
, ktorý potrebuje elektrinu na uchovávanie akýchkoľvek údajov).

Príklad EEPROM

EEPROM je zabudovaný do nespočetného množstva procesorov, napríklad do poľa programovateľných hradlových polí (FPGA) používaných v Matrix Creator Matrix Creator pre hodnotenie Raspberry PiMatrix Creator je švajčiarsky armádny nôž pre váš Pi, s 15 senzormi, sadou komunikačných protokolov, prsteňom RGB LED, mikrofónovým poľom a ďalšími! Čítaj viac Pi HAT. Všetky Arduinos majú k dispozícii EEPROM, ale kapacita sa líši v závislosti od modelu. Nezabudnite sa pozrieť na naše Sprievodca nákupom Sprievodca nákupom Arduina: Ktorú dosku by ste mali dostať?Existuje toľko rôznych druhov dosiek Arduino, bolo by vám odpustené, keby ste boli zmätení. Čo by ste si mali kúpiť pre svoj projekt? Pomôžeme s týmto sprievodcom nákupom Arduino! Čítaj viac pre viac informácií o každej doske.

Ako to funguje?

EEPROM je elektricky vymazané a naprogramované pomocou Tunel Fowler-Nordheim. Aby ste ich mohli používať, nepotrebujete technické podrobnosti. Základným predpokladom je, že elektrina sa používa na zmenu binárnych údajov (čo je binárne Čo je binárne? [Vysvetlenie technológie]Vzhľadom na to, že binárne údaje sú pre existenciu počítačov absolútne nevyhnutné, zdá sa čudné, že sme sa touto témou nikdy nezaoberali - takže dnes by som si myslel, že poskytnem stručný prehľad toho, čo je binárne ... Čítaj viac ). Dá sa čítať, vymazávať a prepisovať elektronicky.

Našťastie Jazyk Arduino uľahčuje zmenu údajov, a to všetko bez toho, aby bolo potrebné vysokoškolské vzdelanie.

EEPROM Close Up

Dĺžka života

Aj keď sa v Arduino ľahko používa EEPROM, má obmedzenú životnosť. EEPROM je určený na spracovanie 100 000 cyklov čítania / vymazávania. To znamená, že môžete napísať a potom vymazať / znovu zapísať údaje 100 000-krát predtým, ako sa EEPROM stane nestabilnou. V realite, Atmel (výrobcovia polovodičov Arduino „Chip“) môžu zvládnuť vyšší alebo nižší počet cyklov v závislosti od tolerancií každého procesora.

EEPROM Close Up

Akonáhle je lokalita napísaná a vymazaná príliš mnohokrát, môže sa stať nespoľahlivou. Nemusí vrátiť správne dáta ani vrátiť hodnotu zo susedného bitu.

Môže to znieť ako veľa zápisov, ale tento limit môže byť ľahké dosiahnuť, ak programujete čítanie a písanie programovo (v slučka, napríklad). Čítanie údajov nedegraduje kremík, robí iba písanie. Dáta z EEPROM dokážete čítať bez obáv!

Je dôležité si uvedomiť, že tento limit sa vzťahuje na každé miesto v pamäti. Váš Arduino môže mať v pamäti EEPROM k dispozícii 1 000 alebo viac pamäťových miest, takže ak píšete príliš často na jedno miesto, má to vplyv iba na toto miesto, a nie na žiadne iné. Neskôr budem diskutovať vyrovnávanie opotrebenia, čo môže znížiť opotrebovanie EEPROM rovnomernou distribúciou údajov - niečo také SSD disky Ako odhadnúť zostávajúcu životnosť vášho SSDVšetky disky SSD majú obmedzenú životnosť v dôsledku cyklov zápisu (táto životnosť je však oveľa dlhšia, ako by ste si mysleli). Takto môžete odhadnúť, ako blízko ste ku koncu. Čítaj viac použiť.

Na čo je to užitočné?

EEPROM je neuveriteľne užitočný pre vaše projekty Arduino. Keďže si pamätá údaje aj po odpojení napájania, môžete si uložiť stav Arduino. Možno by si mohol postaviť laserová veža Pew Pew! Ako sa stavia laserová veža s ArduinoNudíš sa? Mohla by tiež postaviť laserová veža. Čítaj viac ktorý si pamätá svoju pozíciu alebo koľko mu zostáva „munície“. Dalo by sa to použiť ovládajte svoje spotrebiče Riadiace zariadenia od Arduino: začiatok automatizácie domácnostiNaposledy som vám ukázal niekoľko spôsobov, ako ovládať reč vašich projektov Arduino prostredníctvom systému SiriProxy, OS X. vstavané hovoriteľné položky a niektoré skripty automatu alebo dokonca vyhradený hardvér na rozpoznávanie hlasu čip. Aj ... Čítaj viac a zaznamenajte si, koľkokrát bol váš prístroj aktivovaný.

EEPROM je najvhodnejší pre veci ako nastavenie alebo vysoké skóre. Ak chcete pravidelne písať komplexné údaje, možno zvážte ethernetový štít Doprajte svojmu projektu Arduino vlastný mini-webový server s ethernetovým štítomPred chvíľou som vám ukázal, ako nastaviť internetový riadiaci systém pre svoje Arduino - ale na udržanie internetového pripojenia musel zostať pripojený k počítaču cez USB ... Čítaj viac (so vstavaným slotom SD) alebo a Malinový koláč Raspberry Pi: Neoficiálny návodČi už ste aktuálnym vlastníkom Pi, ktorý sa chce dozvedieť viac, alebo potenciálnym vlastníkom tohto zariadenia s veľkosťou kreditnej karty, nejde o sprievodcu, ktorého by ste chceli vynechať. Čítaj viac .

EEPROM Close Up

Čítaj a píš

Teraz, keď je teória na ceste, pozrime sa, ako čítať a písať niektoré údaje! Najprv zahrňte knižnicu (prichádza s Arduino IDE):

#include 

Teraz napíšte nejaké údaje:

EEPROM.write (0, 12);

Toto zapíše číslo 12 do polohy EEPROM 0. Každý zápis trvá 3,3 milisekundy (pani, 1 000 ms = 1 sekunda). Všimnite si, ako nemôžete písať písmená (spáliť), sú povolené iba čísla od nuly do 255. Preto je EEPROM ideálny pre nastavenia alebo vysoké skóre, ale nie je to dobré pre mená alebo slová hráčov. Týmto spôsobom je možné ukladať text (každé písmeno abecedy by ste mohli zmapovať na číslo), budete však musieť mať viac miest v pamäti - jedno miesto pre každé písmeno.

Takto čítate tieto údaje:

EEPROM.read (0);

Nula je adresa, ktorú ste napísali predtým. Ak ste predtým nezadali adresu, vráti maximálnu hodnotu (255).

Existuje niekoľko o niečo užitočnejších metód. Povedzme, že chcete uložiť desatinné miesto alebo reťazec:

EEPROM.put (2, „12,67“);

Týmto sa údaje zapíšu do viacerých umiestnení - niečo, čo by bolo ľahké napísať sami, ale napriek tomu je to užitočné. Stále budete musieť sledovať, koľko miest to zapísalo, aby ste náhodou neprepísali svoje údaje! Musíte použiť get spôsob opätovného získania týchto údajov:

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

Hodnota z get sa uloží do float F variabilné. Všimnite si, ako sa to inicializuje 0.00f ako hodnota. F informuje kompilátora, že v tejto premennej možno budete chcieť uložiť veľké množstvo, takže počas kompilácie nastaví niektoré ďalšie konfigurácie.

Dokumentácia EEPROM na internete Webová stránka Arduino má oveľa viac príkladov.

Vyrovnávanie opotrebenia

Vyrovnávanie opotrebenia je technika používaná na zníženie opotrebenia a zvýšenie životnosti EEPROM. Ak pracujete iba na malom projekte, nemusíte sa obávať.

EEPROM Close Up

Najjednoduchšie na zachovanie života EEPROM je obmedziť vaše diela na konkrétne miesto. Môžete to urobiť tak, že si najprv prečítate adresu, a ak už existuje hodnota, ktorú chcete napísať, nie je potrebné ju znova zapisovať (pamätajte, čítanie údajov nepoškodí). Postupujte takto:

int safeWrite (int data, address) {if (EEPROM.read (address)! = data) {EEPROM.write (adresa, dáta); } }

Je to celkom jednoduchý kúsok kódu, funguje to však iba pre celé čísla! Namiesto toho, aby ste koleso znova vynašli, použite funkciu zabudovanú do knižnice Arduino EEPROM:

EEPROM.update (adresa, val);

Táto metóda má presne rovnaký podpis ako write metóda, hoci to môže drasticky znížiť počet potrebných zápisov!

Ak potrebujete napísať veľa údajov a máte obavy z opotrebovania kremíka, môžete sledovať, koľko zápisov robíte, hoci sa tým používa viac údajov. Tu je hrubá implementácia v systéme pseudocode:

adresa var = 0. var writeCount = 0 if (writeCount> 75 000) writeCount = 0 adresa + = 1 EEPROM.write (adresa, dáta)

Budete musieť uložiť adresu a writeCount do EEPROM (a writeCount bude potrebné rozdeliť medzi adresy). Vo väčšine prípadov táto úroveň ochrany nebude potrebná. Arduinos sú také lacné, takže vám môže byť jednoduchšie kúpiť si zálohu!

Teraz by ste mali vedieť dosť na to, aby ste vytvorili úžasné projekty. Ak niečo urobíte dobre, dajte nám vedieť! Rozpoznáte všetky zariadenia na obrázkoch? Zanechajte nám komentár nižšie!

Joe je absolventom informatiky na University of Lincoln vo Veľkej Británii. Je to profesionálny vývojár softvéru a keď nelieta bezpilotných lietadiel alebo píše hudbu, často ho nájdu pri fotografovaní alebo výrobe videa.