PROGMEM prog_uint16_t charSet[] =
{ 65000, 32796, 16843, 10, 11234 }; prog_uchar signMessage[] PROGMEM = "I AM PREDATOR, UNSEEN COMBATANT."; unsigned int displayInt; char myChar; int k; displayInt = pgm_read_word_near(charSet + k); // 2バイト読み込み myChar = pgm_read_byte_near(signMessage + k); // 1バイト読み込み 文字列の配列をFlashメモリに配置する例です。 #include <avr/pgmspace.h> prog_char string_0[] PROGMEM = "String 0"; prog_char string_1[] PROGMEM = "String 1"; prog_char string_2[] PROGMEM = "String 2"; prog_char string_3[] PROGMEM = "String 3"; // Then set up a table to refer to your strings. PROGMEM const char *string_table[] = { string_0, string_1, string_2, string_3 }; char buffer[30]; // 文字列を格納するのに十分なサイズ void setup() { Serial.begin(9600); } void loop() { for (int i = 0; i < 4; i++) { // strcpy_Pで文字列をプログラム領域からRAM(バッファ)へコピー // キャストと逆参照が必要 strcpy_P(buffer, (char*)pgm_read_word(&(string_table[i]))); Serial.println( buffer ); delay( 500 ); } } F()マクロ Frashメモリの文字列にアクセスするためのマクロです。PROGMEMよりも簡単に、長い文字列を扱うことができます。 【例】 Flashメモリから文字列を取得して出力する例 void setup() { Serial.begin(9600); } void loop() { Serial.print( F("Hello World.") ); delay(1000); } [目次へ戻る] |
Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください
[ドキュメント一覧]