4: 2009-12-18 (金) 19:55:24 eid7gud ソース 5: 2009-12-21 (月) 19:58:41 eid7gud ソース
Line 9: Line 9:
処理の流れを図にしましょう。 処理の流れを図にしましょう。
#ref(AutomaticDoor_14.png,100%) #ref(AutomaticDoor_14.png,100%)
-Chapter2との違いはブザーを鳴らす代わりに、センサ値が閾値以上ならバーを開け、閾値以下ならバーを閉じるという所です。人が来てバーが開いたと思ったら直ぐ閉じてしまうと困るのでその後に少し待機します。+Chapter2との違いはブザーを鳴らす代わりに、センサ値が閾値以上ならバーを開け、閾値以下ならバーを閉じるという所です。人が来てバーが開いたら直ぐ閉じてしまうと困るのでその後に少し待機します。
**準備 [#o28e1018] **準備 [#o28e1018]
Line 69: Line 69:
ゴールポジションはアドレス2つ分(2バイト)で表されます。2バイトのデータで表されているので、fd_DXWriteByteData関数(1バイドのデータを書き込む)ではなく、fd_DXWriteWordData関数(2バイドのデータを書き込む)を使います。 ゴールポジションはアドレス2つ分(2バイト)で表されます。2バイトのデータで表されているので、fd_DXWriteByteData関数(1バイドのデータを書き込む)ではなく、fd_DXWriteWordData関数(2バイドのデータを書き込む)を使います。
-''第3引数''はゴールポジションの値です。+''第3引数''は書き込む値(ここではコールポジション)です。
#ref(AutomaticDoor_18.png,100%) #ref(AutomaticDoor_18.png,100%)
AX-12+のホーンは図のように0°から300°まで回転します。ゴールポジションの値は0°なら0、中心の150°なら512、300°なら1023になります。~ AX-12+のホーンは図のように0°から300°まで回転します。ゴールポジションの値は0°なら0、中心の150°なら512、300°なら1023になります。~
#ref(AutomaticDoor_19.png,100%) #ref(AutomaticDoor_19.png,100%)
バーが開いている状態は大凡0°と150°の真ん中として、ゴールポジションの値を300にしました。もし、AX-12+を反対向きにに付けた場合は700位にしましょう。 バーが開いている状態は大凡0°と150°の真ん中として、ゴールポジションの値を300にしました。もし、AX-12+を反対向きにに付けた場合は700位にしましょう。
 +
 +**if~ else~ [#e4c030b4]
 +#ref(AutomaticDoor_20.png,100%)
 +if文後の{}の後に else {} と入力します。(if文について詳しくは[[Chapter1.4のif文>FDIII-HC Starter Kit Guid Chapter1.4#c6144380]]をご覧下さい。)~
 +
 +if文の () 内の条件以外の場合は、elseの{}内を実行します。ここでは「センサ値が閾値(100)より大きい場合を除く」、つまり「センサ値が閾値以下の場合」else 内を実行するということなります。
 +
 +**バーを閉じる [#sd8759fe]
 +#ref(AutomaticDoor_21.png,100%)
 +else 後の {} 内に
 +     fd_DXWriteWordData (1, 30, 512);
 +と記載します。バーを開ける場合のゴールポジションを512(真ん中)に変えただけです。
 +
 +**少し待つ [#q859211e]
 +#ref(AutomaticDoor_22.png,100%)
 +else の {} の後に
 +   fd_Wait (2000);
 +と入力して下さい。
 +これは指定した時間待機する関数です。
 +#ref(AutomaticDoor_23.png,100%)
 +fd_Waitは関数名です。
 +
 +''第1引数''は待つ時間(ms)です。ms(ミリ秒)は1000分の1秒です。つまり1000と入力すると1秒待機します。ここでは2秒待機させるために2000と入力しました。
 +
 +**トルクリミットの設定 [#a3422d73]
 +これで図に書いた一通りの処理のプログラムを書きましたので、書き込んで実行したいところですが、プログラムを書いて初めてAX-12+を動かす時に注意する点があります。~
 +
 +プログラムを間違えると自分が意図していた角度とは異なる角度にAX-12+のホーンが動いてしまうことがあります。ホーンは0~300°まで動きますが、フレームやケースを取り付けた場合、0~300°で動かそうとしてもフレームやケースにぶつかって狭い範囲でしか動きません。それにも拘らず、動かない範囲まで動かそうとするとどうなるでしょうか?~
 +AX-12+に負担が掛かりギアがかけてしまいます。~
 +
 +そうならないようにテスト動作の際はAX-12+のトルクリミットを下げます。トルクリミットとはホーンを動かす力の最大値です。ホーンが回りにくい時、AX-12+は頑張ってホーンを回そうと力を入れます。その力を制限することで壊れることを防ぎます。~
 +ただそれでもAX-12+に負担になりますので予期せぬ動きをした場合は直ぐに電源を切れるようにしましょう。
 +
 +#ref(AutomaticDoor_24.png,100%)
 +
 +fd_Init関数の後に
 +  fd_DXWriteWordData (1, 34, 150);
 +と入力して下さい。~
 +
 +[[AX-12+コントロールテーブル>FDIII-HC Starter Kit Guid Chapter1.1#xa86a787]]を見て下さい。~
 +トルクリミットはアドレス34と35の1バイトで表されるので、fd_DXWriteWordData関数を使います。~
 +IDは1、アドレスは34、トルクリミットは150とします。~
 +トルクリミットは1~1024まで設定でき、0にすると最大の力で動作します。~
 +値が小さ過ぎると力が足りずにホーンが回らなくなります。
 +
 +**動作確認 [#e4ea86c9]
 +一通りプログラムが完成しました。FDIII-HCにプログラムを書き込んで動かしてみましょう。~
 +
 +書き込み方法は[[前章>FDIII-HC Starter Kit Guid Chapter2.4#ybaa88fa]]などを参考にして下さい。~
 +
 +動かして見て気になる点は無いでしょうか?


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom