Sådan Gemmes Data I Arduino

Indholdsfortegnelse:

Sådan Gemmes Data I Arduino
Sådan Gemmes Data I Arduino

Video: Sådan Gemmes Data I Arduino

Video: Sådan Gemmes Data I Arduino
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, April
Anonim

Arduino-kort har flere typer hukommelse. For det første er det statisk RAM (random access memory), der bruges til at gemme variabler under programudførelse. For det andet er det flashhukommelsen, der gemmer de skitser, du har skrevet. Og for det tredje er det en EEPROM, der kan bruges til permanent at gemme information. Den første hukommelsestype er ustabil, den mister al information efter genstart af Arduino. De anden to typer hukommelse gemmer information, indtil den overskrives med en ny, selv efter at strømmen er slukket. Den sidste hukommelsestype - EEPROM - gør det muligt at skrive, gemme og læse data efter behov. Vi vil overveje denne hukommelse nu.

Lagring af data i EEPROM Arduino
Lagring af data i EEPROM Arduino

Nødvendig

  • - Arduino;
  • - computer.

Instruktioner

Trin 1

EEPROM står for Electrically Erasable Programmable Read-Only Memory, dvs. elektrisk sletbar skrivebeskyttet hukommelse. Dataene i denne hukommelse kan lagres i ti år efter strømmen er slukket. Antallet af omskrivningscyklusser er i størrelsesordenen flere millioner gange.

Mængden af EEPROM-hukommelse i Arduino er ret begrænset: for kort baseret på ATmega328 mikrokontroller (for eksempel Arduino UNO og Nano) er mængden af hukommelse 1 KB, for ATmega168 og ATmega8-kort - 512 bytes, til ATmega2560 og ATmega1280 - 4 KB.

Trin 2

For at arbejde med EEPROM til Arduino er der blevet skrevet et specielt bibliotek, der som standard er inkluderet i Arduino IDE. Biblioteket indeholder følgende funktioner.

læse (adresse) - læser 1 byte fra EEPROM; adresse - den adresse, hvor dataene læses fra (celle startende fra 0);

skriv (adresse, værdi) - skriver værdien (1 byte, nummer fra 0 til 255) til hukommelsen på adresse-adressen;

opdatering (adresse, værdi) - erstatter værdien på adressen, hvis dens gamle indhold adskiller sig fra det nye;

få (adresse, data) - læser data af den specificerede type fra hukommelsen på adressen;

put (adresse, data) - skriver data af den specificerede type til hukommelsen på adressen;

EEPROM [adresse] - giver dig mulighed for at bruge "EEPROM" -identifikatoren som en matrix til at skrive data til og læse fra hukommelsen.

For at bruge biblioteket i skitsen inkluderer vi det med direktivet #include EEPROM.h.

Trin 3

Lad os skrive to heltal til EEPROM og derefter læse dem fra EEPROM og output dem til den serielle port.

Der er ingen problemer med tal fra 0 til 255, de optager kun 1 byte hukommelse og skrives til den ønskede placering ved hjælp af EEPROM.write () -funktionen.

Hvis tallet er større end 255, skal operatørerne highByte () og lowByte () deles med byte, og hver byte skal skrives til sin egen celle. Det maksimale antal i dette tilfælde er 65536 (eller 2 ^ 16).

Seriaportmonitoren i celle 0 viser simpelthen et tal mindre end 255. I celler 1 og 2 er der lagret et stort antal 789. I dette tilfælde gemmer celle 1 overløbsfaktoren 3, og celle 2 gemmer det manglende nummer 21 (dvs. 789 = 3 * 256 + 21). For at samle et stort antal igen, parset i bytes, er der funktionen (): int val = ord (hi, low), hvor hi og low er værdierne for de høje og lave byte.

I alle andre celler, som vi aldrig har skrevet ned, er nummer 255 lagret.

Skrivning af heltal til EEPROM Arduino
Skrivning af heltal til EEPROM Arduino

Trin 4

For at skrive flydende nummer og strenge skal du bruge EEPROM.put () -metoden, og for at læse skal du bruge EEPROM.get ().

I installationsproceduren () skriver vi først flydende nummer f. Derefter bevæger vi os med antallet af hukommelsesceller, som flydetypen optager, og skriver en char-streng med en kapacitet på 20 celler.

I loop () -proceduren læser vi alle hukommelsesceller og prøver at dekryptere dem først som "float" -type og derefter som "char" -type og output resultatet til den serielle port.

Du kan se, at værdien i celler 0 til 3 var korrekt defineret som et flydende nummer og startede fra den fjerde - som en streng.

De resulterende værdier ovf (overløb) og nan (ikke et tal) indikerer, at tallet ikke kan konverteres korrekt til et flydende nummer. Hvis du ved nøjagtigt, hvilken type data hvilke hukommelsesceller optager, har du ingen problemer.

Skrivning af flydende punktum og strenge til EEPROM Arduino
Skrivning af flydende punktum og strenge til EEPROM Arduino

Trin 5

En meget praktisk funktion er at henvise til hukommelsesceller som elementer i et EEPROM-array. I denne skitse, i installationsproceduren (), skriver vi først dataene i de første 4 bytes, og i loop () -proceduren læser vi hvert minut data fra alle celler og sender dem til den serielle port.

Anbefalede: