. 【Arduino初心者向け】たった3本のピンで64個のLEDを制御!74HC595でドットマトリクスLED入門
【Arduino初心者向け】たった3本のピンで64個のLEDを制御!74HC595でドットマトリクスLED入門
【Arduino初心者向け】たった3本のピンで64個のLEDを制御!74HC595でドットマトリクスLED入門

【Arduino初心者向け】たった3本のピンで64個のLEDを制御!74HC595でドットマトリクスLED入門

なぜ64個のLEDがたった3本で動くのか?#

電子工作を始めた方なら、こんな経験があるはずです。

「8×8のドットマトリクスLEDで文字を表示したい!」 → Arduinoのピン数を数える → 「え、64本も必要なの…?」 😱

Arduino UNO R4のピンは全部で約20本。明らかに足りません。

でも安心してください。「74HC595」というマジックチップを使えば、たった3本のピンで済みます。

今回は、前回の74HC595テストボード記事の応用編として、実際に8×8ドットマトリクスLED(64個のLED)を制御する基板を作りました。

74HC595を秋月電子で購入

【初心者向け】なぜピンが足りなくなるの?#

ピン不足問題を数えてみよう#

まず、8×8のドットマトリクスLEDについて考えてみましょう。

単純計算の場合:

  • 8行 × 8列 = 64個のLED
  • 各LEDに1本ずつピンが必要 = 64本必要

でも、Arduino UNO R4のピンは全部で:

  • デジタルピン:14本(D0〜D13)
  • アナログピン:6本(A0〜A5)
  • 合計:約20本

64本 - 20本 = 44本足りない! これが「ピン不足問題」です。

【解決策①】ダイナミック点灯を使う#

「全部のLEDを同時に光らせなければいいのでは?」

その通りです!「ダイナミック点灯(時分割制御)」 という技術を使います。

ダイナミック点灯とは?#

ドットマトリクスLEDの内部構造

8×8ドットマトリクスLEDの内部では、LEDは以下のように配線されています:

  • 8本の横ライン(行): 各LEDのアノード(+側)が接続
  • 8本の縦ライン(列): 各LEDのカソード(-側)が接続

つまり、「1行目を選択して、光らせたい列にだけ信号を送る」 を超高速で繰り返せば、人間の目には全体が光っているように見えます。

時刻0ms: 1行目だけON → [●○●○●○●○](パターンA) 時刻1ms: 2行目だけON → [○●○●○●○●](パターンB) 時刻2ms: 3行目だけON → [●○●○●○●○](パターンC) ...以下、8行目まで繰り返す

このサイクルを1秒間に数百回繰り返すと、残像効果で全体が同時に光っているように見えるのです!

これで必要なピン数は:

  • 8本(行の選択)+ 8本(列のパターン)= 16本

だいぶ減りました!でも、まだ足りませんね…。

【解決策②】74HC595シフトレジスタを使う#

そこで登場するのが 「74HC595」 という魔法のICチップです。

74HC595って何ができるの?#

74HC595は、「たった3本のピンで、8本分のピンを増やせる」 ICです。

必要なピンはたった3本:

  1. DATA(データ線): ON/OFFの情報を送る
  2. CLOCK(クロック線): タイミングを合わせる
  3. LATCH(ラッチ線): 「確定!」の合図

この3本を使って、8個のON/OFF情報を順番に送り込むと、74HC595が8本の出力ピンに変換してくれます。

さらに! 74HC595は 数珠つなぎ(カスケード接続) ができます。 2個つなげば16本、3個なら24本…と、どんどん増やせます。

今回の構成#

