google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

LOLシールドを使った LEDアレイプロジェクターの製作

 なんだか大げさなタイトルですが、実は大したことやってません。

 以前Arduino の LOLシールドを作ったのですが、高輝度のLEDを使ったので直視できないほどの光量があります。この光をレンズで投影すれば、プロジェクターが作れそうだなーと思っていたので、やってみました。

 先に完成品の写真です。

▼LEDアレイプロジェクタ
自作のLEDプロジェクタ
 名前は立派なのに貧乏臭い外観ですみません。手っ取り早く段ボール箱で作りました。大きなレンズから緑の光が出ているのが謎めいていて、かっこいいです。

▼内部
LEDプロジェクタ内部
 ArduinoとLOLシールドが入っています。パーツの固定には緑の養生テープを使っています。

LEDプロジェクタ内部、レンズは虫メガネ
 レンズは虫メガネで、このレンズは口径62mm、倍率2倍の物。焦点距離を測ってみると約125mmでした。プロジェクターと言うからには、フォーカシング機構を付けたいところですが、面倒なので約2m先にピントが合う位置で固定しています。

▼投影している様子
投影している様子
 これは投影距離が約 80cmの状態で、投影サイズは40cm×21cmになりました。単色光なので一枚レンズでも比較的シャープに結像しています。

 距離を増やせば投影サイズはもっと大きくなりますが、その分暗くなります。投影距離によりますが、昼間の部屋の明るさだと苦しくて、少し暗くする必要があります。

◆動画  (?rel=0)

 マトリックスが 9x14 と粗いので表現力はイマイチですが、動画が表示出来るので面白いです。イベントなどで使うと目立つと思います。それに何しろ安く作れます。

 ここまでの工作は小学生の夏休みの工作レベルですが、実はプログラムにちょっと手を入れています。

▼文字の反転
 LOLライブラリを使って表示させているのですが、そのままでは裏文字になってしまいます。ということで、何らかの方法で表示をひっくり返さないといけません。やり方はいろいろありそうですが、判り易い方法ということで、ライブラリのcherliplexing.cpp の下記の部分を修正しました。

