Si Të Ruani Të Dhënat Në Arduino

Përmbajtje:

Si Të Ruani Të Dhënat Në Arduino
Si Të Ruani Të Dhënat Në Arduino

Video: Si Të Ruani Të Dhënat Në Arduino

Video: Si Të Ruani Të Dhënat Në Arduino
Video: Синтезатор частоты на Si5351 и Arduino 2024, Nëntor
Anonim

Bordet Arduino kanë disa lloje të kujtesës. Së pari, është RAM statik (memorje me qasje të rastësishme), e cila përdoret për të ruajtur ndryshoret gjatë ekzekutimit të programit. Së dyti, është flash memoria që ruan skicat që keni shkruar. Dhe së treti, është një EEPROM që mund të përdoret për të ruajtur përgjithmonë informacionin. Lloji i parë i kujtesës është i paqëndrueshëm, ajo humbet të gjithë informacionin pas rindezjes së Arduino. Dy llojet e dyta të kujtesës ruajnë informacionin derisa të mbishkruhet me një të ri, edhe pasi të jetë fikur rryma. Lloji i fundit i kujtesës - EEPROM - lejon që të dhënat të shkruhen, ruhen dhe lexohen sipas nevojës. Ne do ta shqyrtojmë këtë kujtim tani.

Ruajtja e të dhënave në EEPROM Arduino
Ruajtja e të dhënave në EEPROM Arduino

E nevojshme

  • - Arduino;
  • - kompjuter.

Udhëzimet

Hapi 1

EEPROM qëndron për Memory Programmable Only Readable Erasable Erasable Programmable, d.m.th. memorje që fshihet në mënyrë elektrike vetëm për lexim. Të dhënat në këtë memorie mund të ruhen për dhjetëra vjet pasi të jetë fikur rryma. Numri i cikleve të rishkrimit është në rendin e disa milion herë.

Sasia e kujtesës EEPROM në Arduino është mjaft e kufizuar: për bordet e bazuara në mikrokontrolluesin ATmega328 (për shembull, Arduino UNO dhe Nano), sasia e kujtesës është 1 KB, për bordet ATmega168 dhe ATmega8 - 512 bajt, për ATmega2560 dhe ATmega1280 - 4 KB

Hapi 2

Për të punuar me EEPROM për Arduino, është shkruar një bibliotekë e veçantë, e cila përfshihet në Arduino IDE si parazgjedhje. Biblioteka përmban veçoritë e mëposhtme.

lexo (adresë) - lexon 1 bajt nga EEPROM; adresa - adresa nga lexohen të dhënat (qeliza duke filluar nga 0);

shkruaj (adresë, vlerë) - shkruan vlerën e vlerës (1 bajt, numër nga 0 në 255) në memorje në adresën e adresës;

azhurnimi (adresa, vlera) - zëvendëson vlerën në adresë nëse përmbajtja e saj e vjetër ndryshon nga e reja;

merrni (adresa, të dhënat) - lexon të dhënat e llojit të specifikuar nga memoria në adresë;

vendos (adresa, të dhënat) - shkruan të dhëna të llojit të specifikuar në memorje në adresë;

EEPROM [adresa] - ju lejon të përdorni identifikuesin "EEPROM" si një grup për të shkruar të dhëna në dhe për të lexuar nga kujtesa.

Për të përdorur bibliotekën në skicë, ne e përfshijmë atë me direktivën #include EEPROM.h.

Hapi 3

Le të shkruajmë dy integrues në EEPROM dhe pastaj t'i lexojmë nga EEPROM dhe t'i nxjerrim në portin serik.

Nuk ka probleme me numrat nga 0 në 255, ato zënë vetëm 1 bajt memorje dhe shkruhen në vendin e dëshiruar duke përdorur funksionin EEPROM.write ().

Nëse numri është më i madh se 255, atëherë duke përdorur operatorët highByte () dhe lowByte () ai duhet të ndahet me bajte dhe secili bajt duhet të shkruhet në qelizën e vet. Numri maksimal në këtë rast është 65536 (ose 2 ^ 16).

Shikoni, monitori i portit serik në qelizën 0 thjesht tregon një numër më pak se 255. Në qelizat 1 dhe 2, ruhet një numër i madh 789. Në këtë rast, qeliza 1 ruan faktorin e mbingarkesës 3, dhe qeliza 2 ruan numrin 21 që mungon (d.m.th. 789 = 3 * 256 + 21). Për të mbledhur përsëri një numër të madh, të zbërthyer në bajte, ekziston funksioni i fjalës (): int val = fjalë (hi, ulët), ku hi dhe ulët janë vlerat e bajteve të larta dhe të ulëta.

Në të gjitha qelizat e tjera që nuk i kemi shkruar kurrë, numrat 255 janë ruajtur.

Shkrimi i numrave të plotë për EEPROM Arduino
Shkrimi i numrave të plotë për EEPROM Arduino

Hapi 4

Për të shkruar numrat dhe vargjet e pikave lundruese, përdorni metodën EEPROM.put () dhe për të lexuar, përdorni EEPROM.get ().

Në procedurën e konfigurimit (), së pari shkruajmë numrin e pikës lundruese f. Pastaj lëvizim sipas numrit të qelizave të kujtesës që zë lloji notues, dhe shkruajmë një varg char me një kapacitet prej 20 qelizash.

Në procedurën e lakut () ne do të lexojmë të gjitha qelizat e kujtesës dhe do të përpiqemi t'i deshifrojmë ato së pari si tip "float", dhe pastaj si "char", dhe të nxjerrim rezultatin në portën serike.

Ju mund të shihni se vlera në qelizat 0 deri në 3 ishte përcaktuar si duhet si një numër i pikës lundruese, dhe duke filluar nga e 4-ta - si një varg.

Vlerat rezultuese ovf (tejmbushja) dhe nan (jo një numër) tregojnë se numri nuk mund të shndërrohet në mënyrë korrekte në një numër të pikës lundruese. Nëse e dini saktësisht se çfarë lloji të të dhënave që zënë qelizat e kujtesës, atëherë nuk do të keni ndonjë problem.

Shkrimi i numrave dhe vargjeve të pikave lundruese tek EEPROM Arduino
Shkrimi i numrave dhe vargjeve të pikave lundruese tek EEPROM Arduino

Hapi 5

Një tipar shumë i përshtatshëm është t'i referohemi qelizave të kujtesës si elemente të një grupi EEPROM. Në këtë skicë, në procedurën e konfigurimit (), së pari do të shkruajmë të dhënat në 4 bajtët e parë, dhe në procedurën e lakut (), çdo minutë do të lexojmë të dhëna nga të gjitha qelizat dhe do t'i nxjerrim në portin serik.

Recommended: