reklama
Věděli jste, že Arduino může ukládat data, když je vypnutá? Ne skica uložená v paměti Flash. Mluvím o proměnných datech v EEPROM. Připojte se ke mně, když vám ukážu, jak číst a psát, a co to může udělat pro vaše projekty.
Pokud jste pro Arduino nováčkem, nezapomeňte se podívat na naše průvodce pro začátečníky Začínáme s Arduino: Příručka pro začátečníkyArduino je platforma s otevřeným zdrojovým kódem elektroniky založená na flexibilním, snadno použitelném hardwaru a softwaru. Je určen pro umělce, designéry, fandy a kohokoli, kdo má zájem o vytváření interaktivních objektů nebo prostředí. Přečtěte si více .
Co je EEPROM?
EEPROM znamená elektricky mazatelná programovatelná paměť jen pro čtení. Je to typ trvalé paměti. Nebojte se, pokud nerozumíte, co to znamená. Jednoduše ukládá data i při odpojeném napájení (na rozdíl od RAM Rychlý a špinavý průvodce RAM: Co potřebujete vědětRAM je klíčovou součástí každého počítače, ale může být matoucí. Rozdělujeme to podle snadno pochopitelných podmínek, kterým rozumíte. Přečtěte si více
, který potřebuje elektřinu k uchování jakýchkoli údajů).EEPROM je zabudován do nesčetných procesorů, jako je pole programovatelné hradlové pole (FPGA) používané v Matrix Creator Matrix Creator pro Raspberry Pi ReviewMatrix Creator je švýcarský armádní nůž pro váš Pi s 15 senzory, sadou komunikačních protokolů, prstenem RGB LED, mikrofonním polem a dalšími! Přečtěte si více Pi HAT. Všechny Arduiny mají k dispozici EEPROM, ale kapacita se liší v závislosti na modelu. Nezapomeňte se podívat na naše průvodce nákupem Průvodce nákupem Arduina: Kterou desku byste měli získat?Je tam tolik různých druhů desek Arduino, bylo by vám odpuštěno, že jste zmatení. Které byste si měli koupit pro svůj projekt? Pomozte nám s tímto průvodcem nákupem Arduino! Přečtěte si více pro více informací o každé desce.
Jak to funguje?
EEPROM je elektricky vymazán a programován pomocí Tunel Fowler-Nordheim. Abyste je mohli používat, nepotřebujete znát technické podrobnosti. Základní předpoklad je, že elektřina se používá ke změně binárních dat (co je binární Co je binární? [Vysvětlená technologie]Vzhledem k tomu, že binární je pro existenci počítačů naprosto zásadní, zdá se zvláštní, že jsme se tímto tématem nikdy nezabývali - takže dnes bych si myslel, že dám krátký přehled toho, co binární ... Přečtěte si více ). Lze jej číst, mazat a přepisovat elektronicky.
Naštěstí Arduino Language usnadňuje výměnu dat, a to vše bez toho, aby bylo nutné vysokoškolské vzdělání v oboru informatiky.
Délka života
I když je snadné používat EEPROM v Arduinu, má omezenou životnost. EEPROM je určen pro zpracování 100 000 cyklů čtení / mazání. To znamená, že můžete zapsat a poté vymazat / znovu zapsat data 100 000krát, než bude EEPROM nestabilní. V realitě, Atmel (výrobci polovodičů Arduino „Chip“) mohou zvládat vyšší nebo nižší počet cyklů v závislosti na tolerancích každého procesoru.
Jakmile je místo již mnohokrát napsáno a vymazáno, může začít být nespolehlivé. Nemusí vrátit správná data nebo vrátit hodnotu ze sousedního bitu.
To může znít jako spousta zápisů, ale může být snadné dosáhnout tohoto limitu, pokud programujete čtení a psaní programově (v smyčka, například). Čtení dat nedegraduje křemík, pouze psaní. Můžete číst data z EEPROM, jak se vám líbí, beze strachu!
Je důležité si uvědomit, že tento limit platí pro každé umístění paměti. Vaše Arduino může mít v paměti EEPROM k dispozici 1 000 nebo více paměťových míst, takže pokud do jednoho místa píšete příliš často, ovlivní se pouze toto umístění, a nikoliv jiné. Později budu diskutovat nivelace, což může snížit opotřebení EEPROM rovnoměrnou distribucí dat - něco takového SSD Jak odhadnout zbývající životnost vašeho SSDVšechny disky SSD mají omezenou životnost kvůli cyklům zápisu (ačkoli tato životnost je mnohem delší, než si myslíte). Zde je návod, jak můžete odhadnout, jak blízko jste ke konci. Přečtěte si více využít.
Na co je to užitečné?
EEPROM je neuvěřitelně užitečné pro vaše projekty Arduino. Protože si pamatuje data i po odpojení napájení, můžete uložit stav Arduino. Možná bys mohl postavit laserová věžička Pew Pew! Jak postavit laserovou věžičku s ArduinoNudíš se? Mohu také postavit laserovou věžičku. Přečtěte si více který si pamatuje jeho pozici nebo kolik zbývá „munice“. Dalo by se to použít ovládejte své spotřebiče Řídicí zařízení od Arduino: Začátek domácí automatizaceNaposledy jsem vám ukázal několik způsobů, jak ovládat řeč vašich Arduino projektů prostřednictvím SiriProxy, OS X vestavěné hlasité položky a některé skripty automatu nebo dokonce vyhrazený hardware pro rozpoznávání hlasu čip. Já ... Přečtěte si více a zaznamenejte, kolikrát byl váš přístroj aktivován.
EEPROM se nejlépe hodí pro věci, jako je nastavení nebo vysoké skóre. Pokud chcete pravidelně psát komplexní data, možná zvažte ethernetový štít Dopřejte svému projektu Arduino vlastní mini-webový server s ethernetovým štítemPřed chvílí jsem vám ukázal, jak nastavit internetový řídicí systém pro Arduino - ale pro udržení internetového připojení musel zůstat připojen k počítači přes USB ... Přečtěte si více (s vestavěným slotem SD) nebo Raspberry Pi Raspberry Pi: Neoficiální výukaAť už jste současným majitelem Pi, který se chce dozvědět více, nebo potenciálním vlastníkem tohoto zařízení s velikostí kreditní karty, nejedná se o průvodce, kterého byste rádi nechali ujít. Přečtěte si více .
Číst a psát
Teď, když je teorie na cestě, pojďme se podívat, jak číst a psát některá data! Nejprve připojte knihovnu (přichází s Arduino IDE):
#zahrnout
Nyní napište některá data:
EEPROM.write (0, 12);
Toto zapíše číslo 12 do umístění EEPROM 0. Každý zápis trvá 3,3 milisekundy (slečna, 1 000 ms = 1 sekunda). Všimněte si, jak nemůžete psát písmena (char), jsou povolena pouze čísla od nuly do 255. To je důvod, proč je EEPROM ideální pro nastavení nebo vysoké skóre, ale není to dobré pro jména nebo slova hráče. Pomocí této metody je možné ukládat text (každé písmeno abecedy můžete namapovat na číslo), budete však muset mít více paměťových míst - jedno místo pro každé písmeno.
Takto čtete tato data:
EEPROM.read (0);
Nula je adresa, na kterou jste dříve psali. Pokud jste dosud nezadali adresu, vrátí maximální hodnotu (255).
K dispozici jsou některé o něco užitečnější metody. Řekněme, že chcete uložit desetinné místo nebo řetězec:
EEPROM.put (2, "12,67");
Tím se data zapíší na více míst - něco, co by bylo snadné napsat, ale přesto je to užitečné. Stále budete muset sledovat, na kolik míst to zapsalo, abyste své údaje náhodně nepřepsali! Musíte použít dostat metoda pro opětovné načtení těchto dat:
float f = 0,00f; EEPROM.get (2, f);
Hodnota z get je uložena do float F proměnná. Všimněte si, jak je to inicializováno 0,00f jako hodnota. F umožňuje kompilátoru vědět, že v této proměnné budete chtít uložit velké číslo, takže během kompilace nastaví některé další konfigurace.
Dokumentace EEPROM na Web Arduino má mnohem více příkladů.
Noste nivelaci
Vyrovnání opotřebení je technika používaná ke snížení opotřebení a ke zvýšení životnosti EEPROM. Pokud pracujete pouze na malém projektu, nemusíte se o to starat.
Nejjednodušší věc, kterou můžete zachovat život EEPROM, je omezit vaše zápisy na konkrétní místo. Můžete to udělat tak, že nejprve přečtete adresu, a pokud již existuje hodnota, kterou chcete napsat, není třeba ji znovu psát (pamatujte, čtení dat nepoškodí). Postupujte takto:
int safeWrite (int data, adresa) {if (EEPROM.read (address)! = data) {EEPROM.write (adresa, data); } }
To je docela jednoduchý kód, ale funguje to pouze pro celá čísla! Namísto znovu vynalézat kolo použijte funkci zabudovanou do knihovny Arduino EEPROM:
EEPROM.update (adresa, val);
Tato metoda má přesně stejný podpis jako napsat metoda, ačkoli to může drasticky snížit počet potřebných zápisů!
Pokud potřebujete napsat hodně dat a máte obavy z opotřebení křemíku, můžete sledovat, kolik zápisů děláte, i když to používá více dat. Zde je hrubá implementace pseudo kód:
var adresa = 0. var writeCount = 0 if (writeCount> 75 000) writeCount = 0 adresa + = 1 EEPROM.write (adresa, data)
Budete muset uložit adresu a writeCount do EEPROM (a writeCount bude nutné rozdělit mezi adresy). Většinu času nebude tato úroveň ochrany nutná. Arduiny jsou tak levné také, takže pro vás bude snadnější koupit zálohu!
Nyní byste měli vědět dost, abyste vytvořili nějaké úžasné projekty. Dejte nám vědět, pokud uděláte něco v pohodě! Dokážete rozpoznat všechna zařízení na obrázcích? Zanechte nám komentář níže!
Joe je absolventem informatiky na University of Lincoln ve Velké Británii. Je to profesionální softwarový vývojář, a když nelétá dronů nebo píše hudbu, často ho najde, když fotografuje nebo produkuje videa.