Arduino Nanoと128x64 OLEDで実行するセルラーオートマトン「ライフゲーム」
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino Nano(Unoでも可) | 1 |
| I2C接続 128x64 OLEDディスプレイ(SSD1306) | 1 |
| ブレッドボード(小×2 または標準×1) | 1 |
| ジャンパーワイヤー | 4本 |
必要なライブラリ
- Adafruit GFX Library – グラフィック描画基盤
- Adafruit SSD1306 Library – OLEDドライバー(128x32/64対応)
※ライブラリのインストール方法: 公式ガイド
プロジェクト概要
Conwayの「ライフゲーム」をArduino Nanoと小型OLEDで実装したセルラーオートマトンデモです。128x64ピクセルのグリッド上で、単純なルールから複雑なパターンが生成される様子をリアルタイム表示します。

ライフゲームのルール
各セルは「生(ON)」または「死(OFF)」の2状態を持ち、以下のルールで世代交代します。
- 誕生: 死んでいるセルの周囲8マスにちょうど3つの生きているセルがある → 次世代で生になる
- 生存: 生きているセルの周囲に2つまたは3つの生きているセルがある → 生き続ける
- 死亡: それ以外(0,1,4〜8個) → 死ぬ(過疎/過密)
配線(I2C接続)
| Arduino | OLED | 備考 |
|---|---|---|
| 3.3V | VCC | モジュールの電圧仕様を確認(5V対応品もあり) |
| GND | GND | |
| A4 | SDA | |
| A5 | SCL |
スケッチのポイント
- ディスプレイ初期化:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);– I2Cアドレスは0x3Cまたは0x3Dの場合あり - グリッドサイズ: 128x64 = 8,192セルをビット配列で管理
- 高速化のため、描画は変更セルのみ、またはバッファ一括転送
- 初期パターンはランダムまたはグライダー等の既知パターンを配置
スケッチ入手
完全なコードはGitHubで公開されています。
トラブルシューティング
- 表示されない → I2Cアドレスを
0x3Dに変えて試す、配線確認、プルアップ抵抗(モジュール基板上に実装済みの場合が多い) - ちらつく → リフレッシュレート調整、または
display.display()の呼び出し頻度を見直す - メモリ不足 → Unoの場合SRAM 2KBで厳しい。Nano/Unoならプログメモリ(PROGMEM)活用や配列サイズ縮小が必要
製造プロセス
- Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
- Arduino UNOで作るLCDアニメーション&ゲーム入門
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- Pixie: Arduino Pro Miniで作るNeoPixel腕時計 - アナログとデジタル融合のDIY光る時計
- Python 3からArduino UNOを制御 – シリアル通信でLED点滅デモ
- Arduinoで高速・高精度RPM測定 – レーザーとIRセンサーによる新アルゴリズム
- eDOT:高精度Arduino時計・気象ステーション(IRリモコン・自動輝度調整内蔵)
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ
- ArduinoとGoogleスプレッドシート連携 リアルタイムRFID勤怠管理システム
- Arduino + Windows IoT + Azure クラウドによる高度な転倒検知システム
- スマートキーレスドアロック:ArduinoとAndroid Bluetoothでパスワード制御