はじめに:少ないピンでLEDを自在に操る

今回のプロジェクトでは、前回の記事に引き続き74HC595シフトレジスタを使用し、ドットマトリクスLEDをSPIで制御する基板の作成に挑戦しました。

74HC595 秋月電子で購入

このプロジェクトは、簡素化されたインターフェースを通じて複雑なドットマトリクスLEDのダイナミック点灯を理解し、それを実践することを目的としています。

プロジェクトの背景

Arduinoはその手軽さから絶大な人気を誇りますが、多くのLEDを個別に制御しようとすると、すぐにI/Oピン不足という壁にぶつかります。

例えば、8x8のドットマトリクスLEDを単純に制御するには、なんと64本ものI/Oピンが必要です。これでは一般的なArduinoボードでは到底足りません。

この問題を解決する手法が 「ダイナミック点灯(時分割制御)」 です。
これは、各行(または列)を非常に速いスピードで順番に点灯させることで、人間の目には全体が同時に光っているように見せるテクニックです。

しかし、この方法でも8x8ドットマトリクスでは合計16本 (8行 + 8列) のI/Oピンが必要となり、依然として大きな制約です。

そこで登場するのが74HC595シフトレジスタです。このICを使えば、わずか3本のI/Oピンから送られるシリアルデータを複数の並列データに変換できます。
これにより、Arduinoの限られたリソースを最大限に活用し、複雑なLED表示を実現できるのです。

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

Arduino UNO R4 Minima

Arduino UNO R4 Minima

Arduino UNO R4 Minima starter kit

Arduino UNO R4 Minima starter kit

プロジェクトから得られること

本プロジェクトを通じて、以下の技術的なスキルと考え方を習得することを目指します。

  • ダイナミック点灯の原理と実装方法
  • シフトレジスタ(74HC595)の具体的な使い方
  • マイコン制御の基本となるSPI通信の基礎
  • 回路設計と基板製作のノウハウ

これらの知識は、より複雑なLEDディスプレイや、他の多くの電子工作プロジェクトに応用できる重要な基礎となります。

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

回路について

ドットマトリクスLEDは、その名の通りLEDを格子状(マトリクス状)に配置したディスプレイです。

ドットマトリクスLED

ドットマトリクスLED

内部では、各LEDのアノード(+側)が共通の「行」に、カソード(-側)が共通の「列」に接続されています。
特定のLEDを光らせるには、対応する行と列を選択して電流を流します。

回路図は以下のようになっているものがほとんどです。

ドットマトリクスLED回路

ドットマトリクスLED回路

このシンプルな構造により、ドットマトリクスLEDはメッセージ表示やパターン生成など、多様なビジュアル表現が可能にな

ダイナミック点灯の仕組み

もしすべてのLEDを同時に光らせようとすると、大量のI/Oピンと大きな消費電力が必要になります。
そこで、ダイナミック点灯が活躍します。

これは、1行ずつ(または1列ずつ)表示データを高速で切り替えて点灯させる方法です。
人間の目には残像効果によって、すべての行が同時に点灯しているように見えます。
この手法により、少ないI/Oピンで効率的にディスプレイ全体を制御できます。

より詳しい仕組みについては、以下の記事も参考になります。

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

ダイナミック点灯は効率的な方法であり、限られた数のI/Oピンで大量のLEDを制御することを可能にします。

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

ドットマトリクスLEDは、その視認性と表現力から、以下のような様々な用途で利用されています。

  • 電光掲示板、情報表示パネル
  • デジタル時計、カウンター
  • オーディオスペクトラムアナライザー
  • ゲームやインタラクティブアート

Arduinoと組み合わせることで、アイデア次第でユニークな作品を生み出すことができます。

多岐にわたる活用

多岐にわたる活用

回路と基板の設計

このプロジェクトの核心は、74HC595を使い、ArduinoからSPI通信で受け取ったデータをLEDの点灯信号に変換する回路です。

