UNPKG

obniz

Version:

obniz sdk for javascript

215 lines (172 loc) 6.94 kB
# Peripherals IO General purpose IO io0からio11まで利用できます。 #### 特徴 ##### output それぞれのioでデジタル出力が可能です。 出力のドライブ方法は下の3つから選べます。 タイプ | 電圧 | 最大電流 | 最大周波数 | 詳細 :---: | :---: | :---: | :---: | --- push-pull | `5v` | <=1A | <=250khz(推奨) | 標準。過電流/ドライバ高温保護付き push-pull | `3v` | <=1mA(推奨) | <=80Mhz | io.output()使用時の過電流自動停止と警告 open-drain | `<=5v` | <=1mA(推奨) | <=80Mhz | 上記出力方法はIOごとに設定できます。 また、io.output()のだけでなく、UARTやSPIなどの出力時にも好きなドライブ方法を選択できます。 ##### input デジタル入力タイプは1つのみとなります。 5V入力が可能な3v入力となっています。つまり、しきい値はCMOSレベルです。 タイプ | レベル | 最大周波数 | 詳細 :---: | :---: | :---: | :---: digital-in | `3v(5vトレラント)` | <=80Mhz | ##### internal weak pull-up/pull-dow プルアップ・ダウンは各IOごとに設定でき、以下の4タイプから選べます。 また、 タイプ | プル先 | 詳細 :---: | :---: | :---: floating | &nbsp; | 標準設定 pull-up | `5v` | pull-up | `3v` | pull-down | `gnd` | ## output(value) ObnizのX番ピンを出力ピンにして1または0を出力します。 ```Javascript // Javascript Example obniz.io1.output(true); // io1 is 5V ``` ## drive(type) 出力するときのドライブ方法を変更します。 デフォルトでは"5v"となっていて、モータードライバを使った5vのプッシュプルで、最大電流が1Aのモードとなっています。 1. "5v" - push-pull 5v モード. 最大1A 2. "3v" - push-pull 3v モード. 最大約 1mA. 電圧は電流を流すほど低下していきます。 3. "open-drain" - open-drain モード. 電圧と電流についてはpush-pull3vと同じです。 が利用可能です。 ```Javascript // Javascript Example obniz.io0.output(true); // output push-pull 5v obniz.io1.drive("3v"); obniz.io1.output(true); // output push-pull 3v obniz.io2.pull("5v"); obniz.io2.drive("open-drain"); obniz.io2.output(true); // output open-drain with 5v pull-up ``` ## pull(pullType) IOの内部プルアップ・プルダウンを変更します。 1. null (default) 2. "5v" 5vに内部プルアップします。 3. "3v" 3vに内部プルアップします。 4. "0v" gndにプルダウンします。 ```Javascript // Javascript Example obniz.io0.pull("3v"); obniz.io0.drive("open-drain"); // output open-drain obniz.io0.output(false); ``` ## input(callback) ピンに加わっている電圧を読みtrue/falseを読み取ります。 信号レベルは5vトレラントの3v入力です。 出力タイプはinputには関係ないためdrive()の指定とは関係ありません。 true/falseの値が変わるたびにcallbackを呼び出します。 ```Javascript // Javascript Example obniz.io0.input(function(value){ console.log("changed to " + value); }); ``` ## [await] inputWait ピンに加わっている電圧を読み結果をtrue/falseで返します。 この関数を呼ぶことでピンをinputに設定し、値が返ってくるまで関数はwaitします。 ```Javascript // Javascript Example var value = await obniz.io0.inputWait(); console.log(value); ``` ## end() ioXにおけるoutputinputを停止します。 output()かinput()を使っているときのみ効果があります。 ADやUARTをioXで使っている場合はこれでは停止しません。 また、pull-up downも影響を受けません。 ```Javascript // Javascript Example obniz.io0.output(true) obniz.io0.end(); ``` ## io.animation(name, status [, animations, repeat]) io animationは高速にioを変化させたいたい時に使います。 名前を分けて複数登録しておくことができます。ある一連のioの変化を登録しておいて繰り返し変化させるという"loop"アニメーションが利用できます。 どのように変化させるかはjavascriptで同じように記載することができます。 名前 | 型 | デフォルト | オプショナル | 説明 --- | --- | --- | --- | --- name | string | なし | 必須 | アニメーションの名前になります。 status | string | なし | 必須 | このアニメーションの状態を指定します。 animations | array | なし | オプショナル | 実際のアニメーションになります。`pause``resume`のときは不要です repeat | number | undefined | オプショナル | アニメーションの繰り返し回数です。指定しない場合は無限となります。1から2^32-1までの数字を指定できます。この回数はanimationsで指定する各状態の変化を何度行うかになります。 ### statusについて status | 意味 --- | --- | `'loop'` | 繰り返し変化させます。すぐに動作を開始します。 `'registrate'` | 繰り返し変化させます。登録だけを行い、動作は開始しません `'pause'` | 登録済みのアニメーションを今の状態で一時停止します `'resume'` | 一時停止しているアニメーションを再開します ### animationの指定方法 durationはその状態がどれだけ続くかで、1~429426ミリ秒(約1時間)が指定できます。 stateにセットする関数の中でioの状態を指定してください。 ```Javascript // Javascript Example obniz.io.animation("animation-1", "loop", [ { duration: 10, state: function(index){ // index = 0 obniz.io0.output(false) obniz.io1.output(true) } },{ duration: 10, state: function(index){ // index = 1 obniz.io0.output(true) obniz.io1.output(false) } } ]) ``` 実行するとこのような波形になります。 ![](./images/ioanimation.png) io animationの削除 ```Javascript // Example obniz.io.animation("animation-1", "loop") ``` io animationの一時停止 ```Javascript // Example obniz.io.animation("animation-1", "pause") ``` io animationの再開 ```Javascript // Example obniz.io.animation("animation-1", "resume") ``` ## [await] io.repeatWait(animations, repeat) io animationを回数付きで指定し、かつそれが完了するまで待ちます。 名前 | 型 | デフォルト | オプショナル | 説明 --- | --- | --- | --- | --- animations | array | なし | 必須 | 実際のアニメーションになります。 repeat | number | なし | 必須 | アニメーションの回数になります ```Javascript // Javascript Example await obniz.io.repeatWait([ { duration: 1000, state: function(index){ obniz.io0.output(true) } },{ duration: 1000, state: function(index){ obniz.io0.output(false) } } ], 4) ```