Udah seminggu kagak posting nih.. Rada kangen juga nih. Kali ini, saya akan mem-posting simulasi EEPROM MEMORY dengan cara menyimpan alamat dan data dari IDE ke dalam Arduino. Tujuan dari simulasi ini adalah untuk melakukan pembacaan data dari MEMORI EEPROM dan dapat melakukan penyimpanan DATA pada MEMORI EEPROM. Alat yang kita gunakan pada simulasi ini yaitu Laptop/PC, Arduino Uno, dan Kabel USB tipe B. Program ini menggunakan KOMUNIKASI SERIAL menggunakan SERIAL TERMINAL 1 atau aplikasi yang lainnya. Pada program ini USER dapat memerintah perintah BACA dan TULIS, DARI atau KE MEMORI EEPROM. Mari simak langkah-langkah di bawah ini :
- Ayo ketik sintaks coding program ini di Arduino IDE anda yang telah terinstall di Laptop/PC sobat semua ...
#include
<EEPROM.h> boolean exitProgram = 0;
void setup() {
Serial.begin(9600);
|
|
|
|
Serial.println("=========
EEPROM
|
Access Via
|
Serial
|
==== ====");
|
Serial.println("Type this command
|
to execute
|
EEPROM opera
tion");
|
|
Serial.println("write : For write
|
data to
EEPROM");
|
|
Serial.println("read
|
: For read
|
data
|
from
|
EEPROM");
|
|
Serial.println("clear
|
: For
|
clear all
|
data
|
in EEPROM");
|
|
Serial.println("exit
|
: For
|
exit
|
from
|
program");
|
|
}
|
|
|
|
|
|
void loop() { int command;
while(!exitProgram) { do {
Serial.print("Type Command >> "); while(Serial.available()==0);
command = readCommandFromSerial();
switch(command) {
case 1 : Serial.println("Write
EEPROM Selected"); writeEEPROM();
break;
case 2 : Serial.println("Read
EEPROM Selected"); readEEPROM();
break;
case 3 : Serial.println("Clear
EEPROM Selected"); clearEEPROM();
Serial.println("Clear EEPROM Finished"); break;
case 4 : Serial.println("Exit
From Program"); exitProgram = 1;
break;
default : Serial.println("Wrong
Command, Please Ty pe Again !"); break;
}
}
while(command == 0);
}
}
int readCommandFromSerial()
{ char stringFromSerial[10]; char data;
nt command;
int countData = 0; for(int i=0;i<10;i++)
{
stringFromSerial[i]=0;
}
while(true) { if(Serial.available()) {
data =
Serial.read(); Serial.write(data); if(data=='\n') {
break;
}
else { if(data!='\r') {
stringFromSerial[countData]
= data; countData++;
}
}
}
}
if(strcmp(stringFromSerial,"write")==0){ command = 1;
}
else if(strcmp(stringFromSerial,"read")==0){ command = 2;
}
else if(strcmp(stringFromSerial,"clear")==0){ command = 3;
}
else if(strcmp(stringFromSerial,"exit")==0){ command = 4;
}
else{
command = 0;
}
return command;
}
int readValFromSerial() { char stringFromSerial[10]; char data;
int val;
int countData = 0; for(int i=0;i<10;i++)
{
stringFromSerial[i]=0;
}
while(true) { if(Serial.available()) {
data =
Serial.read(); Serial.write(data); if(data=='\n') {
break;
}
else { if(data!='\r') {
stringFromSerial[countData]
= data; countData++;
}
}
}
}
sscanf(stringFromSerial,"%d",&val); return
val;
}
void clearEEPROM() { for(int i=0;i<512;i++) {
EEPROM.write(i,0);
}
}
void writeEEPROM() { int address;
do {
Serial.print("Address : "); address =
readValFromSerial(); if(address>512) {
Serial.println("Addres
maximal is 512 !, Please type again !");
}
}
while(address>512); int data;
do {
Serial.print("Data : "); data = readValFromSerial(); if(data>512) {
Serial.println("Data
maximal is 512 !, Please type ag ain !");
}
}
while(data>512); EEPROM.write(address,data); Serial.println("EEPROM Write Success !");
}
void readEEPROM() {
int address; do {
Serial.print("Address : "); address =
readValFromSerial(); if(address>512) {
Serial.println("Addres
maximal is 512 !, Please type again !");
}
}
while(address>512);
int data =
EEPROM.read(address); Serial.print("Data in Address ");
Serial.print(address,DEC); Serial.print(" : "); Serial.println(data,DEC);
- Jangan Lupa melakukan COMPILE dan UPLOAD, untuk menjalankan program tersebut di Ardunino.
- Bukalah Serial Monitor untuk mengketik (menulis) data dari IDE yang akan di tujukan pada Arduino Uno menggunakan MEMORY EEPROM.
- Ketikkan Write untuk menulis alamat EEPROM, Setelah itu matikan atau lepas Power Supply Arduino Uno dan tutup Serial monitor.
- Sambungkan lagi Power Supply Arduino dan bukalah Serial Monitor, dan ketikan Read (Baca) untuk melihat apakah data yang telah kita simpan tadi, masih tersimpan di EEPROM Arduino atau tidak.
- Jika TERSIMPAN maka tampilannya akan sepertin ini.
EEPROM pada Arduino Uno ini menggunakan AT-MEGA 328, dimana pada AT-MEGA 328 memiliki karakteristik kapasitas EEPROM-nya bisa mencapai 512 byte dan 8 bit, dan memiliki data SRAM sampai dengan 512 byte. Dia juga mampu bekerja pada tegangan 2,7 VDC - 5,5 VDC.
Penampakan AT-MEGA 328
Fungsi EEPROM pada Arduino adalah sebagai penyimpan data dari IDE ke atau menuju dari Arduino. Jadi, ketika Supply Arduino di matikan dan di hidupkan kembali maka data yang telah di simpan pada EEPROM masih TERSIMPAN, kecuali ada Perintah CLEAR sebelumnya. Jika, ada Perintah CLEAR maka data yang telah di tulis (disimpan) tadi akan terhapus.
Mengapa sih DATA yang di simpan pada EEPROM maksimal harus 512 byte? Karena, batas memory pada EEPROM pada Arduino
adalah 512 Byte. Arduino uno menggunakan mikroprosesor dengan tipe ATMEGA328
dan memiliki kapasitas EEPROM sampai dengan 512 byte dan 8 bit dan memiliki
data SRAM internal 512 byte.
Mengapa sih ALAMAT pada EEPROM hanya di batasi sampai dengan 512 byte? Karena, ATmega 328 juga mempunyai 2 KB SRAM dan 1 KB EEPROM (yang
dapat dibaca dan ditulis (RW/read and written) dengan EEPROM library) dan
batas alamat memory dari EEPROM hanya antara 0(nol)- sampai dengan 512 saja.
0 komentar:
Posting Komentar