Kaip Saugoti Duomenis „Arduino“

Turinys:

Kaip Saugoti Duomenis „Arduino“
Kaip Saugoti Duomenis „Arduino“

Video: Kaip Saugoti Duomenis „Arduino“

Video: Kaip Saugoti Duomenis „Arduino“
Video: Storing Data on an Arduino 2024, Gegužė
Anonim

„Arduino“plokštėse yra kelių tipų atmintis. Pirma, tai yra statinė RAM (laisvosios kreipties atmintis), naudojama kintamiesiems saugoti vykdant programą. Antra, tai yra „flash“atmintis, kurioje saugomi jūsų parašyti eskizai. Trečia, tai EEPROM, kuris gali būti naudojamas visam laikui saugoti informaciją. Pirmojo tipo atmintis yra nepastovi, ji iš naujo paleidus „Arduino“praranda visą informaciją. Antrieji du atminties tipai saugo informaciją, kol ji bus perrašyta nauja, net ir išjungus maitinimą. Paskutinis atminties tipas - EEPROM - leidžia duomenis rašyti, saugoti ir skaityti pagal poreikį. Mes apsvarstysime šią atmintį dabar.

Duomenų saugojimas „EEPROM Arduino“
Duomenų saugojimas „EEPROM Arduino“

Būtinas

  • - Arduino;
  • - kompiuteris.

Nurodymai

1 žingsnis

EEPROM reiškia elektriniu būdu ištrinamą programuojamą tik skaitymo atmintį, t. elektra ištrinama tik skaitymo atmintis. Duomenys šioje atmintyje gali būti saugomi dešimtys metų po maitinimo išjungimo. Perrašymo ciklų skaičius siekia kelis milijonus kartų.

EEPROM atminties kiekis „Arduino“yra gana ribotas: plokštėms, pagrįstoms „ATmega328“mikrovaldikliu (pavyzdžiui, „Arduino UNO“ir „Nano“), atminties kiekis yra 1 KB, ATmega168 ir ATmega8 plokštėms - 512 baitų, ATmega2560 ir ATmega1280 - 4 KB.

2 žingsnis

Norėdami dirbti su „EEPROM“, skirta „Arduino“, buvo parašyta speciali biblioteka, kuri pagal numatytuosius nustatymus yra įtraukta į „Arduino IDE“. Bibliotekoje yra šios funkcijos.

skaityti (adresas) - nuskaito 1 baitą iš EEPROM; adresas - adresas, iš kurio duomenys nuskaitomi (langelis prasideda nuo 0);

rašyti (adresas, reikšmė) - įrašo vertės vertę (1 baitas, skaičius nuo 0 iki 255) į atmintį adreso adresu;

atnaujinimas (adresas, reikšmė) - pakeičia vertę adresu, jei jos senas turinys skiriasi nuo naujo;

gauti (adresas, duomenys) - nuskaito nurodyto tipo duomenis iš atminties adresu;

įdėti (adresas, duomenys) - įrašo nurodyto tipo duomenis į atmintį adresu;

EEPROM [adresas] - leidžia naudoti "EEPROM" identifikatorių kaip masyvą duomenims rašyti ir skaityti iš atminties.

Norėdami naudoti biblioteką eskize, įtraukiame ją į #include EEPROM.h direktyvą.

3 žingsnis

Parašykime du sveikus skaičius į EEPROM, tada perskaitykime juos iš EEPROM ir išvesime į nuoseklųjį prievadą.

Su skaičiais nuo 0 iki 255 problemų nekyla, jie užima tik 1 baitą atminties ir įrašomi į norimą vietą naudojant funkciją EEPROM.write ().

Jei skaičius yra didesnis nei 255, tada naudojant operatorius highByte () ir lowByte () jis turi būti padalytas iš baitų ir kiekvienas baitas turi būti įrašytas į savo langelį. Didžiausias skaičius šiuo atveju yra 65536 (arba 2 ^ 16).

Pažvelkite, serijos prievado monitorius 0 langelyje paprasčiausiai rodo skaičių, mažesnį nei 255. 1 ir 2 langeliuose saugomas didelis skaičius 789. Šiuo atveju 1 langelyje saugomas perpildymo faktorius 3, o 2 langelyje - trūkstamas skaičius 21 (ty 789 = 3 * 256 + 21). Norėdami surinkti didelį skaičių, suskirstytą į baitus, yra žodis () funkcija: int val = žodis (hi, low), kur hi ir low yra aukšto ir žemo baitų vertės.

Visose kitose langeliuose, kurių niekada neparašėme, skaičiai saugomi 255.

Sveikųjų skaičių rašymas į „EEPROM Arduino“
Sveikųjų skaičių rašymas į „EEPROM Arduino“

4 žingsnis

Norėdami rašyti slankiojo kablelio skaičius ir eilutes, naudokite metodą EEPROM.put (), o skaityti - EEPROM.get ().

Setup () procedūroje pirmiausia užrašome slankiojo kablelio skaičių f. Tada mes judame pagal atminties ląstelių, kurias užima plūdės tipas, skaičių ir parašome simbolių eilutę, kurios talpa yra 20 ląstelių.

Procedūroje „loop ()“mes perskaitysime visas atminties ląsteles ir pirmiausia bandysime jas iššifruoti kaip „float“, tada - „char“, ir rezultatą išvesti į nuoseklųjį prievadą.

Matote, kad vertė nuo 0 iki 3 langelių buvo teisingai apibrėžta kaip slankiojo kablelio skaičius, o pradedant nuo 4-osios - kaip eilutė.

Gautos vertės ovf (perpildymas) ir nan (ne skaičius) rodo, kad skaičiaus negalima teisingai konvertuoti į slankiojo kablelio skaičių. Jei tiksliai žinote, kokio tipo duomenis atminties ląstelės užima, tada neturėsite jokių problemų.

Slankiojo kablelio skaičių ir eilučių rašymas „EEPROM Arduino“
Slankiojo kablelio skaičių ir eilučių rašymas „EEPROM Arduino“

5 žingsnis

Labai patogi funkcija yra nurodyti atminties ląsteles kaip EEPROM masyvo elementus. Šiame eskize setup () procedūroje pirmiausia įrašysime duomenis į pirmuosius 4 baitus, o ciklo () procedūroje kiekvieną minutę mes perskaitysime duomenis iš visų langelių ir išvesime juos į nuoseklųjį prievadą.

Rekomenduojamas: