プロジェクト14:74HC595シリアル制御

プロジェクト14:74HC595(シフトレジスタ)でシリアル制御(7セグLED)

このプロジェクトで学ぶこと: シフトレジスタを使って、たった3本のピンで8個のLED(7セグメント)を制御する方法を学びます。「少ない線で多くの情報を送る」シリアル通信の原理を体験します。


完成イメージ

[3本のケーブルで接続した74HC595が7セグLEDに0〜9を順番に表示する動画を挿入]


必要な部品

部品名 数量
Arduino Uno R3 1
74HC595 シフトレジスタ 1
7セグメントLED(1桁、共通カソード) 1
抵抗 220Ω 7
ブレッドボード 1
ジャンパー線 多数

回路図と配線

[回路図画像を挿入]

74HC595のピン配置と配線

74HC595ピン 接続先
VCC(16番) 5V
GND(8番) GND
OE(13番) GND(常時出力有効)
MR(10番) 5V(リセットしない)
DS(14番) Arduino 11番ピン(データ)
SH_CP(11番) Arduino 12番ピン(クロック)
ST_CP(12番) Arduino 8番ピン(ラッチ)
Q0〜Q6 220Ω抵抗経由で7セグa〜g

Arduinoスケッチ(プログラム)

// 74HC595で7セグLEDに0〜9を表示

const int DATA_PIN  = 11;  // DS
const int CLOCK_PIN = 12;  // SH_CP
const int LATCH_PIN = 8;   // ST_CP

// 0〜9のセグメントパターン(a=bit0, b=bit1, ..., g=bit6)
const byte DIGITS[] = {
  0b00111111,  // 0
  0b00000110,  // 1
  0b01011011,  // 2
  0b01001111,  // 3
  0b01100110,  // 4
  0b01101101,  // 5
  0b01111101,  // 6
  0b00000111,  // 7
  0b01111111,  // 8
  0b01101111   // 9
};

void setup() {
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
}

void sendToRegister(byte data) {
  digitalWrite(LATCH_PIN, LOW);          // ラッチを下げてデータ転送開始
  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, data);  // 8ビットを順番に送信
  digitalWrite(LATCH_PIN, HIGH);         // ラッチを上げて出力に反映
}

void loop() {
  for (int i = 0; i < 10; i++) {
    sendToRegister(DIGITS[i]);
    delay(600);
  }
}

コードのポイント解説

shiftOut(データピン, クロックピン, ビット順, データ) 8ビットのデータを1ビットずつ順番に送信するArduino組み込み関数です。クロック信号に同期してデータを1ビットずつ送り出します。MSBFIRSTは最上位ビットから送る指定です。

シフトレジスタの仕組み 74HC595は8ビットのシフトレジスタです。クロックのたびに1ビットずつ内部レジスタにデータが入り、8ビット分が揃ったところでラッチ信号により8本の出力ピンすべてに一度に反映されます。

2進数リテラル 0b00111111 0bで始まる数値は2進数表記です。各ビットが各セグメントのON/OFFに対応するため、パターンの視覚的な確認がしやすくなります。


動作確認

  1. スケッチをアップロードする
  2. 7セグLEDに0〜9が順番に表示されれば成功

このプロジェクトで学んだこと

  • シリアル通信の原理: 少ないピンで多くのデータを送る仕組みを理解しました
  • shiftOut() 8ビットデータを1ビットずつ送信する方法を習得しました
  • 2進数とビット操作: セグメントパターンを2進数で表現する方法を学びました

次のプロジェクト「ジョイスティック」では、2軸のアナログ入力と押しボタンを組み合わせた複合入力を扱います。


深掘り:技術の背景と社会への広がり

シリアル通信の誕生:モールス信号から現代のUSBまで

情報を「少ない線で順番に送る」シリアル通信の原点は1837年のモールス信号にさかのぼります。電信線1本で長短の信号を組み合わせてアルファベットを送るモールス符号は、最初のデジタル通信とも言えます。その後、電話・テレビ放送・コンピュータ通信へと発展し、1960年代に確立されたRS-232C規格がUART(シリアル通信)の標準になりました。74HC595が使うSPIに似た同期シリアル通信は、現代のUSB・HDMI・PCIeに至るまで「少ない線で速く正確に送る」という同じ哲学の上に成り立っています。

大規模LEDマトリクスとスタジアムビジョンへの展開

シフトレジスタの技術はスケールアップすると劇的な応用が生まれます。東京ドームや大型スタジアムの巨大LEDビジョンは、数百万個のRGB LEDをシリアル制御チップで管理しています。数本の信号線から始まるシリアル通信が、数百万画素のフルカラー映像に発展するのです。また近年急成長しているmicro LEDディスプレイ(次世代スマートフォン・AR/VRデバイス向け)も、超高密度なLEDをシリアル信号で精密制御する技術が鍵を握っています。


プロジェクト13:7セグストップウォッチ全プロジェクト一覧 | 次のプロジェクト:ジョイスティック →