私はアルドゥイーノに新たなんだと、現在私が動的メモリを節約することができるように変数を格納するためにPROGMEMを使用することを学びます。私はPROGMEMを使用して保存するこれらの3つの変数を含む13の変数を持っています。?
const unsigned int raw_0[62] PROGMEM = {2600,850,400,500,400,500,450,850,450,850,1350,850,450,450,400,500,400,450,450,400,450,450,450,450,400,450,900,850,900,850,900,450,450,850,900,850,900,850,450,450,900,450,400,450,400,900,450,450,450,400,450,450,450,450,400,450,450,450,450,400,450,};
const unsigned int raw_1[60] PROGMEM = {2600,850,450,450,450,450,450,850,450,850,1350,850,500,400,450,400,450,450,450,450,400,450,450,450,400,450,900,850,900,900,850,450,450,850,850,900,900,900,400,450,900,450,450,400,450,850,450,450,450,450,400,450,450,450,450,400,450,450,850,};
const unsigned int raw_a[100] PROGMEM = {3500,1700,400,450,450,1250,450,400,450,400,450,400,500,400,450,400,450,400,450,400,450,450,400,400,500,400,450,400,450,1300,400,450,450,400,450,400,450,400,450,400,450,400,500,350,500,400,450,400,450,1300,400,400,500,400,450,400,450,400,450,450,400,450,450,400,450,400,450,400,450,400,450,450,400,450,450,400,450,1250,450,400,450,400,500,400,450,400,450,400,450,400,450,400,450,1300,450,400,450,1250,450,};
ここで変数を格納テーブルです - :ここに は私が保管し、私の機能でそれを使用する変数の例のいくつかはあります。 Arduinoのウェブサイトからこのアプローチを学びます。 https://www.arduino.cc/en/Reference/PROGMEM。
const unsigned int* const myTable[13] PROGMEM = {
raw_0,
raw_1,
raw_2,
raw_3,
raw_4,
raw_5,
raw_6,
raw_7,
raw_8,
raw_9,
raw_a,
raw_b,
raw_c};
私の問題は、raw_1やraw_aなどのPROGMEMを使用してこれらの変数を取得するにはどうすればいいですか? これは私がやったことですが、それはうまくいきませんでした: -
unsigned int * ptr = (unsigned int *) pgm_read_word (&myTable [1]);
irsend.sendRaw(ptr,62,38);
彼らは、Stringまたはcharデータ型を使用しますが、私の場合、私は配列の整数を使用し、私が見つけた例のほとんど。
それにエラーをコンパイルするときにエラーを受信した方法が、 'ボイドmySendRaw(IRsend&、CONST unsigned int型*、unsigned int型、unsigned int型)' 'uint16_t {別名unsigned int型}' から 'に[-fpermissive] 無効変換の初期化引数2 const unsigned int型は、*」[-fpermissive] – ngeri
私はそれが役立つはず、明示的なキャストを追加しました。 – KIIV
明示的なキャストを追加した後は正常に機能しています。 StackOverflowの制限(私はstackoverflowので初心者だ)ので、私は投票することはできません。どうもありがとう。 – ngeri