Açıklama
Verileri SRAM yerine flash (program) belleğinde saklayın. Bir Arduino kartında çeşitli bellek türlerinin bir açıklaması vardır.
PROGMEM
anahtar sözcüğü bir değişken değiştiricidir, yalnızca pgmspace.h dosyasında tanımlanan veri türleriyle kullanılmalıdır. Derleyiciye SRAM yerine normalde bu bilgiyi flash belleğe koymasını söyler.
PROGMEM, pgmspace.h kütüphanesinin bir parçasıdır. IDE'nin modern sürümlerine otomatik olarak dahil edilir. Bununla birlikte, 1.0 (2011) 'in altında bir IDE sürümü kullanıyorsanız, öncelikle kütüphanenizi çiziminizin en üstüne şu şekilde eklemeniz gerekir:
#include <avr/pgmspace.h>
PROGMEM
tek bir değişken üzerinde kullanılabilse de, genellikle bir dizide genellikle en kolay olan daha büyük bir veri bloğuna sahipseniz (veya mevcut tartışmamızın ötesinde başka bir C ++ veri yapısı).
PROGMEM
kullanımı iki aşamalı bir prosedürdür. Verileri Flash belleğe aldıktan sonra, program belleğindeki verileri tekrar SRAM'a okumak için pgmspace.h kütüphanesinde de tanımlanan özel yöntemler (işlevler) gerekir, böylece onunla yararlı bir şey yapabiliriz.
Sözdizimi
const dataType variableName[] PROGMEM = {data0, data1, data3…};
PROGMEM değişken bir değiştirici olduğundan, nereye gitmesi gerektiği konusunda zor ve hızlı bir kural olmadığına dikkat edin, bu nedenle Arduino derleyicisi aynı zamanda eşanlamlı olan aşağıdaki tanımların tümünü kabul eder. Bununla birlikte, deneyler, Arduino'nun çeşitli versiyonlarında (GCC versiyonuyla ilgili), PROGMEM'in başka bir yerde değil, bir yerde çalışabileceğini göstermiştir. Aşağıdaki "string table" örneği Arduino 13 ile çalışacak şekilde test edilmiştir. Değişken adından sonra PROGMEM eklenirse IDE'nin önceki sürümleri daha iyi çalışabilir.
const dataType variableName[] PROGMEM = {}; // use this form
const PROGMEM dataType variableName[] = {}; // or this one
const dataType PROGMEM variableName[] = {}; // not this one
Parametreler
dataType
: İzin verilen veri türleri: herhangi bir değişken türü.
variableName
: veri dizinizin adı.