Kuinka Tallentaa Tietoja Arduinoon

Sisällysluettelo:

Kuinka Tallentaa Tietoja Arduinoon
Kuinka Tallentaa Tietoja Arduinoon

Video: Kuinka Tallentaa Tietoja Arduinoon

Video: Kuinka Tallentaa Tietoja Arduinoon
Video: Kuinka Korjata Pään ja Olkapäiden Asentoa (3 LIIKETTÄ!) 2024, Marraskuu
Anonim

Arduino-levyillä on useita muistityyppejä. Ensinnäkin se on staattinen RAM (random access memory), jota käytetään muuttujien tallentamiseen ohjelman suorituksen aikana. Toiseksi flash-muisti tallentaa kirjoittamasi luonnokset. Ja kolmanneksi, se on EEPROM, jota voidaan käyttää tietojen pysyvään tallentamiseen. Ensimmäisen tyyppinen muisti on epävakaa, se menettää kaikki tiedot Arduinon uudelleenkäynnistyksen jälkeen. Kahden toisen tyyppinen muisti tallentaa tietoja, kunnes ne korvataan uudella, vaikka virta on katkaistu. Viimeinen muistityyppi - EEPROM - mahdollistaa tietojen kirjoittamisen, tallentamisen ja lukemisen tarpeen mukaan. Harkitsemme tätä muistia nyt.

Tietojen tallentaminen EEPROM Arduinossa
Tietojen tallentaminen EEPROM Arduinossa

Tarpeellinen

  • - Arduino;
  • - tietokone.

Ohjeet

Vaihe 1

EEPROM tarkoittaa sähköisesti pyyhittävää ohjelmoitavaa vain luku -muistia, ts. sähköisesti pyyhittävä vain luku -muisti. Tämän muistin tietoja voidaan tallentaa kymmeniä vuosia virran katkaisun jälkeen. Uudelleen kirjoittamissyklien lukumäärä on useita miljoonia kertoja.

Arduinon EEPROM-muistin määrä on melko rajallinen: ATmega328-mikrokontrolleriin (esimerkiksi Arduino UNO ja Nano) perustuville levyille muistin määrä on 1 kt, ATmega168- ja ATmega8-levyille - 512 tavua, ATmega2560- ja ATmega1280-muisteille - 4 kt.

Vaihe 2

Työskentelemään EEPROM for Arduino -ohjelmalla on kirjoitettu erityinen kirjasto, joka sisältyy oletusarvoisesti Arduino IDE: hen. Kirjasto sisältää seuraavat ominaisuudet.

lue (osoite) - lukee yhden tavun EEPROM: lta; osoite - osoite, josta tiedot luetaan (solu alkaen 0);

kirjoita (osoite, arvo) - kirjoittaa arvon arvon (1 tavu, numero välillä 0 - 255) osoitteen muistiin;

päivitys (osoite, arvo) - korvaa osoitteen arvon, jos sen vanha sisältö eroaa uudesta;

get (osoite, data) - lukee tietyn tyyppistä tietoa muistista osoitteessa;

put (osoite, data) - kirjoittaa tietyn tyyppistä tietoa muistiin osoitteessa;

EEPROM [osoite] - antaa sinun käyttää "EEPROM" -tunnistetta matriisina tietojen kirjoittamiseen ja lukemiseen muistista.

Jos haluat käyttää kirjastoa luonnoksessa, sisällytämme sen #include EEPROM.h -direktiiviin.

Vaihe 3

Kirjoitetaan kaksi kokonaislukua EEPROM-muistiin ja luetaan ne sitten EEPROM-muistista ja tuotetaan sarjaporttiin.

Numeroilla 0-255 ei ole ongelmia, ne vievät vain 1 tavua muistia ja kirjoitetaan haluttuun paikkaan käyttämällä EEPROM.write () -toimintoa.

Jos luku on suurempi kuin 255, operaattoreiden highByte () ja lowByte () avulla se on jaettava tavuilla ja kukin tavu on kirjoitettava omaan soluunsa. Suurin sallittu määrä tässä tapauksessa on 65536 (tai 2 ^ 16).

Katsokaa, sarjassa 0 oleva sarjaporttimonitori näyttää yksinkertaisesti alle 255. Soluihin 1 ja 2 tallennetaan suuri määrä 789. Tällöin solu 1 tallentaa ylivuototekijän 3 ja solu 2 tallentaa puuttuvan numeron 21. (ts. 789 = 3 * 256 + 21). Paljon tavuina jäsennetyn määrän kokoamiseksi on sana () function: int val = sana (hi, low), missä hi ja low ovat korkean ja matalan tavun arvot.

Kaikissa muissa soluissa, joita emme ole koskaan kirjoittaneet, numerot 255 tallennetaan.

Kokonaislukujen kirjoittaminen EEPROM Arduinoon
Kokonaislukujen kirjoittaminen EEPROM Arduinoon

Vaihe 4

Käytä liukulukujen ja merkkijonojen kirjoittamiseen EEPROM.put () -menetelmää ja lukeaksesi EEPROM.get ().

Setup () -prosessissa kirjoitetaan ensin liukuluku f. Sitten siirrymme niiden muistisolujen lukumäärällä, jotka uimurityyppi vie, ja kirjoitamme merkkijonon, jonka kapasiteetti on 20 solua.

Loop-prosessissa luemme kaikki muistisolut ja yritämme purkaa ne ensin "float" -tyypiksi ja sitten "char" -tyypiksi ja tuottaa tulos sarjaporttiin.

Voit nähdä, että arvo soluissa 0-3 määritettiin oikein liukuluvun numeroksi ja alkaen 4. - merkkijonona.

Tuloksena saadut arvot ovf (ylivuoto) ja nan (ei luku) osoittavat, että lukua ei voida muuntaa oikein liukuluvuksi. Jos tiedät tarkalleen minkä tyyppisiä tietoja muistisolut käyttävät, sinulla ei ole mitään ongelmia.

Liukulukujen ja merkkijonojen kirjoittaminen EEPROM Arduinolle
Liukulukujen ja merkkijonojen kirjoittaminen EEPROM Arduinolle

Vaihe 5

Erittäin kätevä ominaisuus on viitata muistisoluihin EEPROM-ryhmän elementteinä. Tässä luonnoksessa setup () -prosessissa kirjoitamme tiedot ensin 4 ensimmäiseen tavuun, ja loop () -prosessissa luemme tiedot joka minuutti kaikista soluista ja lähetämme ne sarjaporttiin.

Suositeltava: