Paano Mag-imbak Ng Data Sa Arduino

Talaan ng mga Nilalaman:

Paano Mag-imbak Ng Data Sa Arduino
Paano Mag-imbak Ng Data Sa Arduino

Video: Paano Mag-imbak Ng Data Sa Arduino

Video: Paano Mag-imbak Ng Data Sa Arduino
Video: ❓ Обязательно к просмотру начинающему в Arduino IDE (ошибка компилятора) 2024, Mayo
Anonim

Ang mga board ng Arduino ay may maraming uri ng memorya. Una, ito ay static RAM (random na memorya ng pag-access), na ginagamit upang mag-imbak ng mga variable sa panahon ng pagpapatupad ng programa. Pangalawa, ang flash memory ang nag-iimbak ng mga sketch na isinulat mo. At pangatlo, ito ay isang EEPROM na maaaring magamit upang permanenteng mag-imbak ng impormasyon. Ang unang uri ng memorya ay pabagu-bago, nawawala ang lahat ng impormasyon pagkatapos i-reboot ang Arduino. Ang pangalawang dalawang uri ng impormasyon sa pag-iimbak ng memorya hanggang sa ito ay mapapatungan ng bago, kahit na matapos na patayin ang kuryente. Ang huling uri ng memorya - EEPROM - pinapayagan ang data na maisulat, maimbak at mabasa kung kinakailangan. Isasaalang-alang namin ang memorya na ito ngayon.

Pag-iimbak ng data sa EEPROM Arduino
Pag-iimbak ng data sa EEPROM Arduino

Kailangan

  • - Arduino;
  • - computer.

Panuto

Hakbang 1

Ang EEPROM ay nangangahulugang Electrically Erasable Programmable Read-Only Memory, ibig sabihin electrically erasable read-only memory. Ang data sa memorya na ito ay maaaring itago sa loob ng sampu-sampung taon pagkatapos na patayin ang kuryente. Ang bilang ng mga muling pagsulat ng mga cycle ay nasa pagkakasunud-sunod ng maraming milyong beses.

Ang halaga ng memorya ng EEPROM sa Arduino ay limitado: para sa mga board batay sa ATmega328 microcontroller (halimbawa, Arduino UNO at Nano), ang halaga ng memorya ay 1 KB, para sa ATmega168 at ATmega8 boards - 512 bytes, para sa ATmega2560 at ATmega1280 - 4 KB.

Hakbang 2

Upang gumana sa EEPROM para sa Arduino, isang espesyal na silid-aklatan ang naisulat, na kasama sa Arduino IDE bilang default. Naglalaman ang library ng mga sumusunod na tampok.

basahin (address) - binabasa ang 1 byte mula sa EEPROM; address - ang address kung saan binabasa ang data mula sa (cell simula sa 0);

isulat (address, halaga) - isusulat ang halaga ng halaga (1 byte, numero mula 0 hanggang 255) sa memorya sa address address;

pag-update (address, halaga) - pinapalitan ang halaga sa address kung ang dating nilalaman ay naiiba mula sa bago;

kumuha (address, data) - nagbabasa ng data ng tinukoy na uri mula sa memorya sa address;

ilagay (address, data) - nagsusulat ng data ng tinukoy na uri sa memorya sa address;

Ang EEPROM [address] - ay nagbibigay-daan sa iyo upang magamit ang "EEPROM" identifier bilang isang array upang magsulat ng data at mabasa mula sa memorya.

Upang magamit ang silid-aklatan sa sketch, isinasama namin ito sa direktang # isama ang EEPROM.h.

Hakbang 3

Sumulat tayo ng dalawang integer sa EEPROM at pagkatapos ay basahin ang mga ito mula sa EEPROM at i-output ang mga ito sa serial port.

Walang mga problema sa mga numero mula 0 hanggang 255, sumasakop lamang sila ng 1 byte ng memorya at nakasulat sa nais na lokasyon gamit ang pagpapaandar ng EEPROM.write ().

Kung ang bilang ay higit sa 255, pagkatapos ay ang paggamit ng mga operator na highByte () at lowByte () dapat itong hatiin ng mga byte at ang bawat byte ay dapat na nakasulat sa sarili nitong cell. Ang maximum na bilang sa kasong ito ay 65536 (o 2 ^ 16).

Tingnan, ang serial port monitor sa cell 0 ay nagpapakita lamang ng isang bilang na mas mababa sa 255. Sa mga cell 1 at 2, isang malaking bilang 789 ang nakaimbak. Sa kasong ito, iniimbak ng cell 1 ang overflow factor 3, at ang cell 2 ay nag-iimbak ng nawawalang numero 21 (ie 789 = 3 * 256 + 21). Upang muling magtipun-tipon ang isang malaking bilang, na-parse sa mga byte, nariyan ang salitang () pagpapaandar: int val = salita (hi, mababa), kung saan hi at mababa ang mga halaga ng matataas at mababang byte.

Sa lahat ng iba pang mga cell na hindi pa namin nasusulat, ang mga bilang 255 ay nakaimbak.

Pagsusulat ng mga integer sa EEPROM Arduino
Pagsusulat ng mga integer sa EEPROM Arduino

Hakbang 4

Upang magsulat ng mga lumulutang na numero ng numero at string, gamitin ang pamamaraan ng EEPROM.put (), at upang mabasa, gamitin ang EEPROM.get ().

Sa pamamaraan ng pag-setup (), isinusulat muna namin ang lumulutang na numero ng numero f. Pagkatapos ay lumilipat kami sa bilang ng mga cell ng memorya na sinasakop ng uri ng float, at sumulat ng isang char string na may kapasidad na 20 cells.

Sa loop () na pamamaraan babasahin namin ang lahat ng mga memory cell at subukang i-decrypt muna ang mga ito bilang uri ng "float", at pagkatapos ay bilang "char" type, at ilabas ang resulta sa serial port.

Maaari mong makita na ang halaga sa mga cell 0 hanggang 3 ay wastong natukoy bilang isang lumulutang na numero ng puntos, at nagsisimula mula sa ika-4 - bilang isang string.

Ang mga nagresultang halagang ovf (overflow) at nan (hindi isang numero) ay nagpapahiwatig na ang numero ay hindi mai-convert nang tama sa isang lumulutang na numero ng numero. Kung alam mo nang eksakto kung anong uri ng data kung aling mga cell ng memorya ang sumasakop, hindi ka magkakaroon ng anumang mga problema.

Pagsusulat ng mga lumulutang na numero ng puntos at mga string sa EEPROM Arduino
Pagsusulat ng mga lumulutang na numero ng puntos at mga string sa EEPROM Arduino

Hakbang 5

Ang isang napaka-maginhawang tampok ay upang mag-refer sa mga cell ng memorya bilang mga elemento ng isang EEPROM array. Sa sketch na ito, sa pamamaraan ng pag-setup (), isusulat muna namin ang data sa unang 4 bytes, at sa loop () na pamamaraan, bawat minuto ay babasahin namin ang data mula sa lahat ng mga cell at i-output ang mga ito sa serial port.

Inirerekumendang: