Arduino資料一覧

Node.jsで8ビットシフトレジスタ(SN74HC595N)を使って7セグLED(C-551SRD)を0〜9までカウントアップ表示させる

2017/03/26更新

対応バージョン: Node.js 4.2.6, Johnny-Five 0.10.6

Node.jsでArduino Unoにつないだ8ビットシフトレジスタ(SN74HC595N)を使って7セグLEDを0〜9までカウントアップ表示させる。

Node.jsを動かす母艦はUbuntu 16.04とする。

結線

まずArduino - シフトレジスタ間の結線は以下と同様とする。

関連資料・記事

次にシフトレジスタ - 7セグLED間の結線は以下の通りとする。

・QA: 7ピン(LED-a)

・QB: 6ピン(LED-b)

・QC: 4ピン(LED-c)

・QD: 2ピン(LED-d)

・QE: 1ピン(LED-e)

・QF: 9ピン(LED-f)

・QG: 10ピン(LED-g)

これをふまえて結線は以下の通りとする。

ソース

以下のようなコードを書きNode.jsで実行する。

シフトレジスタに0〜9までのLEDパターンを順番に送信することでカウントアップしているように見せる。

sn74hc595n_7seg.js
// ピン定義
//
// -- ピン配列 ----------------------
//       a(7)
//     +-----+
// f(9)|     |b(6)
//     +g(10)+
// e(1)|     |c(4)
//     +-----+
//       d(2) []DP(5)
//
// -- 値 ----------------------------
// gfedcba <- ピン配列
var led_list = [
  '0111111',  // 0
  '0000110',  // 1
  '1011011',  // 2
  '1001111',  // 3
  '1100110',  // 4
  '1101101',  // 5
  '1111101',  // 6
  '0000111',  // 7
  '1111111',  // 8
  '1101111',  // 9
  '0000000',  // 消灯
];

// メインループ
var five = require("johnny-five");
var board = new five.Board();

board.on('ready', function() {
  var register = new five.ShiftRegister({
    'pins' : {
      'data'  : 2,
      'clock' : 3,
      'latch' : 4
    }
  });

  var i = 0;

  // LEDに表示する数字を1桁ずつカウントアップ
  this.loop(500, function() {
    num = parseInt(led_list[i], 2);  // 2進数 -> 10進数
    register.send(num);              // シフトレジスタに送信
    i++;
    if (i >= led_list.length) {
      i = 0;
    }
  });
});
実行
% node sn74hc595n_7seg.js
1485094276071 Device(s) /dev/ttyACM0  
1485094276078 Connected /dev/ttyACM0  
>>

関連資料・記事

参考サイト