const LEDPosition PROGMEM ledMap[126] = {
/*
// Normal (for direct LED view)
L(13, 5), L(13, 6), L(13, 7), L(13, 8), L(13, 9), L(13,10), L(13,11), L(13,12), L(13, 4), L( 4,13), L(13, 3), L( 3,13), L(13, 2), L( 2,13),
L(12, 5), L(12, 6), L(12, 7), L(12, 8), L(12, 9), L(12,10), L(12,11), L(12,13), L(12, 4), L( 4,12), L(12, 3), L( 3,12), L(12, 2), L( 2,12),
L(11, 5), L(11, 6), L(11, 7), L(11, 8), L(11, 9), L(11,10), L(11,12), L(11,13), L(11, 4), L( 4,11), L(11, 3), L( 3,11), L(11, 2), L( 2,11),
L(10, 5), L(10, 6), L(10, 7), L(10, 8), L(10, 9), L(10,11), L(10,12), L(10,13), L(10, 4), L( 4,10), L(10, 3), L( 3,10), L(10, 2), L( 2,10),
L( 9, 5), L( 9, 6), L( 9, 7), L( 9, 8), L( 9,10), L( 9,11), L( 9,12), L( 9,13), L( 9, 4), L( 4, 9), L( 9, 3), L( 3, 9), L( 9, 2), L( 2, 9),
L( 8, 5), L( 8, 6), L( 8, 7), L( 8, 9), L( 8,10), L( 8,11), L( 8,12), L( 8,13), L( 8, 4), L( 4, 8), L( 8, 3), L( 3, 8), L( 8, 2), L( 2, 8),
L( 7, 5), L( 7, 6), L( 7, 8), L( 7, 9), L( 7,10), L( 7,11), L( 7,12), L( 7,13), L( 7, 4), L( 4, 7), L( 7, 3), L( 3, 7), L( 7, 2), L( 2, 7),
L( 6, 5), L( 6, 7), L( 6, 8), L( 6, 9), L( 6,10), L( 6,11), L( 6,12), L( 6,13), L( 6, 4), L( 4, 6), L( 6, 3), L( 3, 6), L( 6, 2), L( 2, 6),
L( 5, 6), L( 5, 7), L( 5, 8), L( 5, 9), L( 5,10), L( 5,11), L( 5,12), L( 5,13), L( 5, 4), L( 4, 5), L( 5, 3), L( 3, 5), L( 5, 2), L( 2, 5),
*/
// Swap UP Down (for Lenz projection)
L( 5, 6), L( 5, 7), L( 5, 8), L( 5, 9), L( 5,10), L( 5,11), L( 5,12), L( 5,13), L( 5, 4), L( 4, 5), L( 5, 3), L( 3, 5), L( 5, 2), L( 2, 5),
L( 6, 5), L( 6, 7), L( 6, 8), L( 6, 9), L( 6,10), L( 6,11), L( 6,12), L( 6,13), L( 6, 4), L( 4, 6), L( 6, 3), L( 3, 6), L( 6, 2), L( 2, 6),
L( 7, 5), L( 7, 6), L( 7, 8), L( 7, 9), L( 7,10), L( 7,11), L( 7,12), L( 7,13), L( 7, 4), L( 4, 7), L( 7, 3), L( 3, 7), L( 7, 2), L( 2, 7),
L( 8, 5), L( 8, 6), L( 8, 7), L( 8, 9), L( 8,10), L( 8,11), L( 8,12), L( 8,13), L( 8, 4), L( 4, 8), L( 8, 3), L( 3, 8), L( 8, 2), L( 2, 8),
L( 9, 5), L( 9, 6), L( 9, 7), L( 9, 8), L( 9,10), L( 9,11), L( 9,12), L( 9,13), L( 9, 4), L( 4, 9), L( 9, 3), L( 3, 9), L( 9, 2), L( 2, 9),
L(10, 5), L(10, 6), L(10, 7), L(10, 8), L(10, 9), L(10,11), L(10,12), L(10,13), L(10, 4), L( 4,10), L(10, 3), L( 3,10), L(10, 2), L( 2,10),
L(11, 5), L(11, 6), L(11, 7), L(11, 8), L(11, 9), L(11,10), L(11,12), L(11,13), L(11, 4), L( 4,11), L(11, 3), L( 3,11), L(11, 2), L( 2,11),
L(12, 5), L(12, 6), L(12, 7), L(12, 8), L(12, 9), L(12,10), L(12,11), L(12,13), L(12, 4), L( 4,12), L(12, 3), L( 3,12), L(12, 2), L( 2,12),
L(13, 5), L(13, 6), L(13, 7), L(13, 8), L(13, 9), L(13,10), L(13,11), L(13,12), L(13, 4), L( 4,13), L(13, 3), L( 3,13), L(13, 2), L( 2,13),

/*
// Rotate 180 degree
L( 2, 5), L( 5, 2), L( 3, 5), L( 5, 3), L( 4, 5), L( 5, 4), L( 5,13), L( 5,12), L( 5,11), L( 5,10), L( 5, 9), L( 5, 8), L( 5, 7), L( 5, 6),
L( 2, 6), L( 6, 2), L( 3, 6), L( 6, 3), L( 4, 6), L( 6, 4), L( 6,13), L( 6,12), L( 6,11), L( 6,10), L( 6, 9), L( 6, 8), L( 6, 7), L( 6, 5),
L( 2, 7), L( 7, 2), L( 3, 7), L( 7, 3), L( 4, 7), L( 7, 4), L( 7,13), L( 7,12), L( 7,11), L( 7,10), L( 7, 9), L( 7, 8), L( 7, 6), L( 7, 5),
L( 2, 8), L( 8, 2), L( 3, 8), L( 8, 3), L( 4, 8), L( 8, 4), L( 8,13), L( 8,12), L( 8,11), L( 8,10), L( 8, 9), L( 8, 7), L( 8, 6), L( 8, 5),
L( 2, 9), L( 9, 2), L( 3, 9), L( 9, 3), L( 4, 9), L( 9, 4), L( 9,13), L( 9,12), L( 9,11), L( 9,10), L( 9, 8), L( 9, 7), L( 9, 6), L( 9, 5),
L( 2,10), L(10, 2), L( 3,10), L(10, 3), L( 4,10), L(10, 4), L(10,13), L(10,12), L(10,11), L(10, 9), L(10, 8), L(10, 7), L(10, 6), L(10, 5),
L( 2,11), L(11, 2), L( 3,11), L(11, 3), L( 4,11), L(11, 4), L(11,13), L(11,12), L(11,10), L(11, 9), L(11, 8), L(11, 7), L(11, 6), L(11, 5),
L( 2,12), L(12, 2), L( 3,12), L(12, 3), L( 4,12), L(12, 4), L(12,13), L(12,11), L(12,10), L(12, 9), L(12, 8), L(12, 7), L(12, 6), L(12, 5),
L( 2,13), L(13, 2), L( 3,13), L(13, 3), L( 4,13), L(13, 4), L(13,12), L(13,11), L(13,10), L(13, 9), L(13, 8), L(13, 7), L(13, 6), L(13, 5),
*/
};

 このテーブルでLEDの1番から126番までのLEDが、ピンマトリックスのどの位置に接続されているかが定義されています。つまり、この定義を変えれば裏文字に変更することが出来ます。

 Normal (for direct LED view) がオリジナルの状態で、Swap UP Down (for Lenz projection) がプロジェクターで使う場合(この記事の状態)、Rotate 180 degree は点対称の状態で、何かの時に使えるかも知れません。簡単に元に戻せるように、使わない定義は消さずにコメントアウトした状態で残しています。

▼ピンとLEDの関係
LOLシールドのLEDアサイン表
 LOLシールドのIOピンとLEDの接続については先人の方が書かれた記事が大変参考になります。ikkeiさんの記事にある回路図が判り易いのですが、私なりに作ってみたのが上の表です。なお、表の中の数字がLED番号を表します。

 12ピンの総当たりは12x11=132の組み合わせがあり、そこにLOLシールドの14x9=126個のLEDを置くわけですが、その対応関係は上の表のようになっています。黄色で塗った部分は素直な直交配置になっており、その外側の水色の部分では、対称な位置を番号が行ったり来たりするようにアサインされています。表の右下の空白は使われていない部分です。

◆まとめ
 手で持てるサイズの小さな箱から光が出て、文字や図形が次々と表示されるのは凄く不思議な感じがします。これ、5Vで0.12Aくらいしか電流を消費しないので、USBモバイルバッテリーで長時間動かすことが出来るはずです。

 LOLのライブラリには、この記事の動画に出て来たもの以外に、テトリスやピンポンゲームなどいろいろなものがあるので、試してみると面白いと思います。

 レンズのサイズが小さいので、現状ではLEDから出た光の一部しか使えていません。もっと口径の大きなレンズを使えば投影する画像を明るく出来るはずなので、適当なレンズを探してみたいと思います。
関連記事

コメントの投稿

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

カレンダー
10 | 2019/11 | 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード