12. 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+ | |
.configureWakeup() | ウェイクアップトリガを設定します。 | 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ポート入力割り込みイベントを設定します。
指定された割り込み条件が発生した際、ハードウェア割り込みをトリガし、コールバックを実行します。
又、ストップモードのレジュームトリガとして使用されます。
尚、割り込みイベントコールバック処理の中で、割り込みイベントを再設定することはできません。
割り込み機能が使用できるポートについてはPinoutを参照してください。
この機能は最大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(period,pulse)
PWM(Pulse Width Modulation)出力を設定します。
周期及び幅で指定された周期パルスが出力されます。
事前にGPIO動作モード9を指定してください。
生成されるPWM信号は、Low出力で開始されます。
パルス幅で指定された区間までLow出力が維持され、次のパルス周期の開始までHigh出力となります。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
period | number | mandatory | パルス周期 [ x1us | x100us ]設定範囲: 1~1000000 | 1~10000 | 設定範囲に制約があるポートがありますので、Pinoutを参照し、注記を確認してください。 |
pulse | number | mandatory | パルス幅 [ x1us | x100us ]設定範囲: 0~1000000 | 0~10000 | pulseはperiod以下にする必要があります。 |
return | boolean | - | true: 成功 false: 失敗 |
.releasePwm()
.setPwm()で設定したPWM出力を停止し、無効化します。
再度、PWM制御を有効化する場合は、GPIO動作モード9を再指定してください。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | boolean | - | true: 成功 false: 失敗 |
.configureWakeup(edge)
ウェイクアップトリガを設定します。
スタンバイモードに遷移している状態で、ウェイクアップトリガが有効かつ、指定されたエッジ変化が発生した際に、レジュームします。
ウェイクアップ機能が使用できるポートについてはPinoutを参照してください。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
edge | number | mandatory | ウェイクアップトリガを設定します。 0: 無効 1: 立ち上がりエッジ 2: 立ち下がりエッジ | デフォルト無効です。 |
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を指定した場合は1.2us程度となります。 |
value2 | number | mandatory | 2ndシグナル IOポート出力する値を指定します。 0: Low 1: High | |
width2 | number | mandatory | 2ndシグナル IOポート出力する時間[ms]を指定します。 設定範囲: 0~100 | 0を指定した場合は1.2us程度となります。 |
return | boolean | - | true: 成功 false: 失敗 |
オブジェクトの使用例
Sample 1
割り込みを使用するサンプルです。
10秒以内にGPIO13のレベルがHからLに変化した際、コールバック処理が実行されます。
var gp = new GPIO(13,2);
gp.setIrq(2, function(sts) {
print('status fall.');
});
setTimeout(function() {
gp.disableIrq();
print('timeout!');
}, 10000).wait();
Sample 2
PWM制御を使用するサンプルです。
GPIO11で周期10ms、パルス幅5msのPWM出力を10秒間行います。
var gp = new GPIO(11,9);
gp.setPwm(100, 50);
setTimeout(function() {
gp.releasePwm();
print('timeout!');
}, 10000).wait();