Membaca dan Menulis Data ke EEPROM Arduino – Seperti yang kita ketahui, mikrokontroller pada papan Arduino (Uno) menggunakan tipe ATMega328. Mungkin perlu saya jelaskan dulu bahwa Arduino bukanlah mikrokontroller. Arduino adalah papan elektronik yang berisi mikrokontroller, lengkap dengan sistem minimumnya supaya dapat bekerja. Nah, kebanyakan Arduino menggunakan mikrokontroller buatan Intel yaitu seri ATMega. Khusus untuk Arduino Uno, wa bil khususon lagi pada Arduino Uno Rev3, menggunakan tipe ATMega328. Sebenarnya Anda dapat menggantinya dengan tipe ATMega168 atau bahkan ATMega8. Ketiganya kakak beradik yang sama dari bentuk fisik dan jumlah kakinya. Yang membedakan adalah kapasitas RAM-nya. ATMega328 memiliki RAM 32Kb, ATMega18 punya 16kb. Nah, si bungsu ATMega8 kira-kira berapa RAM-nya ayo ..? 🙂
Membaca dan Menulis Data ke EEPROM Arduino
Back to topic, kali ini kita akan membahas tentang membaca dan menulis data ke EEPROM Arduino. Jika RAM bersifat volatile (hilang saat power supply dimatikan), maka EEPROM kebalikannya, yakni bersifat non volatile. Mikrokontroller ATMega328 memiliki EEPROM sebesar 1 Kb (ATMega128 dan ATMega8 512b). Cukup lumayan untuk menyimpan data settingan aplikasi atau konstanta program. Jangan bandingkan dengan flashdisk Anda yang bisa mencapai 128 Gb ya? Itu mah jauh perbandingannya, 1Kb vs 128 Gb.
Untuk membaca dan menulis data ke EEPROM ke mikrokontroller ATMega di papan Arduino sangat mudah sekali karena sudah disiapkan library khusus dari yang empunya Arduino. Nama library tersebut adalah <EEPROM.h>. Dengan library ini Anda cukup menuliskan beberapa baris kode saja untuk urusan handling EEPROM karena semuanya sudah dikerjakan oleh library itu sendiri. Sangat sangat membantu untuk meringankan beban Anda. Jika Anda pernah menulis program C untuk ATMega menggunakan CodeVision AVR atau AVR Studio, Anda akan tahu yang saya maksud he he he.
Dalam library EEPROM ada dua fungsi utama yang digunakan untuk membaca dan menulis data ke EEPROM yaitu :
– EEPROM.write (addr, val) –> untuk menulis data ke EEPROM. Parameter ‘addr’ adalah alamat EEPROM mulai dari 0 s/d 1023, sedangkan parameter ‘val’ adalah nilai/data yang berada dalam alamat EEPROM tersebut. Karena lebar data hanya 8 bit maka data yang ditampung hanya dapat bernilai 0 s/d 255. Saya akan menjelaskan lebih detail mengenai hal ini di bawah.
– EEPROM.read(address) –> untuk membaca/mengambil data dari EEPROM. Parameter ‘address’ merupakan alamat EEPROM yang akan dibaca.
Just simple as possible, right? Anda hanya perlu ‘menghafal’ dua function di atas jika berhubungan dengan EEPROM. Dan jangan lupa untuk mendefinisikan library <EEPROM> di ujung paling atas dari sketch Anda.
Biar lebih paham, mari kita mempraktekkan dua function di atas dalam sebuah sketch (program Arduino) di bawah ini. Tapi sebelumnya, sebaiknya Anda membuat prototipe rangkaian berikut sebagai bahan praktek. Anda cukup menyediakan 1 bh Arduino Uno, 1 bh potensiometer dan 3 bh kabel jumper. Perhatikan gambar di bawah
Berikutnya adalah menulis sketch berikut di IDE Arduino dan mengunggahnya ke Arduino Uno Anda.
#include <EEPROM.h> int address = 0; byte value; int addr = 0; void setup() { Serial.begin(9600); } void loop() { int val = analogRead(0) / 4; EEPROM.write(addr, val); address=addr; value = EEPROM.read(address); Serial.print(address); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); address = address + 1; if (address == 512) address = 0; addr = addr + 1; if (addr == 512) addr = 0; delay(500); }
Inti dari sketch di atas adalah membaca tegangan analog di pin A0, menuliskan hasilnya di EEPROM (dibagi 4 dulu supaya dapat disimpan di EEPROM), membacanya kembali dari EEPROM dan mengirim data terbaca ke serial port agar dapat dilihat di laptop melalui aplikasi terminal client (jendela Serial Monitor Arduino atau bisa juga menggunakan aplikasi hyper Terminal)
Perhatikan baris 1. Baris ini adalah untuk mendefiniskan library EEPROM ke dalam sketch (wajib ada). Baris 14 untuk membagi data tegangan analog dengan angka 4. Mengapa dibagi 4? Karena kita tahu bahwa resolusi pembacaan tegangan analog di pin analog (A0 s/d A5) adalah 10 bit sedangkan lebar data EEPROM adalah 8 bit (lagi-lagi silahkan baca di bawah untuk keterangan lebih detail mengenai ini). Baris 15 untuk menulis data hasil pembacaan sensor ke EEPROM dan baris 17 s/d 18 adalah membaca kembali data yang sudah ditulis di EEPROM dan menyimpannya ke variabel ‘address’. Baris berikutnya (20 s/d 23) adalah untuk mengirim pembacaan data EEPROM ke laptop melalui port USB (virtual serial port) sedangkan baris 25 s/d 31 untuk membatasi alamat EEPROM yang akan diisi datanya. Saya harap Anda sudah paham mengenai cara membaca dan menulis data ke EEPROM Arduino dari penjelasan dan contoh sketch di atas. Bagi yang masih belum paham, silahkan isi komentar di bawah, saya akan menjawabnya secepat mungkin.
Pada bagian artikel terakhir ini, saya akan menjelaskan tentang parameter ‘alamat’ atau ‘address’ dan ‘val’ atau value/nilai/data dari EEPROM. Saya akan jelaskan ilustrasi yang mendekati gambaran fisik sebuah EEPROM dalam mikrokontroller pada umumnya. Perhatikan gambar di bawah
Pada dasarnya, sebuah EEPROM adalah sebuah register bertingkat yang memiliki alamat yang didalamnya ada sebuah data. Anda dapat membayangkan ‘register’ adalah sebuah lemari pakaian dengan rak bertingkat. Tiap rak tersebut berisi jenis pakaian yang berbeda. Jika rak adalah ‘alamat’ lemari, maka jenis pakaian yang berada di dalam rak adalah ‘data’-nya. Perhatikan kembali gambar di atas. Kolom dari atas ke bawah mulai angka 0 … 1023 adalah alamat EEPROM, sedangkan baris yang yang menyamping adalah datanya. Kolom bisa Anda bayangkan sebuah rak lemari, sedangkan baris yang menyamping adalah isi data alias jenis pakaiannya. Karena mikrokontroller ATMega adalah mikrokontroller berbasis 8 bit maka, mau tau mau desain fisik EEPROM juga akan mengikuti 8 bit (jangan bandingkan dengan Windows Anda yang 32bit/64bit ya 🙂 , untuk hal ini Arduino masih kalah jauh 😀 ). Apakah itu 8 bit? Yakni angka biner dari 0000 0000 sampai dengan 1111 1111 alias 0 s/d 255. Saya harap Anda sudah mulai terbuka jalan pikirannya 🙂 . Jika belum, silahkan isi komentar 🙂
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
maaf mas, (masih ingat dengan saya kan??). ilmu saya ttg mikrokontroler masih sangat minim mas.
saya masih bingung mas, apa gunanya EEPROM pada mikrokontroler dan untuk apa menuliskan data di dalamnya???
ini mas rahmat hasan yg di FB bukan? 🙂 EEPROM itu kyk RAM aja mas, tp datanya ngga hilang kalo power supply-nya mati. Karena karakteristiknya yg demikian, maka EEPROM ini cocoknya untuk menyimpna data settingan suatu sistem yg harus diload jika sistem mengalami restart. Contoh : kalo mas rahmat bikin bikin pengontrol alat pake sms, kalo alat restart kan harusnya nomor hape pengendalinya (master) ga boleh hilang. Nah data2 seperti ini cocoknya disimpan di EEPROM.
Semoga membantu …
Assalamualaikum, mas mw tanya!!
saya lg membuat alat ukur tinggi badan, menggunakan arduino uno, HC-SR04 dan lcd 16×2,, saya kesulitan pada coding nya,, selalu eror pas mw compile.. Mohon Info nya mas coding bwt alat ukur tinggi badan
errornya apa mas?
mas sy baru belajar epprom sy mau tanya tanya bisa mas? sy bingung kenapa tetbaca nya angka 0 semua ya…makasi mass
barangkali memang isinya 0 semua mas. Coba di-write dulu dengan sembarang data kmd di-read
sudah sy cb mas tapi keluarnya waktu sy auto keluarnya error address knp ya mas? sy buat mencoba merubah odo meter mobil..trima kasi y mas atasbpenjelasannya
errornya apa ya?
Untuk pembatasan alamat eeprom yang di isi tiu harus 512 gitu mas atau bebas
disesuaikan kapasitas eeprom sesuai tipe mikrokontrollernya
Pagi mas ajie..
saya lagi bikin project arduino turn on lamp via sms with arduino..
saya sedang coba ketika arduino mati dan dinyalakan lagi, menampilkan settingan yg kita set sebelum mati..
untuk yang sekarang jika arduino mati, lampu nyala lagi semua..
mohon pencerahannya..terima kasih
simpan status lampu di memori mas (bisa flash ROM/EEPROM). Kmd nyalakan lampu sesuai data di memori
Mas sya mau tanya sya mau nyimpan data rtc sensor suhu sma kelembaban udara itu dngan wifi shield gmna yaa mas supya datanya bisa tersimpan di eeprom wassalamualaikum wr wb
wifi shield di sini fungsinya sebagai server atau client mas? trus eeprom-nya dimana (server/client)? atau mungkin bisa digambarkan topologinya dulu
Sebagai client mas wifi shieldnya mas,sbgai client mas eepromnya gmna mas masuk diarduino trus cra baca dtanya klo masuk dieeprom gmna yaa mas
ini njelasinnya akan panjang mas, saya sarankan lihat program contoh pemakaian WIFI shield di menu File | Examples | WIFI di software IDE Arduino. Ntar liahat di bagian client.read. Datanya masuk ke situ. Tapi ini tergantung sisi server juga. Di server harus pake webserver.
Nah, setelah di dapat datanya, tinggal pake cara di artikel di atas mas. Data dari client.read dimasukkan (di-copy) ke variabel ‘Val’
Mas ems wifi shieldnya sbgai server mas trus eepromnya server gmna mas
kalo akses eeprom caranya sama, cuma nanti penyajian datanya ke client yang berbeda. Cara termudah ditampilkan secara ‘html’ (kayak web browser biasa bacanya).Coba mas buka contoh program di menu File | examples | WifiWebServer, ntar lihat bagian client.println (); Nah, di dalam tanda kurung () itulah data eeprom ditampilkan. Ntar bagian client, cara bacanya pake client.read().
Satu alamat satu data ya, mas? Dan datanya harus biner? kalo huruf bisa?
satu alamat satu data
kalo data yang disimpan di eeprom tetap biner. Jagi gini, kalo di level programming mungkin bisa jadi yg disimpan adl variabel char (atau string), tp di level eeprom, data tetap akan dikonversi ke biner. Contoh : jika yg dismpan di level programming adl huruf ‘a’, maka yg disimpan di eeprom adl 0110 0001 (61H) yg merupakan kode ASCII dr huruf ‘a’.
mas saya mau nanya, saya buat webserver pake HTML arduino, di dalemnya ada program buat masukin data, data yang di isi angka 1-100, saya buat tombol simpan, semua sudah jadi, cuman kenapa ya mas itu data tidak bisa berubah yang ingin di simpan, apa eeprom saya rusak ?
terima kasih
sblm mengambil jesimpulan eeprom-nya rusak, sebaiknya troubleshoot terlebih dulu. Contoh :
1. Bikin program kecil utk mengakses eeprom (R/W), bisa pakai program di atas. Kalo data udah bisa masuk ke eeprom/bisa dibaca dr eeprom, berarti eeprom tidak rusak.
2. Bila eeprom tidak rusak, coba bikin program sederhana untuk mensimulasikan aksi webserver, tp jangan ke eeprom dulu (misalnya output dikeluarkan ke pin digital atau ke led).
Dengan demikian mas bisa yakin titik kesalahan program/sketch ada dimana
pak maaf mau tanya soalnya masih pemula, baris 25-31 maksudnya gimana ya? kok ada data “512”, bukannya kalau arduino uno alamat EEPROM sampai 1024? kasus dalam percobaan ini saya pakai arduino mega 2560 pak… terimakasih sebelumnya
iya mas, kapasitas EEPROM arduino Uno adalah 1K (1024), sedangkan arduino mega adalah 4k (4048). Untuk baris 25-31 sebenarnya sudah saya jelaskan di artikel, yakni sekedar untuk membatasi alamat eeprom yg mau diisi (sekedar simulasi saja)
Mas saya mau tanya2 tentang arduino bisa mas? Saya ada project monitoring baterai, nah saya mau tanya, arduino tadi merekam sebagai data loggernya , gimana caranya mas? Mohon dibalas😄
bisa disimpan di eeprom (2Kb) atau di sdcard pake sdcard shield
Maaf mas tanyak nih,,
Saya ada project, semisal, saya gunakan sensor suhu, dg program biasa, suhu tersebut akn terbaca terus menerus,dan datanya keluar sperti biasa,
Saya cobak pakek cara diatas hasilnya gk sesuai yang saya inginkan, yg saya inginkan,
Data dari sensor” itu di simpan setiap 1 jam sekali, kemudian setelah beberapa jam, saya ingin membaca data” yg disimpan setiap jamnya sebelumnya,
Gmna mas caranya mungkin ada solusi,
Trimakasih
Mungkin ada sedikit modifikasi program tersebut?
kalo pake cara di atas, tipe datanya harus byte (8 bit), sedangkan yang mas inginkan (data suhu) tipe datanya apa? float bukan?
maaf mas mau nannya nih
aku ada program akses contol masuk ruangan memakai finger dan arduino, nah aku mau mengambil data dari finger itu gmna yah mas? apa bisa pakai eeprom ini?
mohon bantuannya
kalo EEPROM itu buat tempat penyimpanan data mas. Kalo ambil data dari sensor fingerprint tentunya harus dilihat dulu datasheet sensor tersebut baru didesain cara menanganinya menggunakan Arduino
gimana yah mas caranya ?
apa harus menggunakan komponen lain ?
ngga, kan eeprom ada di internalnya arduino
Mas apakah eeprom dapat di gunakan untuk merekam putaran motor servo dan dan nantinya dapat di putar otomatis sesuai dengan gerakan yg tadi di lakukan. Intinya “merekam gerakan motor servo” apakah itu bisa di lakukan dengan eeprom..?
Mohon pencerahanya mas..?
Ma`lum ane pemula , mas
Hehehe
bisa mas, cuma nanti yang perlu diperhatikan ukuran data yang disimpan dibanding dg ukuran eeprom itu sendiri. Jangan sampai data yang disimpan melebihi ukuran eeprom.
Berikutnya yang perlu diperhatikan supaya motor servo dapat berputar sesuai data record di eeprom, tentunya harus ada script handler-nya ya. Jadi menulis data ke eeprom aja tidak cukup, harus ditulis script/sketch arduino-nya supaya membaca (READ) data eeprom kemudian mengeluarkan bit kendali ke pin/port motor servo
om, cara membuat tombol mencetak angka 1-5 trus di stop tanpa diulang gmna ya?
mencetak angka di printer atau gimana?
iya om. mencetak print k lcd om. mau berhentiin g bisa, dari 1%-100% kmudian ngulang lagi dr awal. 🙁 ini mksd hati mau d stop setelah sampek 100
ya berarti sisi software-nya dong, bisa pake perulangan for atau while
Maaf mas numpang tanya + minta ilmunya.
Oya apakah eeprom bisa untuk merekam gerakan motor servo dan dapat di putar kembali, sesuai dengan gerakan yang tadi di record kan, mohon minta penjelasannya dan caranya.
mas apakah eeprom bisa di gunakan untuk menyimpan data analog yang outputannya hanya dalam satuan mili detik./ kurang dari satu detik , bagai mana contoh program agar data tersebut tertampil di lcd walau sudah tidk ada inputan ke adc. mohon bantuan nya mas
bisa mas.
contoh programnya bisa digabungkan antara sketch di atas dg tutorial di http://saptaji.com/2015/07/23/mudahnya-bikin-hello-world-di-lcd-16×2-dengan-arduino/
mas mau tanya, saya sedang membuat projek dengan rfid, nantinya saya mau ada kaya database gitu… saya beli micro sd adapter yg catalex v1.0.11 cman kendalanya rfid dan micro sd nya sama2 ngambil pin SPI. apakah disini eeprom bisa dijadikan sebagai datalog tanpa menggunakan micro sd?? Trus apa micro sd bisa ngambil pin yg lain selain pin 13,12,11,10 (SPI). plis d bales mas 😀
cara termudah, ganti rfid module yg support serial.
kalo misalnya tetap mau pake SPI sebenarnya bisa aja, caranya tinggal mengatur pin SS (Save Select) masing-masing device. Device yang dipilih, SS-nya dibikin logic ‘0’ supaya data SPI mengalir ke device tersebut, device yg satunya SS-nya dikasih logic ‘1’ supaya ga aktif SPI-nya. Jadi untuk multiple SPI client, cara transfer datanya dibikin bergantian dengan slave selection lewat pin SS.
Untuk EEPROM bisa digunakan sebagai datalog, tapi kapasitas storage-nya sangat terbatas. Contoh Arduino Uno hanya punya EEPROM sebesar 1Kb
saya masih belum paham banget sih mas… cman saya akan usaha cari dulu untuk bahan penggunaan SPI multilpe cliennya mas…. oh mas kalau komunikasi seria itu maksudnya bisa menghubungkan 2 board pada satu fungsi ya mas?
komunikasi serial pengertian umumnya adalah komunikasi antar dua device menggunakan protokol serial asinkron pada level TTL/RS232. Mungkin bisa dikatakan ‘menghubungkan 2 board’ tapi tidak satu fungsi, hanya sebagai sarana komunikasi saja
makasih mas penjelasan dan respon yang sangat cepat dari mas. saya seneng banget projek saya bisa tidak deathlock karena penjelasan dari mas…. Mas boleh kasih contoh real untuk penyimpanan datanya g mas… saya masih belum paham tentang write dan readnya mas
penyimpanan data dimana mas? eeprom atau sd card?
untuk yang eeprom nya mas, saya belum paham untuk address, trus kalau mau pakai eeprom apa menggunakan tambahan alat lagi g mas??
address itu alamat penyimpanan data mas. Kalo dianalogikan eeprom sebagai sebuah rak lemari, address itu kayak ‘rak atas’, ‘rak bawah’, ‘rak tengah’ dst. Kalo ‘data’ eeprom adalah isi dari rak tersebut.
eeprom sebenarnya ada dua tipe mas, eeprom internal dan eksternal. Untuk arduino (yg sy bahas di artikel di atas) sudah disediakn eeprom internal sebesar 1 kb
Assalamualaikum. Mas saya pingin mbuat rangkaian push on switch 3 channel saja. Rangkaiannya sederhana jika push on no 1 ditekan led 1 nyala. jika push on no 1 dilepas led tetap menyala. Rangkaian dan sketchnya saya udah mengerti,Mas. Mau saya jika disaat terakhir saya tekan posisi push on (push on no berapa saja). Kemudian modul arduino saya matikan catu dayanya. Keesokan harinya modul arduino saya nyalakan. Posisi led tadi tetap sama pada saat terakhir saya matikan. Itu ditambahi menu eepromnya ya,Mas? Caranya gimana,Mas. Mau saya nyimpan posisi push on yg terakhir tadi Mas. Terima kasih atas jawabannya.
iya mas, kurang lebihnya seperti itu. Kalo teknisnya, mas bikin variabel yang akan diupdate nilainya tiap ada penekanan tombol. Variabel ini langsung disimpan ke eeprom misal pada alamat xx. Ntar di void setup () tambahkan script yg me-load nilai eeprom di alamat xx. Nilai tadi keluarkan ke pin led. Jadi efeknya led akan nyala/mati sesuai status yg terakhir
Dear Mas Ajie,
saya mau tanya, kan saya punya modul wifi esp8266. nah setiap mau konek ke wifi, dia konek ke ssid,user&password menggunakan static text di script arduino.
Yg mau ditanyakan, bisakah ssid,user&pass dimasukkan ke eeprom? dan kira2 metode efektif buat memasukannya kesitu via apa ya? misal via sms input atau keyboard input(tanpa komputer)
Terima kasih.
bisa mas.
metode paling efektif dan profesional lewat webbrowser mas. Jadi mas bikin settingan default dulu, ntar di web address default tsb bisa ganti settingan. Setelah di setting, restart, otomatis semua settingan akan ganti ke yang baru
Mas ajie, trimakasih penjelasan diatas sya sangat tertarik. Sya punya project blum beres2. Bagai mana cara mengcopy skech controller yg sudah jadi. Berharap sya dapat menggandakan kontroller tsb. Jenis board yg digunakan mirip dengan arduino. Apakah ada aplikasi khusus, yg bisa copas langsung secara keseluruhan. Trims untuk berbagi
coba pake EZP2010 atau pake yg paling mudah pake USBASP
Mau tanya mas, jika isi data pada address yang akan disimpan isinya sama apakah akan ditulis ulang?
misalkan isi dari address (0)=12 dan data yang akan ditulis kembali ke address (0) = 12,istilahnya di rewrite. apakah tidak akan mengurangi performa memory jika looping terus menerus dan melakukan rewrite?
mas gimana menyimpan data terus dapat mennampilkan kembali dlm wkt 30 hari sebelumnya atau sebulan yg lalu gitu?
berarti harus ada modul rtc-nya (Real Time Clock). Cuma yg harus diperhatikan, EEPROM didesain untuk menyimpan data yang sifatnya kecil ya (karena ukurannya kecil, hanya 512 byte), kurang cocok untuk data yang sifatnya logger spt di kasus anda.
untuk menampilkan data yg disimpan 30 hari sebelumnya, berarti mas harus ikut menyertakan waktu saat penyimpanan data, sehingga suatu saat dapat diambil lagi (query) berdasarkan data waktu tersebut. Data waktu diambil dari RTC
Mas kalo saya mau menyimpan data tinggi badan (datanya bentuk integer), terus dapat ditampilkan lagi di LCD jika ditekan suatu tombol, berarti baris 20-23 diganti perintah
LCD. Setcursor(12,0);
LCD. Print(tinggi); begitu?
Apa data integer bisa disimpan di EEPROM?
berarti harus ada function untuk pendeteksian tombol, mb. Jika tombol ditekan, tampilkan data ke lcd. Kalo bingung coba bikin flowcahrtnya dulu
Apa data integer bisa disimpan di EEPROM? –> bisa, pake library EEPROMEx
Sudah saya tambahkan function buat tombolnya (sudah di pullup); tombol 8 untuk save data, tombol 9 untuk read data eeprom
{if(digitalRead(8)==LOW)
{int val=tinggi;
EEPROM. write(addr,val)
Lalu function pembatasan alamat eeprom
}}
{if(digitalRead(9)==LOW)
{address=tinggi;
address=addr;
Value=EEPROM.read(address);
LCD. setCursor(10,0);
LCD. Print (tinggi);
}}
yg muncul saat tombol 9 ditekan nilai tinggi, tetapi saat direset dan ditekan lagi tombol 9(read eeprom) nilai yg muncul bukan tinggi lagi. Padahal seharusnya ketika alat direset nilai yg tersimpan di EEPROM tetap ya?
Trus untuk library EEPROMEx sebaiknya ditaruh sebelah mana? Mohon penjelasannya
yang pertama yg perlu diperhatikan adalah handling penekanan tombolnya. Tombol itu ketika ditekan pasti akan menimbulkan efek bouncing. Ini tidak bisa dihindari karena memang koneksi fisiknya demikian. Tapi secara software masih bisa diakali dengan memberikan delay selama beberapa milidetik (satu detik lebih aman) sebelum diambil datanya. Kalo saya lihat script di atas, blm ada bouncing handling-nya. di paling atas sketch. Contoh: http://saptaji.com/2016/11/02/contoh-arduino-bacasimpan-longint-float-string-ke-eeprom/
yang kedua, function write ke EEPROM juga butuh waktu, sebaiknya kasih delay sekitar 100-500 ms untuk memastikan fungsi ini benar-benar berjalan
library EEPROMEx tinggal dipanggil aja dengan menambahkan #include
saya sudah menambahkan delay pada perintah write eeprom nya. Dan juga sudah ditambahkan library eepromex, tetapi hasilnya tetap, saat direset dan kemudian ditekan lagi tombol untuk read eeprom, nilai yg muncul adalah angka 0, bukan nilai tinggi yang sudah disimpan. Bagaimana seharusnya, apakah ada perintah yg salah?
Mohon penjelasannya, terimakasih.
gini mb langkah-langkah buat troubleshoot-nya:
1. bikin sketch sederhana untuk write to eeprom.
2. buat sketch sederhana read eeprom
3. pastikan data yg ditulis pada langkah 1 terbaca pada langkah 2
4. bikin sketch untuk menangangi tombol. Pastikan arduino sudah bisa mendeteksi penekanan tombol
5. jika 4 langkah udah yakin sukses, baru digabungkan.
Gitu mb cara bikin sketch yg benar, step by step, biar ngga bingung sendiri. Semoga membantu
Mas, saya ingin menyimpan data waktu pemakaian lampu (menghitung life time lampu) sampai 5000 jam dengan interval pencatatan per-jam, apakah cukup dengan EEPROM atau butuh memori eksternal ?
kayaknya ngga cukup kapasitas EEPROM internalnya mb. Saran saya yang termudah dan termurah pake micro SD card (+modul) sebagai media storage eksternal
Mas mau tanya. Saya punya project robot wall follower pada labiri menggunakan arduino 1560. dengan tujuan utama mencari jalur terpendek. fungsi yang saya butuhkan ialah robot bisa menyimpan data dari pembacaan sensor ultrasonik ke dalam memori arduino, untuk proses pembelajaran. Apakah saya bisa menggunakan Lib. EEPROM arduino mega 2560 mas??
bisa mas.
Robotnya udah ada fungsi AI (Artificial Intellegence) ya mas, bagus banget mas …
mas saya mau tanya,,kan saya rencana mau buat jarvis di sepeda,saya menggunakan arduino buat kontrol nya mas,tapi masiih saya coba dengan led,saya coba nyalakan 4 buah led,,gimna caranya pas lampu di 3 sumber nya saya matikan trs saya tancep lagi dibisa nyala di 3lagi,,itu di tambahin eeprom nya di codingan arduino apa app inventor nya mas??,,saya menggunakan bluetooth hc-05
..mohon bimbimnganya..
di EEPROM-nya mas, jadi bikin satu variabel khusus untuk menyimpan status led. Setiap kali ada operasi ke variabel ini (hidup/matikan LED) simpan nilainya ke EEPROM
Mas saya mau tanya, saya ada project pakek rotary encoder buat hitung jumpah putaran motor untuk nentuin titik koordinat. Nah hasilnya mau saya simpen ke epprom, apakah bisa mas ?
sangat bisa mas
mas mau tanya, “512” diatas apakah sekedar perulangan untuk jumlah data yang masuk adalah sebanyak 512. mohon jawabannya mas. thx
angka 512 hanya sebagai contoh alamat eeprom aja mas. Secara tidak langsung juga data yang masuk sebanyak 512 juga
jika mau membatasi jumlah data sensor hanya sebesar contoh 127 byte.. gmn caranya ya mas ? apakah seperti contoh diatas, mohon bantuannya mas
kurang lebih sama dengan contoh di atas, cuma nanti pas mau ambil data, harus diperhatikan address-nya ya
Mohon pencerahan mas
Eeprom uno r3, itu bisa buat nyimpen data cacahan tidak? Misal jam 12.00 ada data yang masum 300, terus jm 13.00 data masuk 400, nah kedua data itu biar gak ilang, sekian trrimakasih
bisa mas, cuma gini, untuk data yang lebih besar dari 255 (8 bit) maka dibutuhkan library khusus semisal EEPROMEx.h. Contoh pemakaiannya bisa dibaca di http://saptaji.com/2016/11/02/membaca-dan-menyimpan-integer-float-dan-string-ke-eeprom-arduino/
hallo mas
saya mau belajar mengenai eeprom..langkah pertama gimana mas…apakah sama semua cara kerja dan membaca eeprom untuk handphone atau eeprom mobil…terimakasih
langkah pertama bisa baca artikel di atas mas, yg kedua dipraktekkan teorinya.
Kalo eeprom pada prinsipnya semua sama cara kerjanya, yg membedakan kapasitasnya dan pinoutnya
maaf gan mau tanya. sya memiliki sebuah controller dilengkapi lcd, sekarang alat itu rusak, yg saya tanyakan apakah memungkinkan data dari controller tsb dipindahkan ke arduino. dikarenakan ic eeprom tsb sama yg digunakan pada arduino. trimakasih banyak atas waktunya.
kemungkinan besar tidak bisa mas, karena tiap controller pinoutnya beda. Kecuali jika controller tsb sama dg ic mikrokontroller arduino (atmega328 dan sejenisnya). EEPROM itu tempat menyimpan data mas, bukan menyiman program
mas itu kan di contoh nya menggunakan data analog, lalu bagaiamana cara nya menyimpan data digital, apakah cuma tinggal ganti aja analogRead nya jadi digitalRead ? lalu di hilangkan juga di bagi 4 (/4) nya ?
iya mas, kurang lebih begitu aja
assalamualaikum mas, apakah eeprom bisa digunakan untuk sensor MLX90614 output sensornya i2C.? sensor untuk temperatur dg sinar infrared
waalaikumsalam wr.wb
sebenarnya ga ada hubungan langsung antara sensor MLX90614 dengan eeprom, karena eeprom itu tempat penyimpanan data. Mau tipe data apapun bisa disimpan di eeprom pake library EEPROMEx.h (bisa googling dl atau bisa search artikelnya di blog sy ini)
makasih mas.
berarti list programnya sama ya mas?
kurang lebihnya sama
Assalamualaikum mas. Kalo pada alat saya sensornya hanya mlx90614 itu dg menggunakan atmega328 dg kapasitas 1KB eeprom. Maka berapa batas maksimal data terakhir yg bisa disimpan mas? Apakah bisa 7 data terakhir disimpan. ? Terimakasih mas
waalaikumsalam wr wb. Tergantung datanya mb. Contoh: kalo data yang disimpan adalah bertipe byte (8 bit atau angka 0-255) maka bisa ada 1024 data yg bisa disimpan. Kalo misalnya datanya adalah float 32 bit, berarti hanya ada 256 data yang bisa disimpan
mas saya mau tanya. saya dapat tugas untuk membuat program yang intinya adalah menulis data dari keyboard dan tersimpan ke eeprom. kalo program eeprom kebanyakan artikel memberikan contoh berupa value sedangkan data yang akanditulis ke eeprom berupa string (character, numeric, alphabet), nah program untuk membuat data string tersebut seperti apa? untuk yang keyboard karena di example library keyboard hanya dapat di aplikasikan pada arduino leonardo sedangkan saya mau menggunakan arduino uno. mohon solusinya!
arduino uno ga bisa buat baca keyboard (atau mouse) ya mas. Untuk keerluan semacam ini mau ngga mau harus pake leonardo atau pro micro (bisa di beli di sini).
yg kedua, untuk menyimpan data string ke eeprom sangat bisa, tapi nanti butuh bantuan library EEPROMEx.h. Contohnya bisa dibaca di sini
semoga membantu
Mas, mau tanya nih..kalau kita membaca resistansi menggunakan persamaan voltage divider dengan sistem multiplex (4 titik (relay) resistansi bergantian) di arduino. Bagaimana supaya yang dibaca gak double antara titik 1 dgn yg lainnya ?
Apa perlu variabel reset di setiap titik (R) di programnya ? mohon bantuannya mas, Saya buat terkadang dia masih membaca di titik (R) 1 padahal aktual relay sudah pindah ke titik (R) 2
bisa diupload gambar rangkaiannya mas? susah mencerna dr yg mas utarakan
mas, eeprom bisa gk buat nyimpen variable yg nilainya berubah
bisa mas, asal saat berubah di write ulang ke eeprom
mas, saya masih kurang ngerti dgn penjelasan mas tentang tegangan pin A0-A5 terbaca 10 bit, itu maksud nya tegangan real dri pin A0-A5 kan bisa berkisar 9v dc klo ngak salah, kan angka 9 masih masuk range 0-255, bisa di jelasin mas ?
jadi gini mas, di pin Analog (A0-A5) itu didalamnya ada ADC atau Analog to Digital Converter. Artinya, pin analog ini mampu mengubah tegangan analog menjadi bilangan digital representasinya. Nah, ADC di arduino (dalam hal ini adalah IC mikrokontroller atmega328 dan sejenisnya) memiliki resolusi ADC sebesar 10 bit, yang berarti memiliki rentang pembacaan digital dari angka 0-1023 (2^10 atau dua pangkat sepuluh). Jadi jangan salah konsep ya mas. Yg benar gini: – pin analog (A0-A5 pada arduino uno) hanya mampu menerima tegangan analog sebesar 0 – 5 VDC (bisa 0.6V, 2.3V, s/d 5.00V) – hasil pembacaan arduino berupa angka digital dengan… Read more »
ok mas. baru ngerti saya mas, thanks ya mas, infonya bermanfaat sekali
Selamat siang, Mas. Saya pengin membuat binary counter 8bit yang datanya bisa disimpan ke EEPROM internal. Ketika listrik mati, hitungan terakhir dari binary counter itu disimpan. Selain itu rangkaiannya dilengkapi dengan tombol up / down binary counter, satu tombol store dan 5 tombol memori. Boleh minta programnya? Terima kasih atas perhatiannya.
tinggal modif aja dari program di atas
Mas Aji, saya Sigit yang WA tadi, saya mau nanya, apakah dengan EEPROM ini saya bisa menyimpan data perhitungan yang melibatkan millis()? Saya membuat proyek untuk menghitung kecepatan jalan kaki, dengan menempatkan dua buah sensor dengan jarak 10 m. Waktu yang dibutuhkan orang dari dia mengaktifkan sensor 1 (IN) sampai sensor 2 (OUT) digunakan untuk membagi jarak sensor, maka akan didapatkan kecepatan. Nah saya ingin agar ketika ada 10 orang jalan beriringan masuk melalui sensor 1 hingga ke sensor 2, akan ditampilkan berurutan kecepatan dari orang ke-1 sampai orang ke-10. Apakah bisa menyimpan data seperti itu? Jadi ketika orang pertama… Read more »
bisa mas, cuma saya mau nanya dulu, kenapa datanya mau disimpan di eeprom? karena menurut saya tidak perlu disimpan ke eeprom cukup di variabel saja
Bisa ya mas? Karena saat ini saya baru bisa melakukan pengukuran kecepatan jalan jika yang masuk (IN) dan keluar (OUT) dari area scanning berjumlah 1 orang saja. Kalau dua orang atau lebih, hanya data orang terakhir saja yang valid alias terkalkulasi. Saya masih belum bisa menyimpan data satu demi satu jika orang yang discanning banyak
bisa mas, tergantung sama logika programnya aja (plus sensor tentunya). Coba dicek lg programnya atau kalo bingung coba bikin flowchartnya dulu
Saya memakai dua sensor, photoelectric tipe diffuse reflective mas..ketika ada objek melintas, sensor akan HIGH.
Nah saya masih belum bisa menemukan coding yang pas agar bisa digunakan untuk beberapa orang sekaligus yg masuk ke zona scanning (zona di antara dua sensor).
Bisa kasih saran mas buat coding nya bagusnya gimana ya? Makasih sebelumnya.
kalo berdiri sejajar memang ga bisa kedetect mas (yg kedetect hanya satu orang). Ini karena keterbatasan sensor, jadi sebagus apapun programnya kalo sensornya ada keterbatasan ya tetap aja ga bisa pake metode tersebut.
Saran sih pake kamera mas, dengan teknologi vision bisa mendeteksi wajah (face recognition). Mungkin pake metode ini bisa lebih valid, tapi memang agak rumit implementasinya
Iya mas, kmrn sempet kepikiran pake face recog juga, karena kalo cuma dua sensor pikir saya, gak mungkin bisa mendeteksi IN dan OUT harus orang yang sama (bisa jadi yang IN orang A yang OUT orang B jika di area scanning B mendahului A).
Kalo pake face recog, berbekal kamera webcam bisa gak ya mas?
Assalamualaikum, kak saya bisa tanya ga ya? sepertinya OOT hehe
saya mau buat program menggunakan password, sistem keamanan gitu.
Nah kalo kita masukin password sekali nanti sistem keamanan aktif terus, tapi kalo kita masukin password kedua kali nanti sistem keamanan non-aktif, begitu seterusnya. jadi password disini gunanya buat aktifin sama non-aktifin sistem keamanannya, dan kalo bisa cuma pake 1 password aja. kalo itu kira2 gimana ya?
Mohon bantuannya, terimakasih..
waalaikumsalam wr wb.
bisa aja, tinggal bikin semacam variabel flag yang berisi status keamanan terakhir. Habis masukin password, variabel flag ini langsung diubah nilainya dan sebaiknya disimpan ke eeprom
Assalamualaikum mas ajie, saya ingin membuat alarm dengan arduino uno, kira-kira ada referensi gak mas yang dapat saya baca untuk merealisasikan sistem tersebut? terima kasih sebelumnya mas
waalaikumsalam wr wb. Mungkin coba baca artikel berikut dulu alarm arduino
Baik mas… Terima kasih sebelumnya…
Mas saya numpang tanya.
Saya ingin membuat projek penghitung barang.
Dan saya ingin hasil hitungan terakhir agar tidak hilang dan terus menghitung dari hitungan yang terakhir di simpan. Dan jika ad pengambilan barang jadi nilai yang terakhir dapat di kurangi
Dengan jumlah barang yang diambil. Dan seterusnya .
Bgaimana cara.a mas. Mohon bantuan.a
simpan ke eeprom mas
Ma.af mas saya masih blum paham tntang EEPROM. Tolong bantu contohkan sperti ap scrip.a agar data yang terupdate dapat tersimpan?
di artikel di atas udah ada contohnya mas. Masih kurang jelaskah?
Keren, penjelasanya mudah dipahami
Mas numpang tanya,eeprom saya tidak bisa membaca bios spi 25 apa alatnya rusak,atau drivernya
wah sy kurang tau….
cuma bahasanya sy kok kurang paham ya? maaf, sepengetahuan sy, eeprom itu obyek controller (pasive device), jadi dia tidak bisa aktif membaca device lain. EEPROM hanya bisa dibaca dan ditulis, tidak bisa membaca dan menulis