Contoh Arduino Baca/Simpan LongInt, Float, String ke EEPROM

Artikel ini merupakan kelanjutan dari tutorial yang lalu, yakni overview tentang EEPROM dan bagaimana cara mengaksesnya (membaca, menulis/menyimpan data). Untuk data bertipe byte, hal itu dapat dengan mudah dilakukan, namun untuk tipe data yang lain seperti interger, longint, float, char array atau string, tentunya kita akan sedikit mengalami kesulitan karena harus membuat semacam script tambahan untuk menjaga konsistensi data.

cara mengakses EEPROM tipe data byte

cara-mengakses-eeprom-arduino

Nah, daripada pusing bikinnya, ada baiknya Anda menginstal aja library ‘EEPROMex.h’ (bisa di download di sini).  Library ini akan mengelola semua hal yang berhubungan dengan EEPROM di Arduino. Dengan library ini Anda dapat dengan mudah mengelola data yang bertipe selain byte ke EEPROM. Berikut ini adalah contohnya

Mengelola data integer dan Longint ke EEPROM dengan library EEPROMEx

Di Arduino, tipe data integer adalah tipe data yang berisi bilangan bulat dengan lebar data 2 byte alias 16 bit. Dengan demikian sebuah variabel integer dapat bernilai antara -32,768 s.d 32,767. Berikut ini adalah contoh mengelola (membaca dan menyimpan) data integer ke EEPROM menggunakan library EEPROMEx

int input = 12345;
int output = 0;

EEPROM.writeInt(0,input);  //simpan data integer ke alamat '0'
output = EEPROM.readInt(0); ///baca data integer di alamat '0'

Sedangkan tipe longint (long integer) adalah tipe data bulat dengan lebar data 32 bit (4 byte). Dengan data selebar ini maka sebuah variabel longint mampu menyimpan nilai sebesar -2,147,483,648 s.d 2,147,483,647. Hmm, besar sekali, bukan? Berikut ini adalah contoh mengelola data longint di Arduino ke EEPROM menggunakan library EEPROMEx

long input = 123456789;
long output = 0;
EEPROM.writeLong(3,input); //simpan data long integer ke alamat '3'
output = EEPROM.readLong(3);  ////baca data long integer di alamat '3'

Mengelola data float ke EEPROM dengan library EEPROMEx

Float adalah tipe data yang menyimpan data pecahan dengan lebar data 32 bit (4 byte). Nilai yang dapat ditampung dalam tipe data ini adalah 3.4028235E+38 s.d -3.4028235E+38. Tipe data ini memiliki ketelitian 6-7 digit di belakang koma. Contoh mengelola data float ke EEPROM Arduino dengan EEPROMEx

float input = 123456.78;
float output = 0.0;
EEPROM.writeFloat(8,input); //simpan data float ke alamat 8H 
output = EEPROM.readFloat();  //baca data float di alamat 8H

Mengelola data char array dan string ke EEPROM dengan library EEPROMEx

Char array adalah tipe data yang merupakan kumpulan dari tipe data char (karakter) yang lebar datanya 1 byte (8 bit). Jadi lebar data char array tergantung dari berapa banyak karakter yang tersimpan di dalamnya. Hmm, tambah pusing mengelolanya tanpa library EEPROMEx, bukan? :). Contoh source code:

char input[] = "Saptaji.com";
char output[] = " ";

EEPROM.writeBlock<char>(15, input, 12); //simpan data char array (12 karakter) ke alamat 15
EEPROM.readBlock<char>(15, output, 12); //baca data char array di alamat 15

Untuk data bertipe ‘string’ akan saya contohkan dalam tutorial selanjutnya.

Update : contoh penggunaan variabel string arduino

Demikian sedikit contoh pemrograman EEPROM di Arduino dengan bantuan library EEPROMEx. Yang perlu kita perhatikan adalah kita ini sedang memprogram sebuah perangkat kontroller yang kecil dengan kemampuan terbatas. Jadi ada baiknya Anda tetap memperhatikan sisi-sisi pemrograman yang dapat meng-optimize ruang memory baik itu yang bersifat static maupun dynamic. Beri ruang pada program/sketch Anda supaya bisa ‘bernafas’ sehingga sistem keseluruhan bisa lebih stabil

5 2 votes
Article Rating

Leave a Reply

46 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Rajil

Jos, membantu sekali dengan artikel EEPROM yang satunya juga.
Mas, library EEPROMex, yang ditulis address awalnya saja apa mas?
EEPROM.writeFloat(8, input);

apakah karena float itu 4 byte kalo kita mau store data float yang lain harus dimulai dari address 12, agar tidak tumpang dengan data yang sebelumnya
EEPROM.writeFloat(12, input);

locky

mas, kalo cara paling sederhana menyimpan string ke eeprom arduino gimana ya? secara kan eeprom arduino punya batasan memory untuk eeprom itu sendiri.

inan

cara untuk menyimpan dua data sensor analog ke dalam EEPROM, dan dibaca kedua-duanya bagaimana?… lalu untuk mamanggil data tersebut dengan push button dan menamppilkanya pada lcd, trimakasihh..

mohon dibalas yaa gann.t… (y)

inan

maaf gan bleh mintaa contohin ehe maklum gan msi pemula, semisal ada data A =500,55 dan B=700,99 stelah data itu di tulis di eeprom lalu cara manggil data tersebut mengguakan pushbutton bagaimana yahh..

