*

C言語でEV3開発(12)-opOUTPUT_TIME_POWERコマンド

公開日: : マインドストーム/EV3, 開発

どもです。
今回のエントリーでは、これまた前回に引き続き、モーターを動かすためのコマンドについて書きます。
コマンドは、「opOUTPUT_TIME_POWER」です。

(1). opOUTPUT_TIME_POWERコマンド
今回紹介するコマンドです。
コマンドのフォーマットは、以下の通りです。

バイトインデックス内容
1コマンドコードopOUTPUT_TIME_POWER(0xAD)
2チャンネル
3パワー(Power)-100~100(%)
4Time1Powerに達するまでに要する時間(ミリ秒)
5Time2Powerで動作させる時間(ミリ秒)
6Time3出力を0(%)に戻すまでに要する時間
7ブレーキ0 = ブレーキをかけない
1 = ブレーキをかける

コマンドフォーマットから見て予想できるかと思いますが、このコマンドの動作と非常に似た動作、というか、ほとんど同じ動作をします。
すなわち、Time1~Time3に示した「時間」ごとにモーターを動かします。
このとき、Time1で指定した時間をかけて、Powerで指定したモーターのパワーを遷移させます。
次に、Time2で指定した時間、Powerで指定したモーターを動作させます。
最後に、Time3で指定した時間をかけて、モーターの出力を0に戻します。

(2). サンプルコード
というわけで、opOUTPUT_TIME_POWERコマンドを使用してモーターを動かします。
サンプルプログラムは、以下の通りです。

(3). 動画
というわけで、実際に動かしてみた場合の動画です。

見てわかるように、モーターは最初ゆっくり動き始め、その後だんだんゆっくりになり、最終的に停止します。
コードにあわせて説明すると、モーターが動作し始めてからの最初の3秒(3000ミリ秒)間をかけて、モーターの出力を100%にします。
次の5秒(5000ミリ秒)間は、モーターを出力100%で動かします。
最後の3秒(3000ミリ秒)間で、モーターの出力を0%に遷移させています。

(4). コマンドの注意点
このコマンドを使用する際には、注意点があります。
まず、回転方向の制御です。
これは、opOUTPUT_STEP_POWERの同様に、Powerで決定しています。
しかし、決定的に異なるのは、この値に負の値を設定した場合です。
opOUTPUT_STEP_POWERでは、負の値を設定しても回転方向は変化しませんでした。
しかし、opOUTPUT_TIME_POWERでは、Powerに負の値を設定した場合、回転方向が逆になります。

また、Powerに0を設定した場合です。
これは、やはり、理想的にはモーターが動作しないことです。
しかし、実際に動かしてみると、モーターは動作してしまいます。
原因は、opOUTPUT_STEP_POWERの場合同様、不明です。

次に、TimeNに設定する値です。
まず、Time1ですが、これは値を設定しない、すなわち0に設定する、ということが可能です。
0を設定した場合、いきなりPowerに設定した出力でモーターが動作します。
次に、Time2ですが、これも値を設定しない、すなわち0に設定することが可能です。
その場合には、もちろん「Powerで指定した出力で、一定時間動作する」ということはなくなります。
ただし、Time1=0、かつTime2=0、かつTime3!=0とした場合、モーターは動作しないので、注意が必要です。
最後にTime3です。
これも、値を設定しない、すなわち0を設定するということが可能です。
Time3に0を設定した場合には、Time1、Time2に対応する動作をした後、モーターが停止します。

以上、今回は、opOUTPUT_TIME_POWERコマンドについて書きました。
次回も、引き続きモーターを動作させるためのコマンドを紹介していきます。
では。

関連記事

Arduino_DHT11

温度(湿度)センサを使ってみた(1)-ArduinoでDHT11

どもです。 今回は、久しぶりにセンサーを購入して使ってみたので、それについて記載します。 1.使

記事を読む

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

iot_at_home_eye_catch

IoT開発(1)-ESP-WROOM-02のセットアップ

どもです。 前回までのエントリで、「DHT11の測定結果をクラウドで見える化する」という内容を書い

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

no image

Windows/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 今回は、Windows/EclipseでRaspberry Piのクロス環境を構築した

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

SEN0193_0114_eye_catch

土壌湿度センサーの出力値の比較:SEN0114とSEN0193

どもです。 今回も、センサーの性能、測定結果を比較してみた結果について書きます。 1.比較し

記事を読む

image027

気圧センサを使ってみた-RaspberryPi/pigpioでMPL115A1

どもです。 前回は、DHT11をRaspberryPi/pigpioで使用、温度を測定してみました

記事を読む

c_sharp_eye_catch

Windowsでのカバレッジ測定-OpenCoverageを使ってみた

どもです。 以前、OpenCppCoverageを使用してWindows上でカバレッジ測定する方法

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」の削除を簡単にしてみた

どもです。 前回、C#/OpenXmlを用いて、エクセルのセル内

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」を削除してみた

どもです。 今回は、C#/OpenXmlの組み合わせで、エクセル

c_sharp_eye_catch
C#でバッファの内容を表示する処理を実装してみた-
データ型に従って動的に書式を設定する

どもです。 最近、C#でバッファ/配列の値をコンソールに表示した

arduino_relay_switch_003_self_preservation_circuit_eye_catch
Arduinoでリレースイッチ(3)-自己保存回路

どもです。 前回の記事で、リレースイッチ「AE-G5V-DRV」

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

→もっと見る

PAGE TOP ↑