Konstanta di Ruang Flash AVR

Dalam beberapa kasus, konstanta, khususnya yang berupa array, perlu ditempatkan di ruang Flash, mengingat ruang SRAM relatif kecil. Sebagai contoh, AVR ATmega16 memiliki ruang Flash 16k, sementara SRAM 1k.

Berikut adalah sebuah contoh program dimana konstanta, berupa array, ditempatkan di ruang Flash, kemudian dibaca dan ditampilkan di layar LCD:

#include <LiquidCrystal.h>

LiquidCrystal lcd(24,25,26,28,29,30,31);

PROGMEM const char x[] = { 'a','b','c' };

void setup()
{
  pinMode(23,OUTPUT);
  lcd.begin(16,2);
  lcd.clear();
  lcd.print("Hello");
  delay(2000);
  lcd.clear();
  for ( int i = 0; i < sizeof(x); i++ ) {
    char ch = pgm_read_byte(&x[i]); 
    lcd.print(ch); 
  }
}

void loop()
{

}