回路図には、電源、接地、各種抵抗、コンデンサなど、システムの安定性と効率的な動作を保証するために必要な他のコンポーネントも含まれています。

回路図の作成

このプロジェクトでは、最初にArduinoと74HC595シフトレジスタを中心にした回路図を作成しました。
この回路図は、ドットマトリクスLEDをダイナミックに点灯させるために必要なすべての接続を示しています。

74HC595はArduinoとSPI通信を介して接続され、Arduinoからのシリアルデータを受け取り、これをLEDの制御信号に変換します。 回路図には、電源、接地、各種抵抗、コンデンサなど、システムの安定性と効率的な動作を保証するために必要な他のコンポーネントも含まれています。

以下に作成した回路図を示しています。

ドットマトリクスLED ドライブ回路

ドットマトリクスLED ドライブ回路

この設計の重要なポイントは、LEDを駆動するためのドライバICの選定です。

  • アノード側 (行の選択): トランジスタアレイ TBD62783 を使用
  • カソード側 (列の点灯パターン): トランジスタアレイ TBD62083 を使用

なぜドライバICが必要か? 74HC595やArduinoのI/Oピンが直接流せる電流量には限界があります。
多くのLEDを同時に、かつ十分な明るさで点灯させるためには、より大きな電流を供給できるドライバICが不可欠です。

今回採用したTBD62783TBD62083は、高電流駆動能力に優れているため、大規模なドットマトリクスでも安定して明るく点灯させることができます。
また、内部に保護回路も備えており、システムの信頼性を高めてくれます。

これにより、回路はより多くのLEDを安定して制御でき、ダイナミック点灯を実現します。

基板の設計と製作

上記の回路図をもとに設計した基板が以下になっています。

ドットマトリクスLED 基板配線図

ドットマトリクスLED 基板配線図

回路図をもとに基板をCADで設計。基板はJLCPCBで製造依頼し、部品の一部は表面実装サービスで実装依頼しました。

基板製作と動作確認

ICと抵抗・LED・コンデンサなどの表面実装部品はJLCPCBのほうでアセンブリをしてもらいました。

同じ部品をたくさん使う場合、自分で部品を集めてはんだするよりも、手間・価格面共にコスパがいいと思います。

実際に届いた基板が以下のようなものになっております。

発注した基板

発注した基板

しっかりとICや抵抗とかは引っ付いてそうです。あいかわらずきれいに取り付けられています。 その基板に別で用意したドットマトリクスLEDとコネクタをはんだ付けしました。

ドットマトリクスLEDを取り付けた自作基板

ドットマトリクスLEDを取り付けた自作基板

作成した基板をArduinoに取り付けて、実際に動作させてみましょう。 使用しているArduinoは以下のものとなっています。

Arduino UNO R4 Minima

Arduino UNO R4 Minima

Arduino UNO R4 Minima starter kit

Arduino UNO R4 Minima starter kit

そして、実際の動作している動画がこちらになっております。

動画のように、すべての行と列が正しく制御され、意図したパターンでLEDが点灯していることが確認できました。
この基板を使えば、シフトレジスタとダイナミック点灯の学習がはかどりそうです!

宣伝とご紹介

GitHubで公開中

実装ファイルも同梱

74HC595_testboard.zipにBOM/CPLなどを含んでおり、JLCPCBでそのまま実装依頼も可能です。 そちらのファイルを使用することで、JLCPCB様より表面実装部品が実装済みの基板を製作することができますので、自己責任とはなりますがご利用いただけたらと思います。

Boothショップでも購入可能

紹介したテストボードはBoothのショップで購入できます。セット内容は以下の通りです。 ElectroRam Studioにて販売中。セット内容:

  • Arduinoシールド基板
  • ドットマトリクスLED(OSL641501-ARA)
  • 差し込み用ピンソケット
  • 長ピンソケット(ピン名印字あり)

購入サイトはこちら → ElectroRam Studio


この記事が、皆さんの電子工作ライフの一助となれば幸いです。 最後までお読みいただきありがとうございました!

See You …