なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

大人の科学マガジン vol.27 「ジャパニーノ」(その4)P.O.Vライブラリ

Posted by arms22 on 2010年06月06日 4  0

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)
大人の科学マガジン編集部
学習研究社
売り上げランキング: 460



Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ
小林 茂
オライリージャパン
売り上げランキング: 3043



Ads by Google

4 Comments

初心者 says..."No title"
すみません、フレームタイムって何に影響するのでしょうか?
2010.06.08 23:04 | URL | #SFo5/nok [edit]
arms22 says..."Re: No title"
setWidthで指定したドット数分のデータを、
何ミリ秒で表示させるか指定します。
例えばsetWidth(20)としてsetFrameTime(1000)とすると、
1000ミリ秒(1秒)かけて、20dotのデータを表示します。
まぁ、ゆっくりバーを動かしてもそれなりに見えるようになります。
2010.06.09 00:34 | URL | #- [edit]
初心者 says..."使わせていただきました"
リプライありがとうございました。
ライブラリ早速使わせていただきました。
↓これです。
http://skt48.cocolog-nifty.com/blog/2010/06/post-d951.html
スケッチがとても簡単になって助かりました。
2010.06.16 23:11 | URL | #SFo5/nok [edit]
arms22 says..."Re: 使わせていただきました"
"じゃんけん"、なかなかいいですね。
うまくJapanino同士通信させて対戦できると楽しいのかも。。
2010.06.18 22:33 | URL | #- [edit]

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。