реклама

Знаете ли, че Arduino може да съхранява данни, когато е изключен? Не е скицата, съхранявана във флаш памет. Говоря за променливи данни в EEPROM. Присъединете се към мен, докато ви покажа как да четете и да му пишете и какво може да направи за вашите проекти.

Ако сте нов в Arduino, не забравяйте да проверите нашето наръчник за начинаещи Първи стъпки с Arduino: Ръководство за начинаещиArduino е платформа за създаване на прототипи за електроника с отворен код, базирана на гъвкав, лесен за използване хардуер и софтуер. Той е предназначен за художници, дизайнери, любители и всички, които се интересуват от създаването на интерактивни обекти или среди. Прочетете още .

Какво е EEPROM?

EEPROM означава електрически изтриваема програмируема памет само за четене. Това е вид енергонезависима памет. Не се притеснявайте, ако не разбирате какво означава това. Той просто съхранява данни, дори при свалена мощност (за разлика от тях RAM Бързо и мръсно ръководство за RAM: Какво трябва да знаетеRAM е основен компонент на всеки компютър, но може да бъде объркващ. Разбиваме го по лесни за разбиране термини, които ще разберете.

instagram viewer
Прочетете още , която се нуждае от електричество, за да запази всякакви данни).

EEPROM пример заснема

EEPROM е вграден в безброй процесори, като например полево програмируемият масив на портата (FPGA), използван в Създател на матрицата Matrix Creator за Raspberry Pi прегледMatrix Creator е швейцарски армейски нож за вашия Pi, с 15 сензора, набор от комуникационни протоколи, пръстен от RGB светодиоди, микрофонна решетка и други! Прочетете още Pi HAT. Всички Arduinos разполагат с EEPROM, но капацитетът варира в зависимост от модела. Уверете се, че погледнете нашата ръководство за купуване Ръководство за купуване на Arduino: Кой съвет трябва да получите?Има толкова много различни видове Arduino дъски, че ще ви бъде простено, че сте объркани. Кой трябва да закупите за вашия проект? Нека да помогнем с това ръководство за купуване на Arduino! Прочетете още за повече подробности на всяка дъска.

Как работи?

EEPROM се изтрива и програмира електрически с помощта Тунелиране на Фаулер-Нордхайм. Не е необходимо да знаете техническите подробности, за да можете да ги използвате. Основната предпоставка е, че електричеството се използва за промяна на двоичните данни (какво е двоично Какво е двоичен? [Обяснена технология]Като се има предвид, че бинарният файл е толкова основен за съществуването на компютрите, изглежда странно, че никога досега не сме се занимавали с темата - затова днес си мислех, че ще дам кратък преглед на това, което бинарно ... Прочетете още ). Може да се чете, изтрива и презаписва по електронен път.

За щастие Ардуинов език улеснява смяната на данни, без да е необходима степен по компютърни науки.

EEPROM отблизо

Продължителност на живота

Въпреки че е лесно да използвате EEPROM в Arduino, той има ограничен живот. EEPROM е определен за работа с 100 000 цикъла на четене / изтриване. Това означава, че можете да напишете и след това да изтриете / повторно запишете данни 100 000 пъти, преди EEPROM да стане нестабилен. В действителност, Atmel (производителите на Arduino “Chip”) полупроводници могат да работят с по-голям или по-малък брой цикли, в зависимост от допустимите отклонения на всеки процесор.

EEPROM отблизо

След като дадено местоположение бъде написано и изтрито твърде много пъти, то може да започне да става ненадеждно. Възможно е да не върне правилните данни или да върне стойността от съседен бит.

Това може да звучи като много записи, но може да бъде лесно да се достигне тази граница, ако четете и пишете програмно (в a контур, например). Данните за четене не влошават силиция, само писането прави. Можете да четете данни от EEPROM колкото искате, без страх!

Важно е да се отбележи, че това ограничение важи за всяко място в паметта. Вашият Arduino може да има 1000 или повече места в паметта на разположение в EEPROM, така че ако пишете прекалено много пъти на едно място, това е засегнато само това местоположение, а не никое от другите. По-късно ще обсъждам изравняване на износване, което може да намали износването на EEPROM, като разпределя данните равномерно - нещо такова SSD дискове Как да прецените остатъчния живот на вашия SSDВсички SSD дискове имат ограничен срок на експлоатация поради цикли на запис (макар че този живот е много по-дълъг, отколкото може да си мислите). Ето как можете да прецените колко сте близо до края. Прочетете още да се възползват от.

За какво е полезно?

