Hallo , apa kabar untuk para Visitor !!!
Kembali lagi kepada saya , semoga kawan-kawan disana dan dimanapun ada berada dalam keadaan sehat selalu
Disini saya akan menyampaikan sedikit tentang penyimpanan data pada EEPROM .
Semoga Ini bermanfaat bagi kawan-kawan !!!
Tujuan
2. Kenapa pada program penulisan data hanya dibatasi sampai 512 ? Jelaskan !
4. Buatlah kesimpulan dari praktikum ini !
Disini saya akan menyampaikan sedikit tentang penyimpanan data pada EEPROM .
Semoga Ini bermanfaat bagi kawan-kawan !!!
Tujuan
- Mampu membuat program untuk melakukan penyimpanan data pada EEPROM
- Mampu membuat program untuk melakukan pembacaan data dari memori EEPROM
- Komputer : 1 set
- Arduino Uno : 1 pcs
- Kabel USB tipe B : 1pcs
- Baca dan Tulis Memory EEPROM
Pada percobaan kali ini akan dibuat program yang berfungsi sebagai antar muka penanganan memory EEPROM . Antarmuka program menggunakan komunikasi serial. Melalui Serial terminal 1 atau apliksasi lainya. User dapat melakukan perintah baca dan tulis dari atau ke memory EEPROM.
- Prosedur :
- Tuliskan sintak program ini pada Arduino IDE , kemudian lakukan kompilasi dan uploud 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 clean 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();
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<512;i++)
{
EEPROM.write(i,0);
}
}
void writeEEPROM()
{
int address;
do
{
Serial.print("Address : ");
address=readValFromSerial();
if(address>512)
{
Serial.println("Address 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("Address 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);
}
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 clean 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();
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<512;i++)
{
EEPROM.write(i,0);
}
}
void writeEEPROM()
{
int address;
do
{
Serial.print("Address : ");
address=readValFromSerial();
if(address>512)
{
Serial.println("Address 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("Address 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);
}
- Setelah itu , uploud program ke arduino
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 ?
==> Pada percobaan ketika dimasukkan perintah WRITE kemudia dimasukan nilai 100 kemudian DATA 10, ketika dimatikan dan dinyalakan kembali nilai yang terbaca tetap sama, dan data tidak hilang.
==> Pada percobaan ketika dimasukkan perintah WRITE kemudia dimasukan nilai 100 kemudian DATA 10, ketika dimatikan dan dinyalakan kembali nilai yang terbaca tetap sama, dan data tidak hilang.
2. Kenapa pada program penulisan data hanya dibatasi sampai 512 ? Jelaskan !
==> Karena,
kapasitas memory pada
EEPROM di Arduino hanya 512 Byte.
3.Kenapa
pada program alamat memori yang dapat ditulisi data hanya sampai 512 ? Jelaskan
!
==>Karena batas alamat yang mampu diterima oleh EEPROM hanya mulai dari 0 sampai 512 saja.
==>Karena batas alamat yang mampu diterima oleh EEPROM hanya mulai dari 0 sampai 512 saja.
4. Buatlah kesimpulan dari praktikum ini !
==> Kesimpulan dari praktikum ini adalah dengan menggunakan EEPROM kita dapat
menyimpan data yang tidak akan hilang meski power Arduino telah dimatikan.