11. GPIO
GPIOオブジェクトは、GPIO制御機能を提供する組み込みオブジェクトです。
機能概要:
- GPIOポートの入出力設定及び制御する機能を提供します。
- PWM出力機能を提供します。
Abstracts
| Methods()/Properties | Summary | Version | Note |
|---|---|---|---|
| new GPIO() | GPIOインスタンスを生成します。 | 01.00.00+ |
{GPIO} Instance
| Methods()/Properties | Summary | Version | Note |
|---|---|---|---|
| .setMode() | GPIO動作モードを設定します。 | 01.00.00+ | |
| .getValue() | IOポート状態を取得します。 | 01.00.00+ | |
| .setValue() | IOポート出力を設定します。 | 01.00.00+ | |
| .setIrq() | IOポート入力割り込みイベントを設定します。 | 01.00.00+ | |
| .disableIrq() | .setIrq()で設定したIOポート入力割り込みイベントを無効化します。 | 01.00.00+ | |
| .setPwm() | PWM出力を設定します。 | 01.00.00+ | |
| .releasePwm() | .setPwm()で設定したPWM出力を停止し、無効化します。 | 01.00.00+ | |
| .setOnePulse() | 任意1パルスを出力します。 | 01.00.00+ |
Details
new GPIO(gpioNo,mode)
GPIOインスタンスを生成します。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| gpioNo | number | mandatory | GPIO番号を指定します。 Pinoutを参照してください。 | |
| mode | number | mandatory | GPIO動作モードを指定します。 GPIO動作モード詳細を参照してください。 | |
| return | {GPIO} | - | {GPIO} : 生成された{GPIO} |
GPIO動作モード詳細
| mode | I/O | Summary | Note |
|---|---|---|---|
| 0 | IN | PULL-UP | - |
| 1 | IN | PULL-DOWN | - |
| 2 | IN | - | |
| 3 | OUT | PUSH-PULL PULL-UP | - |
| 4 | OUT | PUSH-PULL PULL-DOWN | - |
| 5 | OUT | PUSH-PULL | - |
| 6 | OUT | OPEN-DRAIN PULL-UP | - |
| 7 | OUT | OPEN-DRAIN PULL-DOWN | - |
| 8 | OUT | OPEN-DRAIN | - |
| 9 | OUT | PWM | PWM機能が使用できるポートについてはPinoutを参照してください。 |
.setMode(mode)
GPIO動作モードを設定します。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| mode | number | mandatory | GPIO動作モード GPIO動作モード詳細を参照してください。 | |
| return | boolean | - | true: 成功 false: 失敗 |
.getValue()
IOポート状態を取得します。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| return | number | - | IOポート状態 0: Low 1: High | IOポートの設定によって状態が取得できない場合、-1が返却されます。 |
.setValue(value)
IOポート出力を設定します。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| value | number | mandatory | IOポート出力値 0: Low 1: High | |
| return | boolean | - | true: 成功 false: 失敗 |
.setIrq(edge,callback)
IOポート入力割り込みイベントを設定します。
指定された割り込み条件が発生した際、ハードウェア割り込みをトリガし、コールバックを実行します。
又、スタンバイモードのレジュームトリガとして使用されます。
尚、割り込みイベントコールバック処理の中で、割り込みイベントを再設定することはできません。
この機能は最大4ポートまで使用可能です。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| edge | number | mandatory | 割り込み条件 1: 立ち上がりエッジ 2: 立ち下がりエッジ 3: 立ち上がり・立ち上がりエッジ | |
| callback(value) | function | mandatory | 割り込みイベントが発生した時にコールバック処理を実行します。 value : {number} イベント発生時のIOポート状態 0: Low 1: High | |
| return | boolean | - | true: 成功 false: 失敗 |
.disableIrq()
.setIrq()で設定したIOポート入力割り込みイベントを無効化します。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| return | boolean | - | true: 成功 false: 失敗 |
.setPwm(frequency,duty)
PWM(Pulse Width Modulation)出力を設定します。
パルス周波数及びデューティー比で指定された周期パルスが出力されます。
事前にGPIO動作モード9を指定してください。
生成されるPWM信号は、Low出力で開始されます。
指定されたデューティー比によるHigh期間の割合になると、次のパルス周期の開始までHigh出力となります。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| frequency | number | mandatory | パルス周波数[Hz] 設定範囲: 1~4000000 | |
| duty | number | mandatory | デューティー比[N/65536] 1周期を65536とした場合の比率を指定します。(High期間の割り合い) 設定範囲: 1~65535 | 指定された比率から計算上の近似値でLow,Highの区間を決定するため、出力される波形は正確なデューティー比にならず丸め誤差を含むことがあります。 又、パルス周波数が高いほど、デューティー分解能が低下し、誤差が大きくなります。 |
| return | boolean | - | true: 成功 false: 失敗 |
.releasePwm()
.setPwm()で設定したPWM出力を停止し、無効化します。
再度、PWM制御を有効化する場合は、GPIO動作モード9を再指定してください。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| return | boolean | - | true: 成功 false: 失敗 |
.setOnePulse(value1,width1,value2,width2)
任意1パルスを出力します。
ソフトウェアによるブロック型処理により生成された任意1パルスを出力する機能となります。
PWMの様に厳密に周期が保証されていませんので、評価した上で使用してください。
| Name | Type | M/O | Summary | Note |
|---|---|---|---|---|
| value1 | number | mandatory | 1stシグナルIOポート出力する値を指定します。 0: Low 1: High | |
| width1 | number | mandatory | 1stシグナルIOポート出力する時間[ms]を指定します。 設定範囲: 0~100 | 0を指定した場合は1us程度となります。 |
| value2 | number | mandatory | 2ndシグナルIOポート出力する値を指定します。 0: Low 1: High | |
| width2 | number | mandatory | 2ndシグナルIOポート出力する時間[ms]を指定します。 設定範囲: 0~100 | 0を指定した場合は1us程度となります。 |
| return | boolean | - | true: 成功 false: 失敗 |
オブジェクトの使用例
Sample 1
割り込みを使用するサンプルです。
10秒以内にGPIO48のレベルがHからLに変化した際、コールバック処理が実行されます。
var gp = new GPIO(48,2);
gp.setIrq(2, function(sts) {
print('status fall.');
});
setTimeout(function() {
gp.disableIrq();
print('timeout!');
}, 10000).wait();
Sample 2
PWM制御を使用するサンプルです。
GPIO46で周期10ms、パルス幅5msのPWM出力を10秒間行います。
var gp = new GPIO(46,9);
gp.setPwm(100, 32768);
setTimeout(function() {
gp.releasePwm();
print('timeout!');
}, 10000).wait();
