PRAKTIKUM_8

13
PRAKTIKUM 8 EEPROM MEMORY TUJUAN : Mampu membuat progr am untuk melakukan penyimpanan data pad a memori eeprom. Mampu membuat progr am untuk melakukan pembacaan data dari m emori eeprom. PERALATAN : 1. Komputer : 1 s et 2. Arduino Uno : 1 pcs 3. Kabel USB tipe B : 1 pcs

description

ok

Transcript of PRAKTIKUM_8

Page 1: PRAKTIKUM_8

PRAKTIKUM 8

EEPROM MEMORY

TUJUAN :

1. Mampu membuat progr am untuk melakukan penyimpanan data pad a memori eeprom.

2. Mampu membuat progr am untuk melakukan pembacaan data dari m emori eeprom.

PERALATAN :

1. Komputer : 1 s et

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 Termina l atau aplikasi lainnya, user dapat melakuka n perintah baca dan

tulis dari atau ke memori eeprom.

Prosedur :

1. Tuliskan sintaks p rogram berikut ini pada Arduino IDE, kemudian lakukan

kompilasi dan uplo ad 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 opera tion");

Serial.println("write : For write

data to EEPROM");

Serial.println("read

: For read data from EEPROM");

Serial.println("clear : Forclear all data

in EEPROM");

Serial.println("exit : For exit from program");

}

void loop() { int command;while(!exitProgram) { do {

Page 2: PRAKTIKUM_8

Serial.print("Type Command >> "); while(Serial.available()==0); command = readCommandFromSerial();

Modul Praktikum Mikrokontr oler - Eko RudiawanJurusan Teknik ElektroPoliteknik Negeri Batam 58

Page 3: PRAKTIKUM_8

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{

Page 4: PRAKTIKUM_8

command = 0;}

Modul Praktikum Mikrokontr oler - Eko RudiawanJurusan Teknik ElektroPoliteknik Negeri Batam 59

Page 5: PRAKTIKUM_8

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 !");

Page 6: PRAKTIKUM_8

}

void readEEPROM() {

Modul Praktikum Mikrokontr oler - Eko RudiawanJurusan Teknik ElektroPoliteknik Negeri Batam 60

Page 7: PRAKTIKUM_8

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

}

Tugas dan Pertanyaa n :

1. Jalankan aplikasi S erial Monitor pada Arduino, pastikan konfigu rasi Serial

Monitor menggunakan baud rate 9600 dan pada akhir pengiriman data disertakan

karakter CR + LF. Lakukan penulisan data pada memori alamat 100, dengan data

bernilai 10. Kemudian kel uar dari program dan matikan power Arduino dan

nyalakan kembali. Lakukan pembacaan data pada alamat 100, berapak ah nilai data

pada alamat 100 ? Apaka h data yang dituliskan sebelumnya hilang ?

2. Kenapa pada progra m penulisan data hanya dibatasi sampai 512 ? Jelaskan !

3. Kenapa pada progr am alamat memori yang dapat ditulisi data h anya sampai 512 ?

Jelaskan !

4. Buatlah kesimpulan dari praktikum ini !

Modul Praktikum Mikrokontr oler - Eko Rudiawan

Page 8: PRAKTIKUM_8

Jurusan Teknik ElektroPoliteknik Negeri Batam 61