Apa itu PROGMEM?
Baca Data Dari PROGMEM – PROGMEM pada Arduino adalah singkatan dari “Program Memory”. Ini adalah area memori non-volatile pada mikrokontroler Arduino yang digunakan untuk menyimpan program dan data yang tidak berubah selama program dijalankan.
PROGMEM biasanya digunakan untuk menyimpan data yang besar seperti array, string, atau bitmap, dan dapat diakses oleh program untuk membaca nilai-nilai data tersebut. Namun, karena data yang disimpan di PROGMEM tidak dapat diubah selama program dijalankan, pengaksesan data dari PROGMEM memerlukan perintah yang khusus.
Cara Baca
Untuk dapat baca data dari PROGMEM Arduino, Anda perlu menggunakan fungsi pgm_read_byte()
atau pgm_read_word()
tergantung pada tipe data yang Anda simpan di PROGMEM. Karena Anda menyimpan array string dengan panjang karakter 10, maka Anda dapat menggunakan pgm_read_byte()
untuk membaca setiap karakter.
Berikut adalah contoh kode yang dapat Anda gunakan untuk membaca string dari PROGMEM dan mencetaknya di Serial Monitor:
const char monthsOfTheYear[13][10] PROGMEM = { " ", "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" };
void setup() {
Serial.begin(9600);
}
void loop() {
String myString = "";
for (int i = 0; i < 10; i++) {
char c = pgm_read_byte(&(monthsOfTheYear[2][i]));
if (c == '\0') break;
myString += c;
}
Serial.println(myString);
delay(1000);
}
Output yang dihasilkan dari program tersebut adalah:
Februari
Februari
Februari
...
Penjelasan kode program:
Baris kode tersebut melakukan pembacaan karakter dari array monthsOfTheYear
yang disimpan di dalam program memory (PROGMEM) dengan menggunakan fungsi pgm_read_byte()
.
Pada setiap iterasi loop, karakter yang dibaca diambil dari indeks ke-i pada array monthsOfTheYear[2]
dan disimpan ke dalam variabel c
. Kemudian, dilakukan pengecekan apakah karakter tersebut adalah karakter null (\0
) yang menandakan akhir dari string. Jika iya, maka loop dihentikan menggunakan perintah break
.
Karakter yang terbaca pada setiap iterasi loop selanjutnya ditambahkan ke dalam variabel myString
menggunakan operator +=
. Setelah selesai membaca seluruh karakter, variabel myString
yang berisi string “Februari” dicetak di Serial Monitor.
Baca juga: Penjelasan Serial.print(F()) Pada Arduino
Demikian contoh penggunaan PROGMEM pada Arduino untuk menghemat memori program. Dengan memahami penggunaan fitur ini, kita dapat membuat program yang lebih efisien dan optimal dalam penggunaan memori pada mikrokontroler Arduino. Semoga artikel Cara Baca Data Dari PROGMEM Arduino ini bermanfaat.