今回は74HC595を 2個 使います:

  • 1個目(74HC595 #1): 8行の選択(どの行を光らせるか)
  • 2個目(74HC595 #2): 8列のパターン(その行のどのLEDを光らせるか)

これで、Arduinoから3本のピンだけで、16本分の制御信号を送れます!

使用するArduinoとパーツ紹介#

今回使用するのは、最新の 「Arduino UNO R4 MINIMA」 です。

Arduino UNO R4 Minima

Arduino UNO R4 Minima starter kit

Arduino UNO R4の特徴:

  • 高速処理: 48MHzのクロック(従来のR3は16MHz)
  • ダイナミック点灯に最適: 高速でLEDを切り替えるのでちらつきが少ない
  • ピン配置はR3と互換: 既存のシールドがそのまま使える

初心者の方には、必要な部品が全て揃った スターターキット がおすすめです。

このプロジェクトで学べること#

このプロジェクトを完成させると、以下のスキルが身につきます:

シフトレジスタ(74HC595)の使い方 → 他のプロジェクトでもピン拡張に応用できる

ダイナミック点灯の原理 → 7セグメントLED、大型LED表示パネルなどにも応用可能

SPI通信の基礎 → センサーやSDカードなど、多くのモジュールで使われる重要な通信方式

回路設計と基板製作 → オリジナル基板を作る第一歩

Arduinoプログラミングの実践 → タイマー割り込み、配列操作などの実用テクニック

ドットマトリクスLEDの仕組みを理解する#

ドットマトリクスLEDとは?#

「ドットマトリクス」という名前の通り、小さなLEDを格子状(マトリクス状)に並べた表示装置です。今回使用するのは8×8サイズ、つまり64個のLEDが入っています

8×8ドットマトリクスLED

一見すると64個のLEDに64本の配線が必要に見えますが、実は内部で賢く配線されています。

内部のマトリクス構造#

下の回路図を見てください。これがドットマトリクスLEDの内部構造です。

ドットマトリクスLED内部回路図

重要なポイント:

  1. アノード(+側): 8本の横線(ROW1〜ROW8)で各行をまとめて制御
  2. カソード(-側): 8本の縦線(COL1〜COL8)で各列をまとめて制御

つまり、「ROW3とアンドCOL5を選択」すると、3行目5列目のLEDだけが光る仕組みです。

これなら 64本も配線せず、たった16本(8+8)で制御できます!

ダイナミック点灯を図解で理解#

前述の「ダイナミック点灯」を、もう少し詳しく見てみましょう。

例:「A」という文字を表示する場合

目標パターン(8×8): □■■■■■□□ ■□□□□■□□ ■□□□□■□□ ■■■■■■□□ ■□□□□■□□ ■□□□□■□□ ■□□□□■□□ □□□□□□□□

これを一度に表示するのではなく、1行ずつ高速で切り替えます:

時刻0: ROW1をON → □■■■■■□□ を表示 時刻1: ROW2をON → ■□□□□■□□ を表示 時刻2: ROW3をON → ■□□□□■□□ を表示 ... 時刻7: ROW8をON → □□□□□□□□ を表示 → これを1秒間に約200回繰り返す!

人間の目は約1/30秒(約33ms)の残像を持つため、各行が5ms(= 1/200秒)で切り替わるなら、全体が同時に光っているように見えます

【補足】ニキシー管時計でも使われている技術#

このダイナミック点灯は、レトロなニキシー管時計でも使われています。詳しい解説は以下の記事もご参照ください。

👉 ニキシー管時計のダイナミック点灯記事

ドットマトリクスLEDの実用例#

この仕組みは、身の回りの様々な場所で使われています:

用途 具体例 🚉 交通機関 駅の電光掲示板、バスの行き先表示 🏪 店舗 デジタルメニューボード、価格表示器 ⏰ 時計 デジタル時計、カウンター 🎮 エンターテイメント レトロゲーム風ディスプレイ、LED Art 🎵 オーディオ スペクトラムアナライザー

ドットマトリクスLEDの多彩な応用例

Arduinoと組み合わせることで、これらのようなオリジナル作品を作ることができます!

回路設計:74HC595でピンを増やす#

全体回路図#

ドットマトリクスLEDドライブ回路の全体図

【初心者向け】回路図の読み方#

一見複雑に見えますが、大きく分けると 3つのブロック に分かれています:

① Arduino(左側)#
  • 3本のピン でデータを送信:
    • MOSI(データ線): LED点灯パターンを送る
    • SCK(クロック線): タイミングを合わせる
    • SS(ラッチ線): 「確定!」の合図
② 74HC595シフトレジスタ(中央)#
  • Arduinoから受け取ったデータを 8本の並列信号 に変換
  • 2個カスケード接続で 16本分の制御信号 を生成
③ ドライバIC + ドットマトリクスLED(右側)#
  • 74HC595だけでは電流が足りないので、ドライバICで増幅
  • ドットマトリクスLEDを駆動
【重要】なぜドライバICが必要なのか?#

ここが初心者の方がつまずきやすいポイントです。

74HC595の出力電流は最大でも約25mAです。 一方、8×8ドットマトリクスを明るく点灯させるには、1行あたり100mA以上必要な場合があります。

例えば、1行に8個のLEDを同時点灯させると:

1個のLED: 約20mA 8個同時: 20mA × 8 = 160mA → 74HC595単体: 25mA しか流せない ❌ → ドライバIC使用: 200mA以上OK ✅

そのため、「電流増幅役」としてドライバICが必須になります。

使用するドライバIC#

今回採用したのは、以下の2つのトランジスタアレイICです:

IC型番 役割 接続先 特徴 TBD62783 アノードドライバ 行選択(ROW1〜8) ソース型、大電流駆動可能 TBD62083 カソードドライバ 列制御(COL1〜8) シンク型、高速スイッチング 【用語解説】トランジスタアレイとは?#

「トランジスタアレイ」とは、複数のトランジスタ(電流を増幅するスイッチ)が1つのICに入っている部品です。

  • 普通のトランジスタ: 1個ずつ配線が必要(8個なら8個分のハンダ付け)
  • トランジスタアレイ: 8個分が1つのICに内蔵 → 配線が超シンプル!
なぜこの2つのICを選んだのか?#

TBD62783(アノード側)の特徴:

  • ソース型: 電源から電流を「供給する」タイプ
  • 行を選択するのに最適(選んだ行だけに電流を流す)
  • 内部にダイオードがあり、逆起電力から保護

TBD62083(カソード側)の特徴:

  • シンク型: 電流を「GNDに引き込む」タイプ
  • 列の点灯パターンに最適(ONにした列だけ電流が流れる)
  • 高速スイッチングでちらつき防止

この組み合わせにより、安定して明るいドット表示が可能になります。

基板設計と製作#

PCB(プリント基板)の設計#

回路図をもとに、KiCadという無料のCADソフトで基板レイアウトを設計しました。

基板配線図(KiCadで設計)

【初心者向け】基板製作の選択肢#

電子工作で基板を作る方法は、大きく3つあります:

方法 メリット デメリット 初心者向け ブレッドボード ハンダ不要、何度でもやり直せる 接触不良が起きやすい、大きい ⭐⭐⭐⭐⭐ ユニバーサル基板 自分でハンダ付け、自由度高い 配線が大変、見た目が悪くなりがち ⭐⭐⭐ PCB基板発注 プロ品質、小型化、量産可能 設計が必要、発注に時間 ⭐⭐

今回は 「JLCPCB」 という基板製造サービスを利用しました。

JLCPCBのアセンブリサービスとは?#

JLCPCBには、基板を作るだけでなく、**部品も一緒に実装してくれる「アセンブリサービス」**があります。

通常の基板発注:

  1. 基板だけ届く(配線だけが印刷された緑色の板)
  2. ICや抵抗を自分でハンダ付け(50個以上ある場合も…)

アセンブリサービス:

  1. 基板 + 部品がすでに実装済みで届く!
  2. 残りのコネクタやLEDだけ自分でハンダ付け

今回は以下を実装依頼しました:

  • 74HC595 ×2個
  • TBD62783 / TBD62083
  • 抵抗(数十個)
  • パスコン(ノイズ除去用コンデンサ)

自分でハンダ付けする部品:

  • ドットマトリクスLED(大きいので手作業が確実)
  • Arduinoとの接続コネクタ
【補足】コストについて#

「アセンブリって高そう…」と思うかもしれませんが、意外とリーズナブルです。

  • 基板5枚 + 表面実装部品代 + アセンブリ費用 ≈ 3,000〜5,000円程度
  • 同じ部品を自分で買って50回ハンダ付けする手間を考えると、かなりコスパが良い!

特に 0603サイズの小さな抵抗やコンデンサ は、初心者が手作業でハンダ付けするのは至難の業です。

基板製作と動作確認#

届いた基板をチェック#

JLCPCB から届いた基板がこちらです。

JLCPCB から届いた基板(アセンブリ済み)

チェックポイント:

  • ✅ IC類が正しい向きで実装されている
  • ✅ 抵抗やコンデンサがずれていない
  • ✅ ハンダの盛りが均一できれい
  • ✅ ショート(意図しない接続)がない

さすがプロの仕上がり!手作業では難しい精度です。

残りの部品をハンダ付け#

届いた基板に、自分で以下の部品をハンダ付けしました:

  1. ドットマトリクスLED(OSL641501-ARA) → 向きに注意!(通常、▲マークやドットで1番ピンを示しています)

  2. Arduinoとの接続コネクタ → ピンソケット(メス)を使うと、Arduinoを抜き差しできて便利

LEDと コネクタを取り付けた完成基板

【初心者向け】ハンダ付けのコツ#

ドットマトリクスLEDの取り付け:

  1. まず 4隅のピンだけ を仮ハンダ
  2. 基板にまっすぐ垂直に立っているか確認
  3. 傾いていたら、ハンダを溶かしながら修正
  4. 問題なければ残り全てのピンをハンダ付け

ハンダの量:

  • 少なすぎ ❌: 接触不良の原因
  • 多すぎ ❌: 隣のピンとショートの危険
  • 富士山型 ✅: 理想的!

Arduinoに実装して動作テスト#

完成した基板を Arduino UNO R4 にセット!

Arduino UNO R4 Minima

Arduino UNO R4 Minima starter kit

動作確認の様子#

実際に動作させた動画がこちらです!

動作確認のポイント:

  • ✅ すべての行と列が正しく動作
  • ✅ ダイナミック点灯でちらつきなし
  • ✅ 意図したパターンが正確に表示
  • ✅ 明るさも十分

完璧に動きました!🎉

プログラムの基本構造#

今回使用したArduinoスケッチの概要です:

// SPI通信でデータ送信 void updateDisplay() { digitalWrite(LATCH_PIN, LOW); // ラッチを開く // 74HC595にデータを送信(16bit = 2バイト) SPI.transfer(rowData); // 行選択データ SPI.transfer(colData); // 列パターンデータ digitalWrite(LATCH_PIN, HIGH); // ラッチを閉じて確定 }

ポイント:

  • SPI.transfer() で1バイトずつデータを送信
  • カスケード接続なので、2回送信(行用 + 列用)
  • ラッチピンをHIGHにした瞬間に出力が更新される

完全なコードは、GitHubで公開しています(後述)。

このプロジェクトの応用アイデア#

基本が動いたら、こんな応用も可能です!

初級編#
  • スクロール文字表示: 「Hello」などの文字を右から左に流す
  • 🎲 サイコロゲーム: ボタンを押すとランダムな目が表示
  • ⏱️ カウントダウンタイマー: 数字をドット表示
中級編#
  • 🌡️ 温度計: センサーと組み合わせて温度を表示
  • 📊 VUメーター: マイクで音を拾ってレベル表示
  • 🐍 レトロゲーム: スネークゲームを作る
上級編#
  • 📡 Wi-Fi対応: Arduino R4 WiFi版でネット経由のメッセージ表示
  • 🔀 複数基板連結: 8×8を複数枚つなげて大型ディスプレイ化
  • 🎨 アニメーション: SD カードから読み込んで動画再生

購入・ダウンロード情報#

GitHubで設計データ公開中(無料)#

回路図、基板データ、プログラムはすべて オープンソース として公開しています!

📁 公開内容:

  • 回路図(KiCad形式)
  • 基板データ(Gerberファイル)
  • JLCPCB用BOM/CPLファイル(そのまま実装依頼可能)
  • Arduinoスケッチ(サンプルプログラム)

ダウンロードリンク:

  • 👉 回路図・基板データ(GitHub)
  • 👉 Arduinoプログラム(GitHub)

📦 74HC595_testboard.zip の中身:

  • Gerberファイル(基板製造用)
  • BOM(部品リスト)
  • CPL(部品配置ファイル)

これを使えば、JLCPCBで そのまま実装済み基板を発注 できます!

完成品をBoothで販売中#

「基板を発注するのはハードルが高い…」という方のために、すぐに使える完成キット を販売しています。

🛒 ElectroRam Studio(BOOTH)で販売中

セット内容:

  • ✅ Arduinoシールド基板(IC・抵抗実装済み)
  • ✅ ドットマトリクスLED(OSL641501-ARA)
  • ✅ 差し込み用ピンソケット
  • ✅ 長ピンソケット(ピン名印字あり)
BOOTHで購入する

こんな方におすすめ:

  • 基板発注の手間を省きたい
  • すぐに動作確認したい
  • 初めての電子工作で失敗したくない

まとめ:3本のピンで広がる可能性#

今回のプロジェクトで、以下のことを学びました:

74HC595の基本: たった3本で16本のピンを増やせる技術 ✅ ダイナミック点灯: 高速切り替えで同時点灯に見せる手法 ✅ ドライバIC: 電流不足を解決する部品の選び方 ✅ 基板設計: KiCadとJLCPCBを使った実践 ✅ SPI通信: 高速データ転送の基礎

これらの知識は、ドットマトリクスだけでなく、7セグメント表示、大型LED看板、さらにはモーター制御など、他の多くのプロジェクトに応用できます

電子工作の世界は、「ピンが足りない」という制約をどう乗り越えるか」 がテーマになることが多いです。この記事が、そのための第一歩になれば嬉しいです。

関連記事#

  • 👉 【Arduino初心者向け】74HC595で8個のLEDを3本のピンで制御!シフトレジスタ入門
  • 👉 【Arduino開発を加速】全ピンLED搭載デバッグシールドの設計と実装
  • 👉 【ESP32 I/O拡張】MCP23017で16ピン追加!

最後までお読みいただき、ありがとうございました!

質問や感想があれば、ぜひコメントやお問い合わせフォームからお気軽にどうぞ。

Happy Making! 🔧✨

📚 関連記事

【2026年版】74HC595のArduinoでの使い方!シフトレジスタでGPIOを無限拡張する方法・LED制御実装完全ガイド

74HC595のArduinoでの使い方を徹底解説!シフトレジスタで3本の信号線だけでGPIOを無限拡張。shiftOut()関数からSPI通信まで、回路 …

2026/02/11 · 7分 8x8ドットの小宇宙:Arduinoとシフトレジスタで4つのセル・オートマトンを実装する

わずか64個のドットが、単純なルールに従って「迷路」を作ったり「雪」のように増殖する。Arduino+74HC595+8x8ドットマトリクスで、数学的な生命シミ …

2026/02/08 · 6分 【Arduino入門】開発環境の準備とLED点滅でHello World!初心者向け完全ガイド

Arduino IDE のインストールから LED 点滅プログラムの書き込みまで、電子工作初心者が最初の一歩を踏み出すための完全ガイド。環境構築から動作確認まで …

2020/06/22 · 2分 電子工作の登竜門|LEDを光らせる【オームの法則】

LEDを点灯させるには?オームの法則を使って抵抗値を計算し、安全に回路を作る方法を初心者向けに解説します。

2020/06/15 · 1分 【Arduino実践】SG90をハックせよ!オシロスコープで可視化するサーボモータ制御の基礎と実践

Arduino UNO R4でホビー用サーボモータSG90を制御。PWM信号をオシロスコープで可視化しながら、サーボの内部構造からフィードバック制御の仕組み、正 …

2026/02/09 · 4分 加速度センサKXR94-2050で実装する高精度デジタル水平器:重力ベクトル分解と逆三角関数による角度演算

3軸加速度センサKXR94-2050と重力加速度の原理を利用し、Arduinoで±90度の傾斜角をリアルタイム検出。AD変換値から逆正弦関数(asin)で角度演 …

2026/01/25 · 5分
📎📎📎📎📎📎📎📎📎📎