Papan Arduino memiliki beberapa jenis memori. Pertama, itu adalah RAM statis (memori akses acak), yang digunakan untuk menyimpan variabel selama eksekusi program. Kedua, memori flash yang menyimpan sketsa yang Anda tulis. Dan ketiga, ini adalah EEPROM yang dapat digunakan untuk menyimpan informasi secara permanen. Jenis memori pertama bersifat volatil, kehilangan semua informasi setelah me-reboot Arduino. Dua jenis memori kedua menyimpan informasi hingga ditimpa dengan yang baru, bahkan setelah daya dimatikan. Jenis memori terakhir - EEPROM - memungkinkan data ditulis, disimpan, dan dibaca sesuai kebutuhan. Kami akan mempertimbangkan memori ini sekarang.
Diperlukan
- -Arduino;
- - komputer.
instruksi
Langkah 1
EEPROM adalah singkatan dari Electrically Erasable Programmable Read-Only Memory, mis. memori read-only yang dapat dihapus secara elektrik. Data dalam memori ini dapat disimpan selama puluhan tahun setelah listrik dimatikan. Jumlah siklus penulisan ulang berada di urutan beberapa juta kali.
Jumlah memori EEPROM di Arduino agak terbatas: untuk papan berbasis mikrokontroler ATmega328 (misalnya, Arduino UNO dan Nano), jumlah memori adalah 1 KB, untuk papan ATmega168 dan ATmega8 - 512 byte, untuk ATmega2560 dan ATmega1280 - 4 KB.
Langkah 2
Untuk bekerja dengan EEPROM untuk Arduino, perpustakaan khusus telah ditulis, yang secara default disertakan dalam Arduino IDE. Perpustakaan berisi fitur-fitur berikut.
baca (alamat) - membaca 1 byte dari EEPROM; alamat - alamat tempat data dibaca (sel dimulai dari 0);
tulis (alamat, nilai) - menulis nilai nilai (1 byte, angka dari 0 hingga 255) ke memori di alamat alamat;
perbarui (alamat, nilai) - mengganti nilai di alamat jika konten lama berbeda dari yang baru;
dapatkan (alamat, data) - membaca data dari tipe yang ditentukan dari memori di alamat;
put (alamat, data) - menulis data dari tipe yang ditentukan ke memori di alamat;
EEPROM [alamat] - memungkinkan Anda menggunakan pengenal "EEPROM" sebagai larik untuk menulis data ke dan membaca dari memori.
Untuk menggunakan perpustakaan dalam sketsa, kami menyertakannya dengan direktif #include EEPROM.h.
Langkah 3
Mari kita menulis dua bilangan bulat ke EEPROM dan kemudian membacanya dari EEPROM dan mengeluarkannya ke port serial.
Tidak ada masalah dengan angka dari 0 hingga 255, mereka hanya menempati 1 byte memori dan ditulis ke lokasi yang diinginkan menggunakan fungsi EEPROM.write ().
Jika jumlahnya lebih besar dari 255, maka menggunakan operator highByte() dan lowByte() harus dibagi dengan byte dan setiap byte harus ditulis ke selnya sendiri. Jumlah maksimum dalam hal ini adalah 65536 (atau 2 ^ 16).
Lihat, monitor port serial di sel 0 hanya menampilkan angka kurang dari 255. Di sel 1 dan 2, sejumlah besar disimpan 789. Dalam hal ini, sel 1 menyimpan faktor overflow 3, dan sel 2 menyimpan angka 21 yang hilang. (yaitu 789 = 3 * 256 + 21). Untuk memasang kembali sejumlah besar, diurai menjadi byte, ada fungsi kata (): int val = kata (hi, rendah), di mana hi dan rendah adalah nilai byte tinggi dan rendah.
Di semua sel lain yang belum pernah kita tulis, angka 255 disimpan.
Langkah 4
Untuk menulis angka dan string floating point, gunakan metode EEPROM.put (), dan untuk membaca, gunakan EEPROM.get ().
Dalam prosedur setup(), pertama kita tulis bilangan floating point f. Kemudian kita bergerak dengan jumlah sel memori yang ditempati oleh tipe float, dan menulis string char dengan kapasitas 20 sel.
Dalam prosedur loop () kita akan membaca semua sel memori dan mencoba mendekripsinya terlebih dahulu sebagai tipe "float", dan kemudian sebagai tipe "char", dan menampilkan hasilnya ke port serial.
Anda dapat melihat bahwa nilai dalam sel 0 hingga 3 didefinisikan dengan benar sebagai angka floating point, dan mulai dari tanggal 4 - sebagai string.
Nilai yang dihasilkan ovf (overflow) dan nan (bukan angka) menunjukkan bahwa angka tersebut tidak dapat dikonversi dengan benar ke angka floating point. Jika Anda tahu persis jenis data apa yang ditempati sel memori, maka Anda tidak akan mengalami masalah.
Langkah 5
Sebuah fitur yang sangat nyaman adalah untuk merujuk ke sel memori sebagai elemen dari array EEPROM. Dalam sketsa ini, dalam prosedur setup (), pertama-tama kita akan menulis data ke dalam 4 byte pertama, dan dalam prosedur loop (), setiap menit kita akan membaca data dari semua sel dan mengeluarkannya ke port serial.