Papan Arduino mempunyai beberapa jenis memori. Pertama, ia adalah RAM statik (memori akses rawak), yang digunakan untuk menyimpan pemboleh ubah semasa pelaksanaan program. Kedua, memori flash yang menyimpan lakaran yang anda tulis. Dan ketiga, ia adalah EEPROM yang dapat digunakan untuk menyimpan maklumat secara kekal. Jenis memori pertama tidak stabil, ia kehilangan semua maklumat setelah menghidupkan semula Arduino. Kedua-dua jenis memori menyimpan maklumat sehingga ditimpa dengan yang baru, walaupun setelah kuasa dimatikan. Jenis memori terakhir - EEPROM - membolehkan data ditulis, disimpan dan dibaca mengikut keperluan. Kami akan mempertimbangkan memori ini sekarang.
Perlu
- - Arduino;
- - komputer.
Arahan
Langkah 1
EEPROM bermaksud Memori Hanya Baca Boleh Diprogramkan dengan Pemadaman Elektrik, iaitu memori baca sahaja yang boleh dipadamkan secara elektrik. Data dalam memori ini dapat disimpan selama puluhan tahun setelah kuasa dimatikan. Jumlah kitaran penulisan semula mengikut urutan beberapa juta kali.
Jumlah memori EEPROM di Arduino agak terhad: untuk papan berdasarkan mikrokontroler ATmega328 (contohnya, Arduino UNO dan Nano), jumlah memori adalah 1 KB, untuk papan ATmega168 dan ATmega8 - 512 bait, untuk ATmega2560 dan ATmega1280 - 4 KB.
Langkah 2
Untuk bekerja dengan EEPROM untuk Arduino, perpustakaan khas telah ditulis, yang dimasukkan dalam Arduino IDE secara lalai. Perpustakaan mengandungi ciri-ciri berikut.
baca (alamat) - membaca 1 bait dari EEPROM; alamat - alamat di mana data dibaca (sel bermula dari 0);
tulis (alamat, nilai) - menulis nilai nilai (1 bait, nombor dari 0 hingga 255) ke memori di alamat alamat;
kemas kini (alamat, nilai) - menggantikan nilai di alamat jika kandungan lamanya berbeza dengan yang baru;
get (alamat, data) - membaca data jenis yang ditentukan dari memori di alamat;
put (alamat, data) - menulis data jenis yang ditentukan ke memori di alamat;
EEPROM [alamat] - membolehkan anda menggunakan pengenal "EEPROM" sebagai tatasusunan untuk menulis data dan membaca dari memori.
Untuk menggunakan perpustakaan dalam lakaran, kami menyertakannya dengan arahan #include EEPROM.h.
Langkah 3
Mari tulis dua nombor bulat ke EEPROM dan kemudian baca dari EEPROM dan keluarkan ke port bersiri.
Tidak ada masalah dengan angka dari 0 hingga 255, mereka hanya tinggal 1 bait memori dan ditulis ke lokasi yang diinginkan menggunakan fungsi EEPROM.write ().
Sekiranya bilangannya lebih besar daripada 255, maka dengan menggunakan operator highByte () dan lowByte () ia mesti dibahagi dengan bait dan setiap bait mesti ditulis ke selnya sendiri. Jumlah maksimum dalam kes ini ialah 65536 (atau 2 ^ 16).
Lihat, monitor port bersiri di sel 0 hanya memaparkan angka kurang dari 255. Dalam sel 1 dan 2, sebilangan besar 789 disimpan. Dalam kes ini, sel 1 menyimpan faktor limpahan 3, dan sel 2 menyimpan nombor yang hilang 21 (iaitu 789 = 3 * 256 + 21). Untuk memasang kembali sebilangan besar, diuraikan menjadi bait, ada kata () fungsi: int val = kata (hi, rendah), di mana hi dan rendah adalah nilai byte tinggi dan rendah.
Dalam semua sel lain yang belum pernah kita tulis, nombor 255 disimpan.
Langkah 4
Untuk menulis nombor dan rentetan titik terapung, gunakan kaedah EEPROM.put (), dan untuk membaca, gunakan EEPROM.get ().
Dalam prosedur persediaan (), pertama-tama kita menulis nombor titik terapung f. Kemudian kami bergerak dengan jumlah sel memori yang diduduki oleh jenis float, dan menulis rentetan char dengan kapasiti 20 sel.
Dalam prosedur loop () kita akan membaca semua sel memori dan cuba mendekripsikannya terlebih dahulu sebagai jenis "float", dan kemudian sebagai jenis "char", dan mengeluarkan hasilnya ke port bersiri.
Anda dapat melihat bahawa nilai dalam sel 0 hingga 3 didefinisikan dengan betul sebagai nombor titik terapung, dan bermula dari 4 - sebagai rentetan.
Nilai yang dihasilkan ovf (limpahan) dan nan (bukan nombor) menunjukkan bahawa nombor tersebut tidak dapat ditukar dengan betul menjadi nombor titik terapung. Sekiranya anda mengetahui dengan tepat jenis data yang ditempatkan sel memori, maka anda tidak akan menghadapi masalah.
Langkah 5
Ciri yang sangat senang adalah merujuk kepada sel memori sebagai elemen dari array EEPROM. Dalam lakaran ini, dalam prosedur setup (), pertama-tama kita akan menulis data ke dalam 4 bait pertama, dan dalam prosedur loop (), setiap minit kita akan membaca data dari semua sel dan mengeluarkannya ke port bersiri.