Как да съхранявате данни в Arduino

Съдържание:

Как да съхранявате данни в Arduino
Как да съхранявате данни в Arduino

Видео: Как да съхранявате данни в Arduino

Видео: Как да съхранявате данни в Arduino
Видео: Ардуино: симулятор делаем первые шаги 2024, Може
Anonim

Платките Arduino имат няколко вида памет. Първо, това е статична RAM (памет с произволен достъп), която се използва за съхраняване на променливи по време на изпълнение на програмата. На второ място, флаш паметта съхранява скиците, които сте написали. И трето, това е EEPROM, който може да се използва за постоянно съхраняване на информация. Първият тип памет е нестабилна, тя губи цялата информация след рестартиране на Arduino. Вторите два типа памет съхраняват информация, докато тя бъде заменена с нова, дори и след изключване на захранването. Последният тип памет - EEPROM - позволява да се записват, съхраняват и четат данни при необходимост. Ще разгледаме този спомен сега.

Съхраняване на данни в EEPROM Arduino
Съхраняване на данни в EEPROM Arduino

Необходимо

  • - Arduino;
  • - компютър.

Инструкции

Етап 1

EEPROM означава електрически изтриваема програмируема памет само за четене, т.е. електрически изтриваема памет само за четене. Данните в тази памет могат да се съхраняват десетки години след изключване на захранването. Броят на циклите на пренаписване е от порядъка на няколко милиона пъти.

Количеството EEPROM памет в Arduino е доста ограничено: за платки, базирани на микроконтролера ATmega328 (например Arduino UNO и Nano), количеството памет е 1 KB, за платките ATmega168 и ATmega8 - 512 байта, за ATmega2560 и ATmega1280 - 4 KB.

Стъпка 2

За работа с EEPROM за Arduino е написана специална библиотека, която по подразбиране е включена в IDE на Arduino. Библиотеката съдържа следните функции.

четене (адрес) - чете 1 байт от EEPROM; адрес - адресът, от който се четат данните (клетка, започваща от 0);

запис (адрес, стойност) - записва стойността на стойността (1 байт, число от 0 до 255) в паметта на адресния адрес;

актуализация (адрес, стойност) - замества стойността по адрес, ако старото й съдържание се различава от новото;

get (адрес, данни) - чете данни от посочения тип от паметта на адрес;

put (адрес, данни) - записва данни от посочения тип в паметта на адрес;

EEPROM [адрес] - позволява ви да използвате идентификатора „EEPROM“като масив за записване на данни и четене от паметта.

За да използваме библиотеката в скицата, ние я включваме с директивата #include EEPROM.h.

Стъпка 3

Нека напишем две цели числа в EEPROM и след това да ги прочетем от EEPROM и да ги изведем към серийния порт.

Няма проблеми с числата от 0 до 255, те заемат само 1 байт памет и се записват на желаното място с помощта на функцията EEPROM.write ().

Ако числото е по-голямо от 255, тогава с помощта на операторите highByte () и lowByte () то трябва да бъде разделено на байтове и всеки байт трябва да бъде записан в собствената си клетка. Максималният брой в този случай е 65536 (или 2 ^ 16).

Вижте, мониторът на серийния порт в клетка 0 просто показва число по-малко от 255. В клетки 1 и 2 се съхранява голям брой 789. В този случай клетка 1 съхранява фактор за препълване 3, а клетка 2 съхранява липсващия номер 21 (т.е. 789 = 3 * 256 + 21). За да сглобите повторно голям брой, анализиран на байтове, има функцията word (): int val = дума (hi, low), където hi и low са стойностите на високия и ниския байт.

Във всички останали клетки, които никога не сме записвали, се съхраняват числа 255.

Записване на цели числа в EEPROM Arduino
Записване на цели числа в EEPROM Arduino

Стъпка 4

За да напишете числа и низове с плаваща запетая, използвайте метода EEPROM.put (), а за четене - EEPROM.get ().

В процедурата за настройка () първо записваме число с плаваща запетая f. След това се придвижваме по броя на клетките с памет, които заема типът float, и записваме низ от char с капацитет 20 клетки.

В процедурата loop () ще прочетем всички клетки на паметта и ще се опитаме да ги дешифрираме първо като тип "float", а след това като тип "char" и ще изведем резултата към серийния порт.

Можете да видите, че стойността в клетки от 0 до 3 е била правилно дефинирана като число с плаваща запетая и като се започне от 4-та - като низ.

Получените стойности ovf (препълване) и nan (не число) показват, че числото не може да бъде правилно преобразувано в число с плаваща запетая. Ако знаете точно какъв тип данни заемат клетките на паметта, тогава няма да имате проблеми.

Записване на числа и низове с плаваща запетая в EEPROM Arduino
Записване на числа и низове с плаваща запетая в EEPROM Arduino

Стъпка 5

Много удобна функция е да се отнасят клетките на паметта като елементи на EEPROM масив. В тази скица, в процедурата setup (), първо ще запишем данните в първите 4 байта, а в процедурата loop () всяка минута ще четем данни от всички клетки и ще ги извеждаме към серийния порт.

Препоръчано: