『昼夜逆転』工作室
[トップページへ戻る]

マンデルブロ集合(ESP32-C3使用)

タイトル画像

2025年10月

Twitter(現X)のタイムラインに様々なマンデルブロ集合が流れてくることがあります。 自分では電子工作でやったことがなかったので、ESP32-C3で描画してみました。 お遊びアプリとして万華鏡のように、ずーっと(ぼーっと)楽しめます。

特徴・動作概要

使い方

  1. 電源オンで描画モード。マンデルブロ集合のよく見る形が描画され始めます。
  2. 描画完了時、拡大・縮小モードとなっています。
    • ボタンAで拡大、ボタンBで縮小し、描画が再開されます。
  3. 描画完了時、ボタンA,B同時押しで、カーソル移動モードとなります。
    • 目印として画面に白い枠が表示されています。画面中心にカーソル(白い点)が表示されます。
    • ボタン操作でカーソル(新たな中心点となるところ)を移動します。
    • 再度ボタンA,B同時押しで描画モードへ戻り、描画が再開されます。
  4. 描画中にボタンAまたはBを押すと描画が中断され、拡大・縮小モードとなります。
    • 目印として画面に黄色い枠が表示されています。

拡大の制約

1回の拡大操作で拡大レベルが1上がります。1レベル上がるごとに解像度は4倍になります。 マンデルブロ集合の理論上、拡大レベルに上限はありませんが、プログラム上はfloat型の制約からレベル10以上は描画が粗くなります。 レベル10で解像度は4^10倍(約100万倍)となり、このあたりで集合領域の区間がfloat型の精度では表現できなくなるからです。
※集合領域の縦横の長さ(+Reと-Reの差、+Imと-Imの差)が計算上、0となってしまう。

動作確認環境

ピンアサイン

ESP32-C3 部品
GPIO_NUM_10 (SPI-SS) LCD-CS
GPIO_NUM_7 (SPI-MOSI) LCD-SDA
GPIO_NUM_6 (SPI-SCK) LCD-SCL
GPIO_NUM_4 LCD-DC
GPIO_NUM_1 SWITCH-A
GPIO_NUM_3 SWITCH-B

プログラム公開先

GitHub - ESP32-C3 マンデルブロ集合

サンプル画像

スマホで撮影した画像です。後ろ4枚は拡大レベル、中心座標、集合領域の区間といった情報が、描画更新の都度、表示されている様子が分かります。 また、開発最初期にはテキスト版を実装しました。
サンプル画像 サンプル画像 サンプル画像 サンプル画像 サンプル画像 サンプル画像 サンプル画像
サンプル画像 サンプル画像 サンプル画像 サンプル画像
サンプル画像

◆ ◆ ◆

綺麗ですね。ちょっと作ってみようで、作っている最中も作った後も楽しめました。 画像保存や高速化は考えていません。気軽に試せたのでヨシ!です。