Arduino 資料一覧
Node.jsで8ビットシフトレジスタ(SN74HC595N)を使って7セグLED(C-551SRD)を0〜9までカウントアップ表示させる
2017/03/26更新
対応バージョン: Node.js 4.2.6, Johnny-Five 0.10.6


8ビットシフトレジスタ SN74HC595N (秋月電子通商)
超高輝度赤色7セグメントLED表示器 1文字カソードコモン ボディ黒 C-551SRD (秋月電子通商)
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 >>

関連資料・記事
[Arduino] Node.jsのJohnny-Fiveフレームワークを使ってArduino UnoでLチカ
[Arduino] Node.jsで8ビットシフトレジスタ(SN74HC595N)を使ってLEDを点灯させる
参考サイト
Arduino (Wikipedia)
Arduino技術情報 (Qiita)
Arduino関連情報 (Device Plus)
Arduino記事一覧 (Think IT)
Node.js技術情報 (Qiita)
Johnny-Five技術情報 (Qiita)
エレクトロニクス豆知識 (ROHM)