EEPROM е невероятно полезен за вашите проекти на Arduino. Тъй като запомня данни, дори когато захранването е свалено, можете да съхранявате състоянието на Arduino. Може би бихте могли да изградите лазерна кула Pew Pew! Как да изградим лазерна кула с ардуиноСкучно ли ти е? Може също така да се изгради лазерна кула. Прочетете още който си спомня позицията си или колко „амуниции“ остава. Можете да го използвате контролирайте вашите уреди Управляващи уреди от Arduino: Стартът на домашната автоматизацияМиналия път ви показах няколко начина да накарате вашите проекти за Arduino да се контролират чрез SiriProxy, OS X's вградени говорими елементи и някои скриптове на Автоматизатор или дори специален хардуер за разпознаване на глас чип. Аз ... Прочетете още и регистрирайте колко пъти е активиран вашият уред.

EEPROM е най-подходящ за неща като настройки или високи резултати. Ако искате редовно да пишете сложни данни, може би помислете за ethernet щит Дайте на своя проект Arduino собствения си мини-уеб сървър, с Ethernet щитПреди малко ви показах как да настроите интернет система за контрол на вашия Arduino - но тя трябваше да остане свързана с компютър чрез USB, за да поддържа интернет връзката ... Прочетете още (с вграден SD слот) или a Raspberry Pi Raspberry Pi: Неофициалният урокНезависимо дали сте настоящ собственик на Pi, който иска да научи повече, или потенциален собственик на това устройство с размер на кредитна карта, това не е ръководство, което искате да пропуснете. Прочетете още .

EEPROM отблизо

Чети и пиши

Сега, когато теорията е изходна, нека разгледаме как да четем и запишем някои данни! Първо, включете библиотеката (това идва с Arduino IDE):

#include 

Сега напишете някои данни:

EEPROM.write (0, 12);

Това пише числото 12 до EEPROM място 0. Всяко запис отнема 3.3 милисекунди (Госпожица, 1000ms = 1 секунда). Забележете как не можете да пишете писма (овъглявам), разрешени са само числата от нула до 255. Ето защо EEPROM е идеален за настройки или високи резултати, но не е толкова добър за имена или думи на играчите. Възможно е да съхранявате текст с помощта на този метод (бихте могли да картографирате всяка буква от азбуката в число), но ще трябва да имате няколко места в паметта - по едно местоположение за всяка буква.

Ето как четете тези данни:

EEPROM.read (0);

Нулата е адресът, на който сте писали преди. Ако не сте писали до адрес преди, той ще върне максималната стойност (255).

Има няколко малко по-полезни методи. Кажете, че искате да запазите десетична запетая или низ:

EEPROM.put (2, "12.67");

Това записва данните на множество места - нещо, което би било лесно да напишете сами, но не по-удобно. Все още ще трябва да следите до колко места е написано това, за да не презапишете случайно данните си! Трябва да използвате GET метод за извличане на тези данни отново:

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

Стойността от get се съхранява в float е променлива. Забележете как се инициализира това 0.00f като стойност. Най- е позволява на компилатора да знае, че може да искате да запазите голям брой в тази променлива, така че той настройва някои допълнителни конфигурации по време на компилация.

Най- EEPROM документация на Уебсайт на Arduino има много повече примери.

Носете изравняване

Изравняване на износването е техника, използвана за намаляване на износването и увеличаване на живота на EEPROM. Ако работите само по малък проект, може да не е необходимо да се притеснявате за това.

EEPROM отблизо

Най-простото нещо, което можете да направите, за да запазите EEPROM живота, е да ограничите вашите записи до определено място. Можете да направите това, като първо прочетете адреса и ако стойността, която искате да напишете, вече е налице, няма нужда да го пишете отново (не забравяйте, че четенето на данни няма никаква вреда). Ето как бихте направили това:

int safeWrite (int данни, адрес) {if (EEPROM.read (адрес)! = data) {EEPROM.write (адрес, данни); } }

Това е доста прост бит код, но той работи само за цели числа! Вместо да изобретявате отново колелото, използвайте функцията, вградена в библиотеката EEPROM на Arduino:

Актуализация на EEPROM (адрес, val);

Този метод има точно същия подпис като пиши метод, въпреки че може драстично да намали броя на необходимите записи!

Ако трябва да напишете много данни и сте загрижени за износването на силикона, можете да следите колко записи пишете, въпреки че това използва повече данни. Ето груба реализация в Псевдокод:

var адрес = 0. var writeCount = 0, ако (writeCount> 75 000) writeCount = 0 адрес + = 1 EEPROM.write (адрес, данни)

Ще трябва да съхранявате адрес и writeCount в EEPROM (и WriteCount ще трябва да бъде разделен на адресни местоположения). През повечето време това ниво на защита няма да е необходимо. Arduinos също са толкова евтини, така че може да ви е по-лесно да закупите резервно копие!

Вече трябва да знаете достатъчно, за да направите няколко страхотни проекта. Кажете ни, ако направите нещо готино! Можете ли да разпознаете всички устройства на снимките? Оставете ни коментар по-долу!

Джо е завършил компютърни науки от университета в Линкълн, Великобритания. Той е професионален разработчик на софтуер и когато не лети дронове или пише музика, често може да бъде намерен да прави снимки или да прави видео.