【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本:
- DATA(データ線): ON/OFFの情報を送る
- CLOCK(クロック線): タイミングを合わせる
- 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内部回路図
重要なポイント:
- アノード(+側): 8本の横線(ROW1〜ROW8)で各行をまとめて制御
- カソード(-側): 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(ラッチ線): 「確定!」の合図
- Arduinoから受け取ったデータを 8本の並列信号 に変換
- 2個カスケード接続で 16本分の制御信号 を生成
- 74HC595だけでは電流が足りないので、ドライバICで増幅
- ドットマトリクスLEDを駆動
ここが初心者の方がつまずきやすいポイントです。
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に内蔵 → 配線が超シンプル!
TBD62783(アノード側)の特徴:
- ソース型: 電源から電流を「供給する」タイプ
- 行を選択するのに最適(選んだ行だけに電流を流す)
- 内部にダイオードがあり、逆起電力から保護
TBD62083(カソード側)の特徴:
- シンク型: 電流を「GNDに引き込む」タイプ
- 列の点灯パターンに最適(ONにした列だけ電流が流れる)
- 高速スイッチングでちらつき防止
この組み合わせにより、安定して明るいドット表示が可能になります。
基板設計と製作#
PCB(プリント基板)の設計#回路図をもとに、KiCadという無料のCADソフトで基板レイアウトを設計しました。
基板配線図(KiCadで設計)
【初心者向け】基板製作の選択肢#電子工作で基板を作る方法は、大きく3つあります:
方法 メリット デメリット 初心者向け ブレッドボード ハンダ不要、何度でもやり直せる 接触不良が起きやすい、大きい ⭐⭐⭐⭐⭐ ユニバーサル基板 自分でハンダ付け、自由度高い 配線が大変、見た目が悪くなりがち ⭐⭐⭐ PCB基板発注 プロ品質、小型化、量産可能 設計が必要、発注に時間 ⭐⭐今回は 「JLCPCB」 という基板製造サービスを利用しました。
JLCPCBのアセンブリサービスとは?#JLCPCBには、基板を作るだけでなく、**部品も一緒に実装してくれる「アセンブリサービス」**があります。
通常の基板発注:
- 基板だけ届く(配線だけが印刷された緑色の板)
- ICや抵抗を自分でハンダ付け(50個以上ある場合も…)
アセンブリサービス:
- 基板 + 部品がすでに実装済みで届く!
- 残りのコネクタやLEDだけ自分でハンダ付け
今回は以下を実装依頼しました:
- 74HC595 ×2個
- TBD62783 / TBD62083
- 抵抗(数十個)
- パスコン(ノイズ除去用コンデンサ)
自分でハンダ付けする部品:
- ドットマトリクスLED(大きいので手作業が確実)
- Arduinoとの接続コネクタ
「アセンブリって高そう…」と思うかもしれませんが、意外とリーズナブルです。
- 基板5枚 + 表面実装部品代 + アセンブリ費用 ≈ 3,000〜5,000円程度
- 同じ部品を自分で買って50回ハンダ付けする手間を考えると、かなりコスパが良い!
特に 0603サイズの小さな抵抗やコンデンサ は、初心者が手作業でハンダ付けするのは至難の業です。
基板製作と動作確認#
届いた基板をチェック#JLCPCB から届いた基板がこちらです。
JLCPCB から届いた基板(アセンブリ済み)
チェックポイント:
- ✅ IC類が正しい向きで実装されている
- ✅ 抵抗やコンデンサがずれていない
- ✅ ハンダの盛りが均一できれい
- ✅ ショート(意図しない接続)がない
さすがプロの仕上がり!手作業では難しい精度です。
残りの部品をハンダ付け#届いた基板に、自分で以下の部品をハンダ付けしました:
-
ドットマトリクスLED(OSL641501-ARA) → 向きに注意!(通常、▲マークやドットで1番ピンを示しています)
-
Arduinoとの接続コネクタ → ピンソケット(メス)を使うと、Arduinoを抜き差しできて便利
LEDと コネクタを取り付けた完成基板
【初心者向け】ハンダ付けのコツ#ドットマトリクスLEDの取り付け:
- まず 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)
- ✅ 差し込み用ピンソケット
- ✅ 長ピンソケット(ピン名印字あり)
こんな方におすすめ:
- 基板発注の手間を省きたい
- すぐに動作確認したい
- 初めての電子工作で失敗したくない
まとめ: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分