ホーム > 家族のギャラリー > PIC電子工作 > フリスクケースで解くペントミノ

2011.12.23 更新
2011.3.12 更新
2011.2.27 更新
2011.1.22 記

フリスクケースで解くペントミノ

フリスクケースでペントミノを解く

比較的安くなってきたRGBカラーLEDを使ってみたくなり、2007年末から2008年始めに作ったペントミノ専用ハードウェアをバージョンアップしてみた。カラー化だけではつまらないので小型化し、電池込みでフリスクのケースに収めることを目指した。

表面実装部品を使った細かい作業で目が疲れたが、何とかハードウェア作りが一段落(2011.1.22)後、ソフトを作り完成(2011.2.27)。ようやくまとめられた(2011.3.12)。

電子工作コンテスト2011に応募したところ、P板.com賞(主催者のインフローさんの企業賞)を頂くことができました。感謝(2011.12.23追記)。


フリスク ペントミノ回路図

回路図

PIC16F887とRGBカラーLED×60個を使った回路(拡大図)。無保証です。

LEDのアノード側に10ピン、カソード側はRGB×6=18ピンの計28ピンが必要なので、ピン数の多いPICを選んだ。

ICSPソケットと電源部以外は、表面実装用のものを利用してコンパクトに作る。

3色RGBチップLED

3色RGBチップLED

1.27mmピッチの両面スルーホール基板に3色RGBチップLEDを6×10のマトリクスに並べる。

予めスルーホールをハンダで埋めておき、表側から1箇所仮止めしたら、裏からスルーホールに熱を加えて4ピン(R,G,B,コモンの4ピン)をハンダ付けした。

左側に見えているブレッドボード配線用のジャンパー線は、導通確認のためのもの。

チップトランジスタ、抵抗

チップトランジスタ、抵抗

コモンライン(アノード)のドライブ用に、チップトランジスタと1608(1.6mm×0.8mm)チップ抵抗を取り付ける。

このためにチップ抵抗をリール(2,500個)で購入。残りを使う日はくるのか?!

ポリウレタン線で配線

ポリウレタン線で配線

ポリウレタン線(手元にあったものをノギスで計ったらφ0.23mm)で、マトリクス配線をしていく。

初めのうちはよいが、配線が混んでくるとハンダ付けが大変。

PIC16F887(44ピンTQFP)

PIC16F887(44ピンTQFP)

ポリイミドフィルム(カプトンテープ)を貼った上にPICを載せた。配線は裏側からスルーホール経由(ひとつの穴に2本程度)で引き出して各ピンに配線。

手前にある四角いのはチップコンデンサ。裏側にはPICへの書き込みようのソケットを付けたので、しかたなく表に実装。

裏側の配線

裏側の配線

ゴチャゴチャになってしまったが、なんとか繋がった。途中でショートやチップLEDのハンダ剥離などもあり、導通試験と修正を繰り返しながらの作業。目に負担の大きな作業。

労力を考えるとプリント基板を起こすべきだった。

点灯試験

点灯試験

3色LEDなので単純な色の組み合わせでは8色(点灯無しも含め)となる。しかし、もう少し色を出したいので、PWMで発光時間を変えて中間色を出してみる実験。

一応、15色(1色/4dot)を出しているが、発光時間を変えても色や明るさにそれほど変化はなく、微妙な色の違いは判りにくい。

LEDの表面にはキズ防止のためのマスキングテープが貼ってある。これを剥がすときに、LEDが引っ張られてハンダが剥がれないか心配。

動画


プログラム作り

ハードが一段落したところでプログラム作りに着手。

ペントミノを解く処理の本体はペントミノ専用ハードウェアのものを利用。かなり忘れていて処理を思い出すのにしばらくかかった。

今回、変更したのは以下。

・カラー表示
ソフト制御のPWMで、明るいRGB、暗いRGB、非表示RGBと、各色3通りの色をだせるようにして、色の組み合わせは3通り^3色=27通り (27色)だせるようにした。しかし、微妙な色の違いは判りづらい。PWM制御方法は以下。

タイマ割り込みで表示列(10列)を順次切り替えるダイナミック点灯だが、1画面あたり4回(×10列)の割り込みを行っている。4回のうち、1回目は暗いRGBとして1回の割り込み時間のみ表示し、2〜4回目は3回分の時間表示して明るいRGB表示を行う。

明るい赤と暗い青で赤紫、明るい青と暗い赤で青紫などの色を作れる。RGB全色表示で白になるが、暗いRGB全色表示だと灰色っぽくなる。また、暗いRGBと明るいRGBの両方を表示すると4回分表示することになり、さらに明るいRGB表示になる。

・解の表示方法変更
前回は2色LEDだったので解は1ピース毎に順次表示する方法をとったが、今回は多数の色を出せるので12ピースを同時に表示する。
・プログレスバーと解数表示の廃止
盤面を常に表示できるようになったので、連続実行モード時に解いている様子を表示していたプログレスバーと解番号を廃止した。
画面表示のための割り込みが前回の4倍になったのと、カラー表示するための処理のため、解を求める時間が若干延びた。ただ、今回のPICはBANK間で共通のレジスタメモリが使えたので、BANK切り替えを回数を減らすことができて、処理時間の延びを抑えることができた。約12分で全解を求められます。最後の動画で11分となっているのは勘違いm(_ _)m

ごちゃごちゃしていますが、プログラムのソースコードです。無保証です。


電池候補

電池候補

当初、この写真の電気ウキ用のリチウム電池を使うことを考えていた。しかし、電流が十分に取り出せないのと、すぐに電圧が下がってしまうので断念。下がった電圧はしばらく放置するとまた復活する。

電池

電池

そこで、コイン電池のCR2025を使うことにした。容量の大きなCR2032にしたかったが、厚みがあってフリスクケースに収まらなかったので、2.5mm厚のCR2025を2個並列で使う。100均で2個105円で売られていた。

電池ボックスを使うスペースがないので、直接ハンダ付け。表面を少しヤスリで削ってから、フラックスを塗り、短時間で予備ハンダしてハンダ付け(しかし、電池への直接ハンダ付けはお勧めしません)。

ステップアップコンバータ

ステップアップコンバータ

3Vだと青色LEDが暗いのと、負荷がかかって電圧が下ると点灯しなくなるので電池の3Vから5Vを作る。

単三電池2本を使った実験では、全LED点灯時(ペントミノの解表示時)の負荷で4.8V、100mA程度まで供給することができた。コイン電池ではもう少し弱い。

フリスクケース加工

フリスクケース加工

デザインナイフとカッターナイフで、フリスクケースの内側の出っ張りを削る。また、ドリルとデザインナイフで後方に電源スイッチとタクトスイッチの穴をあけてケース完成。

ケースに収める

ケースに収める

こんな感じでケースに収める。電池は基板の裏側。

フリスクケース蓋のラベルを剥がす。真ん中の凹みが少し残念。

動作確認

動作確認

蓋をする前の動作の様子。動画からキャプチャしたのでスミアがでています。

完成

完成

ペントミノの解を表示した様子。ケースの蓋を透過してLEDの光が浮かび上がる。

完成動画

動画(2分19秒)をアップしてみました。音がでます。

以上


from Metal Woods(c) 2011