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, Svibanj
Anonim

Arduino ploče imaju nekoliko vrsta memorije. Prvo, to je statički RAM (memorija s slučajnim pristupom), koji se koristi za spremanje varijabli tijekom izvršavanja programa. Drugo, flash memorija čuva skice koje ste napisali. I treće, to je EEPROM koji se može koristiti za trajno pohranjivanje podataka. Prva vrsta memorije je hlapljiva, ona gubi sve podatke nakon ponovnog pokretanja Arduina. Dvije druge vrste memorije pohranjuju informacije dok se ne prepišu s novom, čak i nakon isključivanja napajanja. Posljednja vrsta memorije - EEPROM - omogućuje 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čunalo.

Upute

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 pohraniti desetke godina nakon isključivanja napajanja. Broj ciklusa prepisivanja iznosi nekoliko milijuna puta.

Količina EEPROM memorije u Arduinu prilično je ograničena: za ploče temeljene 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 knjižnica koja je prema zadanim postavkama uključena u Arduino IDE. Knjižnica sadrži sljedeće značajke.

čitanje (adresa) - čita 1 bajt iz EEPROM-a; adresa - adresa s 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đene vrste iz memorije na adresi;

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

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

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

3. korak

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

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. U ovom je slučaju maksimalni broj 65536 (ili 2 ^ 16).

Gledajte, 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 preljeva 3, a stanica 2 nedostajući broj 21 (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 stanicama koje nikada nismo zapisali pohranjeni su brojevi 255.

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

4. korak

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

U postupku setup () prvo upisujemo broj s pomičnom zarezom f. Zatim se pomičemo prema broju memorijskih ćelija koje zauzima float tip i napišemo char znak s kapacitetom od 20 ćelija.

U postupku loop () pročitati ćemo sve memorijske ćelije i pokušati ih prvo dešifrirati kao "plutajući", a zatim kao "char" tip i rezultat poslati u serijski priključak.

Možete vidjeti da je vrijednost u stanicama 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 prikladna značajka je pozivanje na memorijske stanice kao na elemente EEPROM niza. U ovoj skici, u postupku setup (), prvo ćemo zapisati podatke u prva 4 bajta, a u loop () proceduri, svake minute ćemo čitati podatke iz svih ćelija i izlaziti ih na serijski priključak.

Preporučeni: