Anda di halaman 1dari 4

PRAKTIKUM 8

EEPROM MEMORY
TUJUAN :
1. Mampu membuat program untuk melakukan penyimpanan data pada memori eeprom.
2. Mampu membuat program untuk melakukan pembacaan data dari memori eeprom.

PERALATAN :
1. Komputer

: 1 set

2. Arduino Uno

: 1 pcs

3. Kabel USB tipe B : 1 pcs

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 mikrokontroler,
#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");

Modul Praktikum Mikrokontroler - Eko Rudiawan


Jurusan Teknik Elektro
Politeknik Negeri Batam
58

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; 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;

Modul Praktikum Mikrokontroler - Eko Rudiawan


Jurusan Teknik Elektro
Politeknik Negeri Batam
59

} 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 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 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);
}

Modul Praktikum Mikrokontroler - Eko Rudiawan


Jurusan Teknik Elektro
Politeknik Negeri Batam
60

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 ?
Jawab : nilai data pada alamat 100 adalah 10, dan data yang dituliskan TIDAK
HILANG
2. Kenapa pada program penulisan data hanya dibatasi sampai 512 ? Jelaskan !
Jawab : Sebenarnya maksimal 1023. Itu tergantung dari kita yang ingin
membatasinya.
3. Kenapa pada program alamat memori yang dapat ditulisi data hanya sampai 512 ?
Jelaskan !
Jawab : Karena pada Arduino ATmega328 sintaks nya hanya dibatasi sampai <512
dan artinya kita hanya memiliki 511 addrees data yang dapat kita isi dengan datadata tertentu
4. Buatlah kesimpulan dari praktikum ini !
Jawab : Data yagn telah kita tulis tidak akan hilang walaupun kita mematikan
sumber tegangan pada Arduinonya, karena data tersebut akan tersimpan di memori
Arduino.

Modul Praktikum Mikrokontroler - Eko Rudiawan


Jurusan Teknik Elektro
Politeknik Negeri Batam
61

Anda mungkin juga menyukai