2016-10-17 15:40 | カテゴリ:PIC応用回路

「ロードスター」プラモの製作が一段落しましたので、電子工作に戻ってきました(笑)

昔製作した、16X16ドットのLEDマトリクス基盤があります。
先日はこれを利用して、「アナログ時計」風の物を製作しました。
他に何かできないかと考えていたら、「ライフゲーム」をWEBで見つけて、久しぶりに製作してみようと。

DotTest.jpg

ライフゲームは、数十年前に、どこかの数学者の方が考案した、生命の誕生、成長、死滅をシミュレートするものです。
詳細は、ウィキペディアを参考にしてください。

ドットマトリクス上にある点を指定して、その点の周りの点の、生死の数で、その点の生存、死滅が決まってきます。
周りの点が、少なかったり、過剰だったりすると、死滅しますし、ちょうどよければその点は、生存を続けます。
これを、全ドットにわたって、周期的に繰り返します。
初期パターンによって、どんどん増殖していく事もありますし、途中で、減少して、死滅していくこともあります。

さて、実際にこのHWを使用してどうやってライフゲームを実現するかです。

最初にこのHWを設計した際に、HWの配線作業を簡単にするためにドットLEDの行と列のポートを配線優先にしました。
例えばPICのポートAやポートBなどのポートの0-7ビットにできる限り割り振れば、データの出力が一回の命令で済みます。
しかしこのやり方ですと、リード線の配線が結構大変で、ある程度はSWの処理で解決しようと思ったのです。
それでも裏側の配線はこんな感じです。

基盤4

したがって、ドットのONやOFF、あるいは、ドットが点灯しているか否かの確認などは、SWの処理が大変になりました。
ドットLEDPICは、デバッグ用に、ソケットを取り付けて、浮かせています。

基盤3

基盤2

とりあえず、プログラムを書いて動作を確認しました。
PICは20MHzのセラロックでドライブしています。



ちらちらしているドットは、誕生間近か、死滅直後です。
輝度を下げているので、ダイナミック点灯すると、ちらちらしてしまいます。

ちょっと動作がのんびりしています。
PICのコンフィグを書く直して、PLLをONにしてみました。
動作速度がたしか4倍くらいになるようです。(PICは16F1938を使用しました)
高速版では、輝度を落としたドットもやや暗く表示されています。



プログラムは、こんな感じです。

参考程度にご覧ください。

LifeGame.txt






【ジャンル】:趣味・実用 【テーマ】:電子工作
コメント(4)

管理者のみに表示する