PRATIKUM 8
EEPROM MEMORY
TUJUAN :
Peralatan :
1. Komputer : 1 set
2. Arduino Uno : 1 pcs
3. Kabel USB tipe B : 1 pcs
PERCOBAAN :
Pada percobaan kali ini akan dibuat program yang berfungsi
penanganan memori eeprom. Antarmuka program menggunakan
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.
1. Tuliskan
sintaks program berikut ini
pada Arduino IDE,
kemudian lakukan kompilasi dan upload program ke mikrokkontroler.
#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;
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;
}
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);
}
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
pembacan data pada alamat 100, berapakah nilai data pada
alamat 100 ? Apakah data yang dituliskan sebelumnya hilang ?
Jawab : Nilai data
EEPROM pada alamat 100 adalah 10. Data atau nilai yang di tuliskan di EEPROM
tidak hilang ketika keluar dari program atau mematikan power arduinonya karena
pada alamat EEPROM tidak di beri sintak clear.
Jawab : Sebenarnya
tergantung pada arduinonya ada kapasitas memori EEPROM hanya 512 byte seperti
arduino Lylipad,diecimila dan ada juga kapasitas memori EEPROM sampai 1024
seperti arduino Uno
Jawab :
a. Pada saat data ditulskan
di EEPROM maka data akan menyimpan sehingga tidak hilang walaupun power
arduinonya di matikan.
b. Data EEPROM tidak
tersimpan apabila alamat data melebihi kapasitas memori EEPROMnya
Tidak ada komentar:
Posting Komentar