Kako Pohraniti Podatke U Arduino

Sadržaj:

Kako Pohraniti Podatke U Arduino
Kako Pohraniti Podatke U Arduino

Video: Kako Pohraniti Podatke U Arduino

Video: Kako Pohraniti Podatke U Arduino
Video: Исправить avrdude: stk500_recv (): программист не отвечает 2024, Novembar
Anonim

Arduino ploče imaju nekoliko vrsta memorije. Prvo, to je statička RAM (memorija sa slučajnim pristupom), koja se koristi za spremanje varijabli tokom izvršavanja programa. Drugo, fleš memorija čuva skice koje ste napisali. I treće, to je EEPROM koji se može koristiti za trajno čuvanje informacija. Prva vrsta memorije je hlapljiva, ona gubi sve informacije nakon ponovnog pokretanja Arduina. Druge dvije vrste memorije čuvaju informacije dok se ne prepišu novom, čak i nakon isključivanja napajanja. Posljednja vrsta memorije - EEPROM - omogućava zapis, pohranu i čitanje podataka po potrebi. Sad ćemo razmotriti ovo sjećanje.

Pohranjivanje podataka u EEPROM Arduino
Pohranjivanje podataka u EEPROM Arduino

Potrebno

  • - Arduino;
  • - računar.

Instrukcije

Korak 1

EEPROM je skraćenica od Električno izbrisive programabilne memorije samo za čitanje, tj. električno izbrisljiva memorija samo za čitanje. Podaci u ovoj memoriji mogu se čuvati desetine godina nakon isključivanja napajanja. Broj ciklusa prepisivanja je reda veličine nekoliko miliona puta.

Količina EEPROM memorije u Arduinu prilično je ograničena: za ploče zasnovane na ATmega328 mikrokontroleru (na primjer, Arduino UNO i Nano) količina memorije je 1 KB, za ploče ATmega168 i ATmega8 - 512 bajtova, za ATmega2560 i ATmega1280 - 4 KB.

Korak 2

Za rad s EEPROM-om za Arduino napisana je posebna biblioteka koja je po defaultu uključena u Arduino IDE. Biblioteka sadrži sljedeće značajke.

čitanje (adresa) - čita 1 bajt iz EEPROM-a; adresa - adresa sa koje se čitaju podaci (ćelija koja počinje od 0);

write (adresa, vrijednost) - zapisuje vrijednost vrijednosti (1 bajt, broj od 0 do 255) u memoriju na adresnoj adresi;

update (adresa, vrijednost) - zamjenjuje vrijednost na adresi ako se stari sadržaj razlikuje od novog;

get (adresa, podaci) - čita podatke određenog tipa iz memorije na adresi;

put (adresa, podaci) - zapisuje podatke određenog tipa u memoriju na adresi;

EEPROM [adresa] - omogućava vam upotrebu identifikatora "EEPROM" kao niza za upisivanje podataka i čitanje iz memorije.

Da bismo koristili biblioteku u skici, uključujemo je s direktivom #include EEPROM.h.

Korak 3

Napišimo dvije cijele brojeve u EEPROM, a zatim ih čitamo s EEPROM-a i izlazimo na serijski port.

Nema problema s brojevima od 0 do 255, oni zauzimaju samo 1 bajt memorije i zapisuju se na željeno mjesto pomoću funkcije EEPROM.write ().

Ako je broj veći od 255, tada se pomoću operatora highByte () i lowByte () mora podijeliti bajtovima i svaki bajt mora biti zapisan u svoju ćeliju. Maksimalni broj u ovom slučaju je 65536 (ili 2 ^ 16).

Pogledajte, monitor serijskog porta u ćeliji 0 jednostavno prikazuje broj manji od 255. U ćelijama 1 i 2 pohranjuje se velik broj 789. U ovom slučaju, ćelija 1 pohranjuje faktor prelijevanja 3, a ćelija 2 sprema broj 21 koji nedostaje (tj. 789 = 3 * 256 + 21). Za ponovno sastavljanje velikog broja, raščlanjenog na bajtove, postoji funkcija word (): int val = riječ (hi, low), gdje su hi i low vrijednosti visokog i niskog bajta.

U svim ostalim ćelijama koje nikada nismo zapisali pohranjeni su brojevi 255.

Zapisivanje cijelih brojeva u EEPROM Arduino
Zapisivanje cijelih brojeva u EEPROM Arduino

Korak 4

Za pisanje brojeva i nizova s pomičnom zarezom koristite metodu EEPROM.put (), a za čitanje EEPROM.get ().

U proceduri setup () prvo upisujemo broj s pomičnom zarezom f. Zatim se pomičemo prema broju memorijskih ćelija koje zauzima float tip i napišemo niz znakova kapaciteta 20 ćelija.

U proceduri loop () pročitati ćemo sve memorijske ćelije i pokušati ih dešifrirati prvo kao "plutajući", a zatim kao "char" tip i izlaziti rezultat na serijski port.

Možete vidjeti da je vrijednost u ćelijama od 0 do 3 ispravno definirana kao broj s pomičnim zarezom, a počevši od 4. - kao niz.

Rezultirajuće vrijednosti ovf (preljev) i nan (ne broj) ukazuju na to da se broj ne može ispravno pretvoriti u broj s pomičnom zarezom. Ako točno znate koju vrstu podataka zauzimaju memorijske ćelije, tada nećete imati problema.

Zapisivanje brojeva i nizova s pomičnim zarezom u EEPROM Arduino
Zapisivanje brojeva i nizova s pomičnim zarezom u EEPROM Arduino

Korak 5

Vrlo pogodna karakteristika je pozivanje na memorijske ćelije kao na elemente EEPROM niza. U ovoj skici, u proceduri setup (), prvo ćemo zapisati podatke u prva 4 bajta, a u proceduri loop (), svake minute ćemo čitati podatke iz svih ćelija i izlaziti ih na serijski port.

Preporučuje se: