今日は寒い日々を耐え忍ぶための技術についてです。coinsで暖を取ると言えば、一般的には計算機をぶん回すことを指すと思います。Linuxのインストールを始めたり、撮りためたアニメをエンコードするのは冬の恒例行事とも言えるでしょう。calendarを眺めてみてもこたつをサーバで温める記事があったり、計算機で暖を取ることはもはや目新しいことでもありません。そこで、今日はちょっと趣向を変えてみようと思います。どんなに部屋が暖かくても共に過ごす相手がいなければ、心は冷えきったままで生命の温もりが恋しくなるでしょう。無ければ作るの精神ということで、今日はちょちょっと生命を作り出してしまいましょう。coinsで生命と言えば?そう、ライフゲームですね。ご存じない方のために説明すると、ライフゲームとは碁盤の目状に並んだセルの状態が簡単なルールに従って更新されていく、シミュレーションゲームの一種です。死んだセルの周囲8セルの内、生きているセルがちょうど3つの時にそのセルは「生」に変わる生きたセルの周囲8セルの内、生きているセルが1つ以下の時にそのセルは死ぬ生きたセルの周囲8セルの内、生きているセルが4つ以上の時にそのセルは死ぬ上記以外の場合、セルの状態は変化しないの4つのルールに従ってセルの更新を繰り返し、盤面の変化を眺めて楽しみます。いうわけで、ライフゲームを作っていきます。盤面の状態を液晶ディスプレイに表示するだけだと生命の温もり感に欠けるので、Arduinoを使って8x8のマトリクスLEDに表示しようと思います。Megaを買う必要が出てきます。Unoからでも制御できるようにします。いい感じにつないだ結果こうなります。後はパパっとArduinoのスケッチを書いてしまいましょう。マトリクスLEDの点灯には少し工夫が必要で、そのままだと一度に全てのLEDを任意の点灯状態にすることができません。各行(もしくは列)1つだけに着目すると任意の点灯状態にすることができるので、まず1行だけ表示して、すぐに次の1行だけを表示して......と表示する行を高速で切り替えることで全てのLEDについて任意の点灯状態にすることができます。ArduinoにはShiftOutという1byteのデータをシリアル出力してくれる便利な関数があるので、これを使うと各行のデータを簡単にシリアル出力することができます。最終的なスケッチがこちらです。このスケッチをArduinoに書き込んで完成です。生命の温もりを感じられますか。僕は部屋のあまりの寒さに凍え死にそうです。いえ、もともと箱庭シミュレーションを無心で眺めているのが好きなので楽しいことは楽しいです。完全にただの一発ネタでしたが、ここまでお読みいただきありがとうございました。yk_marbleはてなブログをはじめよう!dj_marbleさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。