Kuidas Andmeid Arduinos Salvestada

Sisukord:

Kuidas Andmeid Arduinos Salvestada
Kuidas Andmeid Arduinos Salvestada

Video: Kuidas Andmeid Arduinos Salvestada

Video: Kuidas Andmeid Arduinos Salvestada
Video: Лучший симулятор Arduino UnoArduSim V2.6. Первая серия. Arduino для начинающих. Подключение моторов. 2024, Mai
Anonim

Arduino plaatidel on mitut tüüpi mälu. Esiteks on see staatiline RAM (muutmälu), mida kasutatakse muutujate salvestamiseks programmi käivitamisel. Teiseks, see on välkmälu, mis salvestab teie kirjutatud visandid. Ja kolmandaks, see on EEPROM, mida saab kasutada teabe püsivaks salvestamiseks. Esimest tüüpi mälu on kõikuv, see kaotab pärast Arduino taaskäivitamist kogu teabe. Kaks teist tüüpi mälu salvestavad teavet, kuni see kirjutatakse uuega üle ka pärast toite väljalülitamist. Viimane tüüpi mälu - EEPROM - võimaldab andmeid vastavalt vajadusele kirjutada, salvestada ja lugeda. Seda mälestust kaalume nüüd.

Andmete säilitamine EEPROM Arduinos
Andmete säilitamine EEPROM Arduinos

Vajalik

  • - Arduino;
  • - arvuti.

Juhised

Samm 1

EEPROM tähistab elektriliselt kustutatavaid programmeeritavaid kirjutuskaitstud mälusid, s.t. elektriliselt kustutatav kirjutusmälu. Selles mälus olevaid andmeid saab säilitada kümneid aastaid pärast toite väljalülitamist. Ümberkirjutamistsüklite arv on suurusjärgus mitu miljonit korda.

Arduinos on EEPROM-mälu maht üsna piiratud: ATmega328 mikrokontrolleril (näiteks Arduino UNO ja Nano) põhinevate plaatide puhul on mälumaht 1 KB, ATmega168 ja ATmega8 plaatide puhul - 512 baiti, ATmega2560 ja ATmega1280 - 4 KB.

2. samm

Arduino jaoks mõeldud EEPROM-iga töötamiseks on kirjutatud spetsiaalne teek, mis on vaikimisi lisatud Arduino IDE-sse. Raamatukogu sisaldab järgmisi funktsioone.

loe (aadress) - loeb 1 baiti EEPROMilt; aadress - aadress, kust andmeid loetakse (lahter algab 0-st);

kirjuta (aadress, väärtus) - kirjutab väärtuse väärtuse (1 bait, arv vahemikus 0 kuni 255) aadressi mällu;

uuendus (aadress, väärtus) - asendab väärtuse aadressil, kui selle vana sisu erineb uuest;

saada (aadress, andmed) - loeb aadressilt mälust määratud tüüpi andmeid;

put (aadress, andmed) - kirjutab määratud tüüpi andmed aadressil mällu;

EEPROM [aadress] - võimaldab kasutada massiivina identifikaatorit "EEPROM" andmete kirjutamiseks ja mälust lugemiseks.

Teegi kasutamiseks visandis lisame selle #include EEPROM.h direktiiviga.

3. samm

Kirjutame kaks täisarvu EEPROM-i ja loeme need siis EEPROM-ist ja väljastame jadaporti.

Arvudega 0–255 pole probleeme, need hõivavad vaid 1 baiti mälu ja kirjutatakse funktsiooni EEPROM.write () abil soovitud kohta.

Kui arv on suurem kui 255, tuleb operaatorite highByte () ja lowByte () abil jagada baitidega ning kirjutada iga bait oma lahtrisse. Maksimaalne arv on sel juhul 65536 (või 2 ^ 16).

Vaadake, lahtris 0 olev jadapordimonitor kuvab lihtsalt numbri, mis on väiksem kui 255. Lahtrites 1 ja 2 on salvestatud suur arv 789. Sel juhul salvestab lahter 1 ülevooluteguri 3 ja lahter 2 puuduva numbri 21 (st 789 = 3 * 256 + 21). Suure hulga baitidesse parsitud kogumiseks on sõna () function: int val = sõna (hi, low), kus hi ja low on kõrge ja madala baidi väärtused.

Kõigis muudes lahtrites, mida me pole kunagi üles kirjutanud, on arvud 255 salvestatud.

Täisarvude kirjutamine EEPROM Arduinole
Täisarvude kirjutamine EEPROM Arduinole

4. samm

Ujuvnumbrite ja stringide kirjutamiseks kasutage meetodit EEPROM.put () ja lugemiseks kasutage EEPROM.get ().

Protseduuris setup () kirjutame kõigepealt ujukoma numbri f. Seejärel liigume ujukitüübi hõivatud mälurakkude arvu järgi ja kirjutame 20-lahtrise mahuga söekirja.

Protseduuris loop () loeme kõik mälurakud ja proovime need kõigepealt dekodeerida "float" ja seejärel "char" tüüpi ning väljastame tulemuse jadaporti.

Näete, et lahtrite 0 kuni 3 väärtus oli õigesti määratletud ujukoma numbrina ja alates 4. - stringina.

Saadud väärtused ovf (ülevool) ja nan (mitte arv) näitavad, et arvu ei saa õigesti teisendada ujukoma arvuks. Kui teate täpselt, millist tüüpi andmeid millised mälurakud hõivavad, siis pole teil probleeme.

Ujuvnumbrite ja stringide kirjutamine EEPROM Arduinole
Ujuvnumbrite ja stringide kirjutamine EEPROM Arduinole

5. samm

Väga mugav funktsioon on viidata mälurakkudele kui EEPROM-massiivi elementidele. Selles visandis kirjutame setup () protseduuris kõigepealt andmed esimesse 4 baiti ja loop () protseduuris loeme igal minutil kõigi lahtrite andmed ja väljastame need jadaporti.

Soovitan: