IOエクスパンダを使用するには、Expanderオブジェクトを使います。Expanderオブジェクトは、物理的なボードに接続された単一のIOエクスパンダを表すオブジェクトです。
Expanderオブジェクトを作成するには、Expanderコンストラクタを使います。引数にはデバイス名を指定します。
new five.Expander("デバイス名");
|
オプションの「controller」プロパティを使用して、次のように書くこともできます。
new five.Expander({
controller: "デバイス名"
});
|
Johnny-FiveのサポートするIOエクスパンダは、次のとおりです。IOエクスパンダのほかに、AD/DAコンバータ、多チャンネルサーボ―コントローラなどもサポートしています。
・PCF8574、PCF8574A、PCF8575
・PCA9685
・PCF8591
・74HC595, SN74HC595
・CD74HC4067
各IOエクスパンダの機能は、次のとおりです。
ピン数
|
モード
|
|
MCP23017
|
16
|
INPUT、OUTPUT
|
MCP23008
|
8
|
INPUT、OUTPUT
|
PCF8574
|
8
|
INPUT、OUTPUT
|
PCF8574A
|
8
|
INPUT、OUTPUT
|
PCF8575
|
16
|
INPUT、OUTPUT
|
PCF8591
|
4
|
INPUT、OUTPUT
|
PCA9685
|
16
|
OUTPUT、PWM、SERVO
|
MUXSHIELD2
|
48
|
INPUT、OUTPUT、ANALOG
|
GROVEPI
|
10(※)
|
INPUT、OUTPUT、ANALOG、PWM、SERVO
|
CD74HC4067
|
16
|
ANALOG
|
74HC595
|
8
|
OUTPUT
|
※7デジタル、3アナログ
I2CインターフェイスのIOエクスパンダのI2Cアドレスを指定するには、「address」プロパティを使います。
new five.Expander({
controller: "デバイス名",
address: 0x??
});
|
各デバイスの既定のI2Cアドレスは、次のとおりです。
デバイス名
|
範囲
|
既定値
|
MCP23017
|
0x20-0x27
|
0x20
|
MCP23008
|
0x20-0x27
|
0x20
|
PCF8574
|
0x20-0x27
|
0x20
|
PCF8574A
|
0x38-0x3F
|
0x38
|
PCF8575
|
0x20-0x27
|
0x20
|
PCF8591
|
0x48-0x4F
|
0x48
|
PCA9685
|
0x40-0x4F
|
0x40
|
GROVEPI
|
0x04
|
0x04
|
CD74HC4067
|
0x0A
|
0x18
|
シフトレジルタの74HC595を使用するためExpanderオブジェクトを作成するには、「controller」プロパティに「74HC595」を指定し、「pins」プロパティに「data」「clock」「latch」「reset(オプション)」用のピンの値を含む配列またはオブジェクトを指定します。
たとえば、2ピンを「data」、3ピンを「clock」、4ピンを「latch」に使用する「74HC595」のExpanderオブジェクトを作成するには、次のように書きます。
// J5-Arduino\12\Expander\anode-common.js
new five.Expander({
controller: "74HC595",
pins:
{
data: 2,
clock: 3,
latch: 4
}
})
|
・配線図
○IOエクスパンダのI/Oポートを制御する
IOエクスパンダのI/Oポートを制御するには、ExpanderオブジェクトのAPIメソッドを使います。
・ピンモードの設定
pinMode(ピン番号, モード)
|
たとえば、0ピンのモードを入力(デジタル入力)に設定するには、次のように書きます。
expander.pinMode(0,
expander.MODES.INPUT);
|
・アナログ入力値の読み取り
アナログピンのアナログ入力値を読み取るには、「analogRead」メソッドを使います。引数には、ピン番号とハンドラを指定します。ハンドラには、(読み取り時に実行するコールバック関数を指定します。読み取った値はハンドラの引数に返されます。
analogRead(ピン番号, ハンドラ( 引数 ) )
|
たとえば、0ピンのアナログ入力値を読み取り、取得した値を表示するには、次のように書きます。
expander.analogRead(0,
function(value) {
console.log(value);
});
|
・デジタル入力値の読み取り
デジタルピンのデジタル入力値を読み取るには、「digitalRead」メソッドを使います。引数には、ピン番号とハンドラを指定します。ハンドラには、(読み取り時に実行するコールバック関数を指定します。読み取った値はハンドラの引数に返されます。
digitalRead(ピン番号, ハンドラ( 引数 ) )
|
たとえば、0ピンのデジタル入力値を読み取り、取得した値を表示するには、次のように書きます。
expander.digitalRead(0,
function(value) {
console.log(value);
});
|
・デジタル値の出力
デジタル値を出力するには、「digitalWrite」メソッドを使います。引数には、ピン番号と出力値(「0」または「1」)を指定します。
digitalWrite(ピン番号, 出力値)
|
たとえば、0ピンに「1」(HIGH)を出力するには、次のように書きます。
expander.digitalWrite(0,
1)
|
・PWMの出力
PWMを出力するには、「pwmWrite」メソッド、または「analogWrite」メソッドを使います。引数には、ピン番号と出力値(0~255)と指定します。
pwmWrite(ピン番号, 出力値)
analogWrite(ピン番号, 出力値)
|
たとえば、0ピンにPWM値「255」を出力するには、次のように書きます。
expander.pwmWrite(0,
255);
|
・サーボ値の出力
サーボ値(サーボモーターの回転角度)を出力するには、「servoWrite」メソッドを使います。引数には、ピン番号と角度(0~180)を指定します。
servoWrite(ピン番号, 角度)
|
たとえば、0ピンのサーボ値180度を出力するには、次のように書きます。
expander.servoWrite(0,
180);
|
IOエクスパンダは、コンポーネントと関連付けすることで、コンポーネントのオブジェクトからシームレスでアクセスできるようになります。
IOエクスパンダは、コンポーネントと関連付けするには、まずIOエクスパンダの仮想ボードを作成します。仮想ボードを作成するには、Board.Virtualコンストラクタの引数にExpanderオブジェクトを渡します。
たとえば、「PCF8575」の仮想ボードを作成するには、次のように書きます。
var
virtual = new five.Board.Virtual(
new five.Expander("PCF8575")
);
|
次にコンポーネントのオブジェクトを作成します。このとき、「board」プロパティに仮想ボードのオブジェクトを指定します。「pin」や「pins」プロパティには、仮想ボード上のピン番号を指定します。
たとえば、「PCF8575」の0ピンにLEDを、17ピンにボタンを接続して、コントロールできるようにするには、次のように書きます。
// J5-Arduino\12\Expander\pcf8575.js
// Ledオブジェクトを作成
// 「PCF8575」の0ピンにLEDを接続
var
led = new five.Led({
board:
virtual,
pin: 0,
});
// Buttonオブジェクトを作成
// 「PCF8575」の17ピンにボタンを接続
var
button = new five.Button({
board:
virtual
pin: 17,
});
|
・配線図
0 件のコメント:
コメントを投稿