こんにちは!
私事ですが、最近めっきり電子工作にハマってしまいました…
今回は、子どもとの遊びにも活用できる「小型ディスプレイ(OLED SSD1306)」をArduino UNO互換機で動かしてみました!
ディスプレイから文字や絵が出るだけで、子どもってテンション爆上がり!!
そんな驚きと、ちょっとした電子工作の達成感を味わえたので、使い方やコードをご紹介します!
OLEDディスプレイとは?
- 解像度:128×64ピクセル
- 通信:I2C(配線が少なくてラク)
- 電源:3.3V〜5Vで動作
- 表示:青文字と白文字がくっきり光る!
とっても安価なモジュールながら、文字・アイコン・アニメーションまで表示できるスグレモノです。

I2Cとは電子部品同士を少ない配線でつなげるための通信方式のことです。
通信に必要なのはたったの2本(SCLとSDA)‼

今回使ったパーツと価格

部品名 | 価格(目安) | メモ |
---|---|---|
OLEDディスプレイ SSD1306(I2C) | 約300円 | Amazonや秋月などで購入 |
Arduino UNO互換機 | 約800円 | 書込方法はいずれ紹介します。 |
ジャンパーワイヤー | 約200円 | ブレッドボード接続用 |
USBケーブル | Arduino UNO互換機に付属 | PCとArduinoを接続 |
ブレッドボード | 約300円 | Amazonや秋月などで購入 |
接続方法(I2C配線)
以下のように4本の配線だけで接続できます👇
とっても簡単!


OLED端子 | Arduino UNO端子 |
---|---|
VCC | 5V |
GND | GND |
SCL | A5 |
SDA | A4 |
Arduinoでの設定
🧪ライブラリをインストール(Arduino IDE)
- Arduino IDEを開く
- メニュー → スケッチ → ライブラリをインクルード → ライブラリを管理
- 検索ボックスで「Adafruit SSD1306」を入力
→ Adafruit SSD1306 を「インストール」 - さらに「Adafruit GFX Library」もインストール
- 新規スケッチ で 下記のコードをコピペ
- 書込みする。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// OLEDディスプレイのI2Cアドレス(多くは0x3C)
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
void setup() {
// 初期化
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println(F("OLED init failed"));
for (;;); // 停止
}
display.clearDisplay();
display.setTextSize(2); // 文字サイズ
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0); // 表示位置(左上)
display.println(F("Hello, OLED!"));
display.display(); // 表示更新
}
void loop() {
// ループ処理なし
}
下記の画像の様に表示されれば

サンプルコードご紹介
他にも簡単な動きをするサンプルコードをご紹介します。
・カウントダウン
こちらは最初に「Countdown!」と表示されたから10・9・8・7・・・・
とカウントダウンするコードです。
カウントダウン→音楽を鳴らす(DFPlayer mini等)と組み合わせる事が出来るのかな
と思います。


#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
int countdownSeconds = 10;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Countdown!");
display.display();
delay(1000); // 1秒待ってスタート
}
void loop() {
for (int i = countdownSeconds; i >= 0; i--) {
display.clearDisplay();
display.setCursor(30, 20);
display.setTextSize(3);
// 残り秒数を表示
display.print(i);
display.display();
delay(1000); // 1秒待つ
}
// 終了表示
display.clearDisplay();
display.setTextSize(2);
display.setCursor(10, 20);
display.print("TIME UP!");
display.display();
while (true); // 以後ループ停止(繰り返さない)
}
●が動くアニメーション
●が右から左に永遠に動き続けるアニメーションです。

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2Cアドレス
display.clearDisplay();
}
void loop() {
// ●を左から右へ動かすアニメーション
for (int x = 0; x < SCREEN_WIDTH; x += 2) {
display.clearDisplay(); // 前のフレーム消去
display.fillCircle(x, 32, 5, WHITE); // 中央Y=32に半径5の丸
display.display(); // 描画更新
delay(30); // ウェイト(30ms)
}
}

子どもと一緒に使えるアイデア💡
🛍️ ごっこ遊び用「店頭表示」
- スイッチを押すと「いらっしゃいませ」→「準備中」など表示切替
💰 おこづかいマネージャー
- ボタンで「+100円」「-100円」
- 残高をディスプレイに表示

自分お小遣い制度なので、貯金箱にやってみたいです…
⏳ おふろタイマー(今後製作予定)
- カウントダウン表示+音楽再生
- 「あと5分!」「おふろの時間だよ!」と出る
トラブルシューティング
現象 | 対処法 |
---|---|
画面が真っ暗 | I2Cアドレス間違い(0x3C or 0x3D) |
文字が見切れる | setTextSize() が大きすぎる |
エラーで動かない | ライブラリの導入ミス |

私はサンプルコードを書き込んでも画面が真っ暗で困り果てましたが
I2Cアドレス間違い(0x3C or 0x3D)が原因で、修正したら動きました。
まとめ:小さなディスプレイが広げる親子DIYの世界
ディスプレイが動いただけなんですが
始めてArduino UNO(互換機)を動かせたので、ちょっと感動しました。
●が右から左に動くアニメーションも、それだけの動きなのに
子どもがめちゃくちゃ喜んでくれたのが印象的でした。
今後はこれを活かして、
- 音が鳴るタイマー
- しゃべる工作
などにチャレンジ予定です!
次回予告📣
▶ 「DFPlayer miniと組み合わせた“しゃべるおふろタイマー”」を予定中です!

