LED キューブ製作

3.研究内容
LED キューブ製作
簡単にできると考え、僕たちはいきなり 3×
3×3 でキューブを作ろうとしたが、原理をき
ちんと把握できていなかったため失敗した。
江平
俊輝
吉田
塁
そこでまず 3×3 の点灯回路を作り、理解する
ことにした。
1.まえがき
(1)手動点灯回路
僕たちの班は LED キューブの製作をした。
使用したのはユニバーサル基板 1 枚と
きっかけは去年の先輩方の課題研究の発表を
LED9 個、スイッチ 6 個と 470Ωの抵抗 3 つ、
聞いて興味を持ち、自分たちで 3×3×3 の LED
以上の部品である。
キューブを製作したいと思ったからだ。
2.原
理
まず、3×3 の LED の回路図を考え、実際に
製作してやり直してと、この時点で試行錯誤
LED キューブを製作し、点灯させる際に必
要な知識は大きく 2 つあった。
(1)ダイナミック点灯
を繰り返した。完成した回路に電源を追加し、
実際に点灯させてみて回路の仕組みを理解し
た。
ダイナミック点灯とは、点灯している LED
を一定周期で高速に点滅させる点灯方法であ
る。消費電力を抑え、LED の寿命を長くする
ことができる。また、点滅する周波数を変化
させて発光時間の長さを変えることによって
LED の明るさを制御、調節することもできる。
さらに、高い周波数で点滅する感覚を短くす
れば人の目で見た場合に残像現象によって常
時点灯して見える。
(2)点灯のための電流経路
スタティック点灯では1つのスイッチを押
すことで LED が点灯するという回路である。
(図1 左側)
図2
手動点灯回路
今回利用するダイナミック点灯は、2つのス
イッチを同時に押すことで、LED が点灯する
という回路である。(図1 右側)
(2)キューブ製作
LED をキューブの形にする際は LED のア
ノードとカソードを曲げて、図2のようなも
のを 27 個作り、図3のように半田付けして行
った。
図1
点灯回路
図3
アノードとカソードを曲げた LED
こともできる。
図4
LED の接続方法1
図6
LED 点灯の例
(4)Arduino でのプログラミング
Arduino のプログラミングは C 言語と似た
ようなものであり、この LED キューブ製作で
最も苦労した場面である。プログラムが苦手
であったため思うような動作をさせることが
できず、僕たちを悩ませた。完成した今にし
図5
LED 接続方法2
て思えば、苦手なプログラミングと向き合う
いい機会であったとも思う。
(3)自動制御
LED を キ ュ ー ブ に す る の と 同 時 進 行 で
LED の点灯を自動制御するためのプログラム
についても考えた。
ここでは大きく 5 つの関数を使用した。
○Set up()
この関数はスケッチ(プログラムの入力)が
開始されるときに呼び出される。変数やピンモ
プログラムを自動で点灯させるために
ードの初期化、ライブラリ使用開始等を行うと
Arduino というマイコンボードを使用した。
きに利用する。Arduino 基盤に電源を入れたと
Arduino とは、C++言語風の Arduino 言語と
きやリセットしたときに1度だけ呼び出される。
それの総合開発環境から構成されるシステム
○Loop()
で、PC からプログラムを入力し、回路に接続
Set up()関数を実行した後、この loop()関数が
することで LED を様々な点灯の仕方をさせる
その名を示す動作を正確に実行する。プログラ
ことができる。
ムが何かに変更を加えたり反応したりを繰り返
このように決まった順番に LED をダイナミ
ック点灯させ、光が動いているかのような点
灯の仕方もできる。また、点灯の間隔を変え
ることもでき、1 秒毎に点灯する場所を変える
す。能動的に Arduino 基盤を制御するために利
用する。
○Pin Mode()
指定したピンを入力に使用するのか出力に使
こともできれば、それを 0.5 秒毎に点灯する場
用するのかを設定する。
所を変えたりして、光が動く速度を速くする
入力には INPUT、出力には OUTPUT を使う。
このプログラムは単純であるため、そこまで
○Digital Write()
デジタルピンに HIGH か LOW の値を出力す
る。
量は多くないものの、多くの LED を点灯させ
ようとするとプログラムの数はかなりの量にな
るため、うまく動作しなかった際に、プログラ
ピンが pinMode で OUTPUT に設定されてい
ムを見返すときはとても苦労した。端の LED
たとき、digitalWrite が HIGH に設定されてい
を回るように点灯させるプログラムだけでも
た場合、5V。LOW に設定されていた場合、0
50 行近くになった。
V(接地)となる。
○Delay()
パラメータで指定した時間(ミリ秒単位)だ
けプログラムを一時停止させる。(1秒は 1000
ミリ秒)。
この関数がとくに重要で、この関数の設定で
LED の点滅の感覚などを設定する。
これらの関数を利用して入力したプログラム
例が図 8 である。
図9
完成した LED キューブ
5.まとめ
課題を始める前は楽しそうだなと思って始め
たが、予想以上に難しかった。
原理は理解できても本当に動作するのか分か
らなかったし、動いても意図しない動作をする
ことがあった。しかし試行錯誤を繰り返し、無
事完成させることができた。
6.あとがき
今まで実習などでやってきたはんだ付けは基
盤に部品を取り付けるためや導線と導線をつな
図8
LED 点滅プログラム例
ぐためなど、基本的には基盤に取り付けるため
だった。しかし、今回はそれに加えて LED 同
このプログラムを応用して、端の LED を回
るように点灯させたり、1 段ずつ順番に下りて
くるように点灯するプログラムなども制作した。
士をつなぐという初めてする作業だった。最初
に LED の足を曲げ、LED 同士を半田付けした。
今までにしたことなかった作業で、しかも、
様々なことができるようになってからは色々な
LED と半田小手が当たるたびに向きが変わる
プログラムを試したりして楽しかったと同時に、
のでとても大変だった。そのため、半田付けが
苦手だったプログラムが少しずつ克服できてい
うまくできず苦戦してしまいなかなか作業が進
るようにも感じてとても充実した。
まなかった。何個も数をつくっていくと、だん
だんコツもつかめてきて、早く正確にできるよ
うになった。キューブができあがったあと、基
盤に配線と LED 取り付けを行った。基盤への
半田付けは、線が多くて半田付けをするところ
が多くてかなり苦戦したが、なんとか作業を進
めることができた。半田付けばかりの作業で途
中集中がきれたりすることがあり、なかなか作
業が進まないこともあったが、先生に指導して
もらいながらなんとか完成することができてよ
かった。(江平
俊輝)
Arduino というプログラム言語を使った初め
てのプログラムに最初から最後まで悪戦苦闘だ
った。BASIC や C 言語もあまり得意ではなか
ったが、手探りに近い状態でプログラムを入力
して、単純な動作はできるようになった。その
後も少しずつながらもプログラムの仕組みを理
解していき、さまざまな動作をさせることがで
きるようになった。その過程で思うように動作
しなかったりと様々な問題にぶつかったが、落
ち着いてプログラムを見返したり、動作を確認
し直してみたりと色々試行錯誤を行った。最終
的なプログラムの量にはとても驚いたが、自分
でここまで出来たのかという達成感が大きく、
この課題研究はとても充実して、いい経験にな
ったと思う。(吉田
塁)