2009.11.07 PROGMEMの使い方
電光掲示板のフォント用データなどたくさんのデータをあらかじめarduinoに記憶させて自由に使用できる便利な「PROGMEM」ですが、わかりやすい使い方がないので簡単にまとめ。
○ どうしてPROGMEMを使うのか
ArduinoはSRAMが小さいため、通常のintなどで大きな配列を作った場合、格納しきれず暴走する。
○ PROGMEMを使うには
#include <avr/pgmspace.h> これを最初に記入。
ちなみにpgmspace.hは\arduino\hardware\tools\avr\avr\include\avrの中にあります。(ややこしい)
詳しいことはそこに。
・SRAMに格納したい変数の宣言
dataType variableName[] PROGMEM ={xxxxx.xxxxx.....};
使用できるdataTypeは後述のリファレンスを参照。
通常のintやcharだとコンパイルエラーはでないようですが通常の動作をしません。
(prog_uint16_t のような感じ)
variableName[]は配列の名前。もちろん通常の配列のようにhoge[x][x]のような2次配列でも問題なく使用できる。
・データを読み出す方法
pgm_read_word_near(address)を使用する。(16バイト読み出す場合)
この関数に渡すのはアドレスであることに注意!
といってもポインタが使えるので名前の前に「&」をつければ問題なし。
prog_uint16_t array[5] PROGMEM ={0,1,2,3,4}と宣言した場合
num = pgm_read_word_near(&array[n])とすればOK。
dataTypeによって関数が変わるのでリファレンスかpgmspace.hを参照。
pgm_read_byte_near(address)//1byte読み込み
pgm_read_word_near(address)//2byte読み込み
pgm_read_dword_near(address)//3byte読み込み
参考にしたサイト
Arduino日本語リファレンス PROGMEM
○ どうしてPROGMEMを使うのか
ArduinoはSRAMが小さいため、通常のintなどで大きな配列を作った場合、格納しきれず暴走する。
○ PROGMEMを使うには
#include <avr/pgmspace.h> これを最初に記入。
ちなみにpgmspace.hは\arduino\hardware\tools\avr\avr\include\avrの中にあります。(ややこしい)
詳しいことはそこに。
・SRAMに格納したい変数の宣言
dataType variableName[] PROGMEM ={xxxxx.xxxxx.....};
使用できるdataTypeは後述のリファレンスを参照。
通常のintやcharだとコンパイルエラーはでないようですが通常の動作をしません。
(prog_uint16_t のような感じ)
variableName[]は配列の名前。もちろん通常の配列のようにhoge[x][x]のような2次配列でも問題なく使用できる。
・データを読み出す方法
pgm_read_word_near(address)を使用する。(16バイト読み出す場合)
この関数に渡すのはアドレスであることに注意!
といってもポインタが使えるので名前の前に「&」をつければ問題なし。
prog_uint16_t array[5] PROGMEM ={0,1,2,3,4}と宣言した場合
num = pgm_read_word_near(&array[n])とすればOK。
dataTypeによって関数が変わるのでリファレンスかpgmspace.hを参照。
pgm_read_byte_near(address)//1byte読み込み
pgm_read_word_near(address)//2byte読み込み
pgm_read_dword_near(address)//3byte読み込み
参考にしたサイト
Arduino日本語リファレンス PROGMEM
2009.10.13 3x3x3 LEDマトリクスシールド売ってマス
以前blogに書いた私の名刺基板「3x3x3LEDCUBEシールド」をガリレオセブンにて販売しています。
よければ一度ご覧ください。
ガリレオセブン
http://www.galileo-7.com/?pid=15858461
あと名刺基板残りがほぼありません。
なのでMTM04で楽しみになさっていた方がいらっしゃったらすみません。
新作名刺間に合うようになるべくがんばります!
またまた、MTM04での展示申し込みをしました。
Exp.として共同展示?みたいなことをする予定です。
MTMではありえない空間をつくれればと思っていますのでお楽しみに!
詳しくは後日!
よければ一度ご覧ください。
ガリレオセブン
http://www.galileo-7.com/?pid=15858461
あと名刺基板残りがほぼありません。
なのでMTM04で楽しみになさっていた方がいらっしゃったらすみません。
新作名刺間に合うようになるべくがんばります!
またまた、MTM04での展示申し込みをしました。
Exp.として共同展示?みたいなことをする予定です。
MTMではありえない空間をつくれればと思っていますのでお楽しみに!
詳しくは後日!
2009.09.26 Make:08 4x4x4 LED CUBEシールドについて
サンプル用のスケッチを書き込んで光らせるとこんな感じに!
サンプルスケッチをアップロードしました。
詳しいことは以下のサイトにあります。必ず確認して下さい。
http://sites.google.com/site/hsgwprojects/make_ledcube
2009.09.26 Make:08に記事を書きましてよ!
なんと!Make:日本版 Vol.08にて記事を執筆させて頂きました!
MTM03で持っていた 4x4x4 LED CUBEシールドの作り方を細かく解説しています。
またまた、ちょこっとlilypadカバンの写真も載っています。
書店で立ち読みもおkですが少しばかり細かく書いてあるので、ご購入頂いて、作って頂けると嬉しいです。
たけしお兄ちゃんの記事と並んでるので是非是非。
見所はテクノ手芸部さんの記事だと思います。あの発想はなかった!すごい!
MTM03で持っていた 4x4x4 LED CUBEシールドの作り方を細かく解説しています。
またまた、ちょこっとlilypadカバンの写真も載っています。
書店で立ち読みもおkですが少しばかり細かく書いてあるので、ご購入頂いて、作って頂けると嬉しいです。
たけしお兄ちゃんの記事と並んでるので是非是非。
見所はテクノ手芸部さんの記事だと思います。あの発想はなかった!すごい!
![]() | Make: Technology on Your Time Volume 08 (2009/09/28) オライリー・ジャパン 商品詳細を見る |


