Hur Man Lagrar Data I Arduino

Innehållsförteckning:

Hur Man Lagrar Data I Arduino
Hur Man Lagrar Data I Arduino

Video: Hur Man Lagrar Data I Arduino

Video: Hur Man Lagrar Data I Arduino
Video: Arduino для начинающих. Начало работы 2024, Maj
Anonim

Arduino-kort har flera typer av minne. För det första är det statiskt RAM-minne (random access memory) som används för att lagra variabler under programkörning. För det andra är det flashminnet som lagrar skisserna du har skrivit. Och för det tredje är det en EEPROM som kan användas för att permanent lagra information. Den första typen av minne är flyktigt, den förlorar all information efter att ha startat om Arduino. De andra två typerna av minne lagrar information tills den skrivs över med en ny, även efter att strömmen stängts av. Den sista minnestypen - EEPROM - gör att data kan skrivas, lagras och läsas efter behov. Vi kommer att överväga detta minne nu.

Lagring av data i EEPROM Arduino
Lagring av data i EEPROM Arduino

Nödvändig

  • - Arduino;
  • - dator.

Instruktioner

Steg 1

EEPROM står för Electrically Erasable Programmable Read-Only Memory, dvs. elektriskt raderbart skrivskyddat minne. Data i detta minne kan lagras i tiotals år efter att strömmen stängts av. Antalet omskrivningscykler är i storleksordningen flera miljoner gånger.

Mängden EEPROM-minne i Arduino är ganska begränsat: för kort baserade på ATmega328-mikrokontrollern (till exempel Arduino UNO och Nano) är mängden minne 1 kB, för ATmega168 och ATmega8-kort - 512 byte, för ATmega2560 och ATmega1280 - 4 kB.

Steg 2

För att arbeta med EEPROM för Arduino har ett specialbibliotek skrivits som ingår i Arduino IDE som standard. Biblioteket innehåller följande funktioner.

läs (adress) - läser 1 byte från EEPROM; adress - adressen där data läses från (cell börjar från 0);

skriv (adress, värde) - skriver värdet (1 byte, nummer från 0 till 255) till minnet vid adressadressen;

uppdatering (adress, värde) - ersätter värdet på adressen om dess gamla innehåll skiljer sig från det nya;

få (adress, data) - läser data av den angivna typen från minnet på adressen;

put (adress, data) - skriver data av den angivna typen till minnet på adressen;

EEPROM [adress] - låter dig använda "EEPROM" -identifieraren som en matris för att skriva data till och läsa från minnet.

För att använda biblioteket i skissen inkluderar vi det med #include EEPROM.h-direktivet.

Steg 3

Låt oss skriva två heltal till EEPROM och sedan läsa dem från EEPROM och mata ut dem till serieporten.

Det finns inga problem med siffror från 0 till 255, de tar bara 1 byte minne och skrivs till önskad plats med funktionen EEPROM.write ().

Om talet är större än 255 måste användarna highByte () och lowByte () delas med byte och varje byte måste skrivas till sin egen cell. Det maximala antalet i detta fall är 65536 (eller 2 ^ 16).

Seriell portmonitor i cell 0 visar helt enkelt ett nummer mindre än 255. I cellerna 1 och 2 lagras ett stort antal 789. I detta fall lagrar cell 1 överflödesfaktorn 3 och cell 2 lagrar det saknade numret 21 (dvs 789 = 3 * 256 + 21). För att återmontera ett stort antal, analyserat i byte, finns ordet () -funktionen: int val = ord (hi, low), där hi och low är värdena för höga och låga byte.

I alla andra celler som vi aldrig har skrivit ner lagras nummer 255.

Skriva heltal till EEPROM Arduino
Skriva heltal till EEPROM Arduino

Steg 4

För att skriva flytande siffror och strängar använder du EEPROM.put () -metoden, och för att läsa använder du EEPROM.get ().

I installationsproceduren () skriver vi först flytpunkten f. Sedan rör vi oss med antalet minnesceller som flottörtypen upptar och skriver en char-sträng med en kapacitet på 20 celler.

I loop () -proceduren läser vi alla minnesceller och försöker dekryptera dem först som "float" -typ och sedan som "char" -typ och mata ut resultatet till den seriella porten.

Du kan se att värdet i cellerna 0 till 3 definierades korrekt som ett flytpunktsnummer och med början från det fjärde - som en sträng.

De resulterande värdena ovf (överflöde) och nan (inte ett tal) indikerar att numret inte kan omvandlas korrekt till ett flytande nummer. Om du vet exakt vilken typ av data vilka minnesceller upptar, kommer du inte att ha några problem.

Skriva siffror och strängar med flytande punkter till EEPROM Arduino
Skriva siffror och strängar med flytande punkter till EEPROM Arduino

Steg 5

En mycket bekväm funktion är att hänvisa till minnesceller som element i en EEPROM-array. I denna skiss, i installationsproceduren (), kommer vi först att skriva in data i de första 4 bytesna, och i loop () -proceduren kommer vi varje minut att läsa data från alla celler och mata ut dem till serieporten.

Rekommenderad: