記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Johnny-Fiveでマイコン制御36 - IOエクスパンダ

Expanderオブジェクトを作成する

 IOエクスパンダを使用するには、Expanderオブジェクトを使います。Expanderオブジェクトは、物理的なボードに接続された単一のIOエクスパンダを表すオブジェクトです。

Expanderオブジェクトを作成するには、Expanderコンストラクタを使います。引数にはデバイス名を指定します。

new five.Expander("デバイス名");

 

 オプションの「controller」プロパティを使用して、次のように書くこともできます。

new five.Expander({

  controller: "デバイス名"

});

 

Johnny-FiveのサポートするIOエクスパンダは、次のとおりです。IOエクスパンダのほかに、AD/DAコンバータ、多チャンネルサーボ―コントローラなどもサポートしています。

 

MCP23017MCP23008

MCP23017 Raspberry PiGPIOエクスパンダ

PCF8574PCF8574APCF8575

PCF8574 IO拡張ボードI2C開発ボード

PCA9685

16チャネル PWM/サーボ ドライバー

PCF8591

PCF8591AD/ DA コンバータモジュール

MUXSHIELD2

GROVEPI(Raspberry Pi)

74HC595, SN74HC595

74HC595搭載シフトレジスタボード

CD74HC4067

CD74HC4067 CMOS 16チャンネル デジタル アナログ 多重ブレックアウトモジュール

 

 各IOエクスパンダの機能は、次のとおりです。

デバイス名

ピン数

モード

MCP23017

16

INPUTOUTPUT

MCP23008

8

INPUTOUTPUT

PCF8574

8

INPUTOUTPUT

PCF8574A

8

INPUTOUTPUT

PCF8575

16

INPUTOUTPUT

PCF8591

4

INPUTOUTPUT

PCA9685

16

OUTPUTPWMSERVO

MUXSHIELD2

48

INPUTOUTPUTANALOG

GROVEPI

10()

INPUTOUTPUTANALOGPWMSERVO

CD74HC4067

16

ANALOG

74HC595

8

OUTPUT

7デジタル、3アナログ

 

IOエクスパンダのI2Cアドレスを指定する

 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オブジェクトを作成する

 シフトレジルタの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

  }

})

 

・配線図

2016080821.png 

 

IOエクスパンダのI/Oポートを制御する

 IOエクスパンダのI/Oポートを制御するには、ExpanderオブジェクトのAPIメソッドを使います。

 

・ピンモードの設定

 ピンモードを設定するには、「pinMode」メソッド使います。引数にはピン番号とモードを指定します。各IOエクスパンダで設定可能なモードは、こちらの表を参照してください。

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」メソッドを使います。引数には、ピン番号と出力値(0255)と指定します。

pwmWrite(ピン番号, 出力値)

analogWrite(ピン番号, 出力値)

 たとえば、0ピンにPWM値「255」を出力するには、次のように書きます。

expander.pwmWrite(0, 255);

 

・サーボ値の出力

 サーボ値(サーボモーターの回転角度)を出力するには、「servoWrite」メソッドを使います。引数には、ピン番号と角度(0180)を指定します。

servoWrite(ピン番号, 角度)

 たとえば、0ピンのサーボ値180度を出力するには、次のように書きます。

expander.servoWrite(0, 180);

 

IOエクスパンダとコンポーネントを関連付ける

 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,

  });

 

・配線図
2016082002.png 




スポンサーサイト

コメント

コメントの投稿

非公開コメント

ads

プロフィール

部員3号

Author:部員3号
FC2ブログへようこそ!

kindle本

最新コメント

温度計

ads

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。