obniz Parts Library

SNx4HC595

GitHub
SNx4HC595
Usable Devices :
obniz_board
Found at :
秋月電子通商
秋月電子通商
a.co www.aliexpress.com

SNx4HC595

SNx4HC595はSN54HC595やSN74HC595を扱うためのライブラリです。
1つのチップにある8個の出力できるIOを最低3本の信号線で制御できます。マイコンのIOを増やす時に使うことが多く、「IO拡張(IOエクステンダー)」と呼ばれています。
また、このチップは連続でつなぐことができるので、つなぐごとに使えるIOの数を8,16,24,,,と増やしていくことが出来ます。

Reference
http://www.ti.com/lit/ds/symlink/sn74hc595.pdf

obniz.wired('SNx4HC595', {ser, rclk, srclk [, gnd, vcc, oe, srclr, io_num]});

チップの各ピンをどのobniz Boardのioに接続したか設定します。

name type required default description
ser number(obniz Board io) yes   つないだobniz Boardのioを指定してください。
rclk number(obniz Board io) yes   つないだobniz Boardのioを指定してください。
srclk number(obniz Board io) yes   つないだobniz Boardのioを指定してください。
vcc number(obniz Board io) no   別の電源につないでいる場合は指定する必要はありません。vcc/gndどちらかでも指定されている場合は、電源投入後にこの関数の中でwaitが入ります。
gnd number(obniz Board io) no   別の電源につないでいる場合は指定する必要はありません。vcc/gndどちらかでも指定されている場合は、電源投入後にこの関数の中でwaitが入ります。
oe number(obniz Board io) no   出力ピンすべてをonでもoffでもないハイインピーダンスに切り替えるためのピンです。gndにつなぐことで、通常使用となります。obniz Boardにつながずにgndにつないでいる場合はwired関数で指定しなくても良いです。指定した場合はsetEnable()関数が使えるようになります。enabled=falseを指定しない限りenabledが初期状態となります。
srclr number(obniz Board io) no   シフトレジスタの値をすべてクリアするためのピンです。low->highでクリアされます。5vなどに接続し、obniz Boardから操作しない場合は指定する必要はありません。
io_num number no 8 ioの数を指定します。1つのチップに8個までioがありますが、5などを指定すると、そのうちの5本のみ使用されます。また、連続でチップが繋がれている場合は、ここの数字を増えたIOの数だけ指定します。例えば2チップつないでいて、16ある場合はio_num:16とすることで操作できます。
enabled boolean no true oeが指定されていた場合、初期状態をどちらにするか指定できます。

製品によってピンの配置が異なる場合がありますのでご注意ください

// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4});
ioext.output(3, true)
// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4, io_num:16});
ioext.output(0, true)  // first chip's io
ioext.output(15, true) // next chip's io

ioNum(num)

使用するioの数を指定します。wired()関数でio_numを指定するのと同じです。
指定した時にその数だけ出力はfalseに設定されます。

// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4});
ioext.ioNum(16);
ioext.output(15, true)

output(io, value)

あるioの出力をtrue/falseに設定します。他のioは影響を受けません。

// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4});
ioext.output(3, true)
ioext.output(4, true) // io4 will be changed to true "after" io3 changed to true.
ioext.output(5, true)

onece(function)

このチップは出力を一斉に変更することが出来ます。
チップに繋がれている出力0と出力1を同じタイミングで変更したい時にこの関数を使うことが出来ます。
以下のように指定すると関数の中で行われるチップのio変更が同じタイミングになります。

// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4});
ioext.onece(function(){ // io 4 and 5 will be changed to false state at same timing.
  ioext.output(4, false)
  ioext.output(5, false)
})

getIO(io)

それぞれの出力端子のioオブジェクトを取得します。ioオブジェクトはobniz Boardのioのようにoutput()関数を呼ぶことができます。
また、obnizパーツライブラリのLED7SegmentLEDのioとしても使用することが出来ます。

// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4});

var io1 = ioext.getIO(1);
io1.output(true);

var io2 = ioext.getIO(2);
var led = obniz.wired("LED", {anode: io2});
led.blink();

var io3 = ioext.getIO(3);
var io4 = ioext.getIO(4);
var seg = obniz.wired("7SegmentLED", {a:io3, b: io4, c: 5, d:6, e:7, f:8, g:9, common:10});
seg.print(0);

setEnable(enabled)

oe端子をobniz Boardにつないでいる場合にのみ使えます。
出力ピンをすべてハイインピーダンスにします。

// Javascript Example
var ioext = obniz.wired('SNx4HC595', {gnd:0, vcc:1, ser:2, rclk:3, srclk:4, oe:5, enabled: false});
ioext.output(0, true); // no affect
ioext.setEnable(true); // 0 is true

Supported from: obniz.js 3.5.0