mohon pencerahanya gan hehee..

asep

Misi gan, mau tanya kalo misal menampilkan nilai float 6 angka dibelakang koma gimana yah.

luqman

kalau untuk menyimpan ke variable float lain dengan nilai float 6 angka dibelakang koma bagaimana?

salam
luqman

Yohana

Mas, ini librarynya kenapa ya tidak bisa terbaca ya di IDE saya? WProgram.h : No such file or directory

ahmad

mas ajie, maap mau nanya. kenapa library nya error compile di arduino mega2560 yah? mohon pencerahannya..

ahmad

compilation terminated,
error compling for board arduino/genuino mega or mega 2560

itu mas errornya, sudah saya install library lewad zip n ekstrak, hasilnya sama aja mas..

ipungdc

Kalo misal udah nulis password di eeprom trus biar kesimpen meski power mati gimana ya programnya.?

Syahrir Sobirin Mahyuddin

mas ajie, librarynya error mas muncul “error compiling” dibagian bawah

novan

Permisi mas saya orang yang masih belajar arduino, mau tanya

Kalau saya mempunyai data dengan 3 parameter
Misalnya
3 parameter bertipe integer yakni suhu, kelembaban dan kelas yang masing – masing mempunyai lebih dari 50 data. Apakah bisa saya menggunakan EEPROM untuk menyimpan data tersebut dan kemudian mengolah data yang ada pada ketiga parameter tersebut untuk menjadi sebuah keluaran ?

ma’af kalau pertanyaannya banyak
TERIMAKASIH

novan

hehehe ndak pp ni mas banyak nanya

jadi bukan datanya ya yang dihitung tapi tipe datanya ya mas

Kalau formulanya sudah ada mas, nah yang saya bingungkan adalah mencari penyimpanan data yang model penyimpanannya seperti database dan dapat diunakan secara ofline.

jadi begini, 50 data dari 3 parameter tersebut mau saya masukkan secara manual ke eeprom sebagai data master (dimodel tabel seperti pada database), kemudian dua sensor yang saya gunakan itu mendeteksi dari luar dan mengirimkan data ke arduino, lalu data tersebut dicocokkan dengan data master dan baru diolah.
Apakah efektif dengan menggunakan eeprom tersebut ?

mas pernah cobain sensor max30100 pulse meter?

udah beberapa saya cobain.. masih belom bisa mas…..
mas saya coba cek i2c dari sensor max30100 saya, ketika dia terkonek dengan SDA ke A4, SCL ke A5 , VCC ke 3.3 v , GND ke GND.. nah pas saya buka serial monitor dia kebaca alamat sensornya dan ketika saya cabut groundnya dia baru kebaca.. itu kenapa ya mas?

M Haris F

Assalamuaikum mas ajie, saya mau bertanya, kalau untuk input dari keypad 4×4 ke eeprom saya masih bingung bagaimana codingnya, karena kalau ini kan kita memberikan input dari programnya. Mohon bantuannya

samid

mas numpang tanyak, kalau kita ingin 5 nilai dibelakang koma menggunakan tipe data float bagaimana ya mas

bambang ekalaya

Mas, kalo misalkan untuk menyimpan nama ke eeprom kodenya gamna mas?

Bambang

Ok gan nanti saya coba, terima kasih mas ajie.

ibrahim syarif

mas aji ada no wa ngak saya mau nanya banyak nih
saya lagi belajar kelola data yg tersimpan di eeprom soalnya datanya dikombinasikan dengan rtc dimmana data tersebut terus bertambah setiap harinya kemuadian di akumulasikan setiap mencapai satu minggu kemuadian satu bulan

Dika

Sm mas sy juga mau nyimpan data berdasarkan rtc jg

Somame Morianus Daely

mas, kenpa error ya mas, error “HAS NO MEMBER NAME”? mohon bantuannya mas

Fikri akbar

Mas aji.. maaf mau nnya.. sblmny kn eeprom setiap arduino berbeda”.. apa akibat klo menggunakan eeprom melebihi kapasitasnya yg sudah ditentukan mas.. apa kah arduino bisa eror permanen kah.. soalnya sya menampilkan data trus melakukan penambahan.. llu tiba”.. dirun.. lcd membaca perintahnya hanya satu perintah program saja.. padahal masih ada 2 lgi.. tolong penjelasanya mas.. fikro53.elektro45@gmail.com
Ini enak aktif sya.. terima kasih banget mas.. aji.. sukses slalu..

Fikri akbar

Makasih mas.. bner.. Alhamdulillah gk..
Satu lgi mas.. sy pernah diajarin tmen buat reset nilai yg ditampilkan di lcd.. lcd menampilkan respon pembacaan nilai sensor flow meter.. trus sya mau buat tombol reset untuk nilai pembacaan diLCD menjadi NOL.. apa mas pernah pake buat reset gk.. minta caranya mas.. sy dh semester 14.. dikit lgi mau DO.. sy dh punya programnya . Tpi sy rangakainya.. klo gk salah sy pake pin d10 trus di kamper ke ground .. tpi gg berhasil.. kynya ada yg kurang dri cara saya.. minta pengalamanya mas..

Sy pake (10, input_pullup)

Makasih mas

Dika

Mas ijin tanya klo data dari rtc buat d simpan d eeprom gmn ya?

Jody

Mas, mau nyimpan data dari rtc ke eeprom apa bisa?

46
0
Would love your thoughts, please comment.x
()
x