大人の科学マガジン vol.27 「ジャパニーノ」(その4)P.O.Vライブラリ
Posted by arms22 on 2010年06月06日

Japanino付録のP.O.V用にスクロールとスイング、フレームタイムの自動更新、非同期動作に対応したライブラリを作ったよ。P.O.Vまわりのコードをライブラリにすることでスケッチがすっきりするよ。このライブラリを使えば自分が書きたいスケッチに専念できるよ。そこそこ汎用的に作ってあるので、JapaninoのP.O.V以外でも使えると思うよ。うまく改良すれば16ドット幅のP.O.Vや回転するP.O.Vなんかにも対応できるはず。
ライブラリのインストール
次のURLからライブラリをダウンロードして、Arduinoのライブラリフォルダ(OSXの場合 ~/Documents/Arduino/libraries、Windowsの場合¥My Documents¥Arduino¥libraries)にコピーしてください。
JapaninoPOV-001
http://code.google.com/p/arms22/downloads/detail?name=JapaninoPOV-001.zip
サンプルスケッチ
#include <JapaninoPOV.h>
#define LEDPIN 7 // どのピンからLEDをつなぐか
#define SWPIN 6 // スイッチをつなぐピン
#define WIDTH 20 // 表示する幅
JapaninoPOV pov(LEDPIN,SWPIN);
//JapaninoPOV pov(LEDPIN);
// ビットマップ(画像)を定義
byte bitmap[] = {
0b00000000,
0b01000001,
0b01111111,
0b01000001,
0b00000000,
0b00000000,
0b00001110,
0b00011111,
0b00111111,
0b01111110,
0b00111111,
0b00011111,
0b00001110,
0b00000000,
0b00000000,
0b00111111,
0b01000000,
0b01000000,
0b00111111,
0b00000000,
};
void setup()
{
pov.setWidth(WIDTH);
pov.setFrameBuffer(bitmap,sizeof(bitmap));
//pov.setFrameTime(60);
//pov.setFrameTimeAutoDetect(true);
//pov.setScrolling(true);
pov.begin();
}
void loop()
{
//表示を更新する
pov.update();
}
スウィングさせて使う場合、コンストラクタのSyncPin引数を省略するか、setSyncPin関数をコールします。
JapaninoPOV pov(LEDPIN);
フレームタイムを設定したい場合、setFrameTime関数をコールします。引数はミリ秒です。
pov.setFrameTime(60);
フレームタイムを自動更新したい場合、setFrameTimeAutoDetect関数をコールします。SyncPinのLowからLowまでの時間を2で割った値を自動的に設定します。
pov.setFrameTimeAutoDetect(true);
スクロールさせたい場合、setScrolling関数をコールします。
pov.setScrolling(true);
大人の科学マガジン Vol.27(8ビットマイコン) (Gakken Mook)
posted with amazlet at 10.06.06
大人の科学マガジン編集部
学習研究社
売り上げランキング: 460
学習研究社
売り上げランキング: 460
Prototyping Lab
―「作りながら考える」ためのArduino実践レシピ
―「作りながら考える」ためのArduino実践レシピ
posted with amazlet at 10.06.06
小林 茂
オライリージャパン
売り上げランキング: 3043
オライリージャパン
売り上げランキング: 3043
Ads by Google
4 Comments
すみません、フレームタイムって何に影響するのでしょうか?
setWidthで指定したドット数分のデータを、
何ミリ秒で表示させるか指定します。
例えばsetWidth(20)としてsetFrameTime(1000)とすると、
1000ミリ秒(1秒)かけて、20dotのデータを表示します。
まぁ、ゆっくりバーを動かしてもそれなりに見えるようになります。
何ミリ秒で表示させるか指定します。
例えばsetWidth(20)としてsetFrameTime(1000)とすると、
1000ミリ秒(1秒)かけて、20dotのデータを表示します。
まぁ、ゆっくりバーを動かしてもそれなりに見えるようになります。
リプライありがとうございました。
ライブラリ早速使わせていただきました。
↓これです。
http://skt48.cocolog-nifty.com/blog/2010/06/post-d951.html
スケッチがとても簡単になって助かりました。
ライブラリ早速使わせていただきました。
↓これです。
http://skt48.cocolog-nifty.com/blog/2010/06/post-d951.html
スケッチがとても簡単になって助かりました。
"じゃんけん"、なかなかいいですね。
うまくJapanino同士通信させて対戦できると楽しいのかも。。
うまくJapanino同士通信させて対戦できると楽しいのかも。。
Leave a reply
該当の記事は見つかりませんでした。