EEPROM MEMORY

on Thursday 30 January 2014
TUJUAN :
1. Mampu membuat program untuk melakukan penyimpanan data pada memori eeprom.
2. Mampu membuat program untuk melakukan pembacaan data pada memori eeprom.

PERALATAN :
1. Komputer         : 1set
2. Arduino Uno       : 1pcs
3. Kabel USB tipe B       : 1pcs

PERCOBAAN :
8.1  Baca dan Tulis Memori EEPROM
Pada  percobaan  kali  ini  akan  dibuat  program  yang  berfungsi  sebagai  antarmuka penanganan memori eeprom. Antarmuka program menggunakan  komunikasi serial. Melalui serial terminal atau aplikasi lainnya, user dapat melakukan perintah baca dan tulis dari atau ke memori eeprom.

Prosedur :
1. Tuliskan sintaks program berikut ini pada Arduino IDE, kemudian lakukan kompilasi dan upload program ke mikrokontroller.
#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 operation"); 
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 Type Again !");
break;
while(command == 0);
int readCommandFromSerial() {
char stringFromSerial[10];
char data; 
int 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<255;i++) {
EEPROM.write(i,0);
void writeEEPROM() { 
int address; 
do{ 
Serial.print("Address : ");
address = readValFromSerial();
if(address>255) {
Serial.println("Addres maximal is 255 !, Please type again !"); 
while(address>255);
int data; 
do{ 
Serial.print("Data : ");
data = readValFromSerial();
if(data>512) {
Serial.println("Data maximal is 255 !, Please type again !");
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 255 !, 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);
}

Tugas dan Pertanyaan :
1.  Jalankan aplikasi  Serial  Monitor  pada  Arduino,  pastikan  konfigurasi  serial  monitor menggunakan  baudrate  9600  dan  pada  akhir  pengiriman  data  disertakan  karakter CR+LF.  Lakukan penulisan data pada memori alamat 100, dengan data bernilai 10. Kemudian  keluar  dari  program  dan  matikan  power Arduino  dan  nyalakan  kembali. Lakukan  pembacaan  data  pada  alamat  100,  berapakah  nilai  data pada  alamat  100  ? Apakah data yang dituliskan sebelumnya hilang ?
Data yang ada pada alamat 100 adalah 10, data yang dimasukkan pada alamat 100 tidak akan hilang walaupun kita keluar dari program dan mematikan power arduino.
Setelah mengetik kata “write”