3: 2009-12-17 (木) 19:40:53 eid7gud | 4: 2009-12-18 (金) 19:55:24 eid7gud | ||
---|---|---|---|
Line 4: | Line 4: | ||
「AX-S1の距離センサに人が反応したら、AX-12+でバーを開く」というプログラムを作成します~ | 「AX-S1の距離センサに人が反応したら、AX-12+でバーを開く」というプログラムを作成します~ | ||
- | Chapter2で「AX-S1の距離センサに泥棒が反応したら、AX-S1のブザーを鳴らして脅かす」というプログラムを作りました。これとの違いはAX-S1のブザーを鳴らすか、AX-12+を動かすかの違いだけです。 | + | Chapter2で「AX-S1の距離センサに泥棒が反応したら、AX-S1のブザーを鳴らして脅かす」というプログラムを作りました。違いはAX-S1のブザーを鳴らすか、AX-12+を動かすかだけです。 |
**処理の流れを図にする [#t29737cd] | **処理の流れを図にする [#t29737cd] | ||
処理の流れを図にしましょう。 | 処理の流れを図にしましょう。 | ||
#ref(AutomaticDoor_14.png,100%) | #ref(AutomaticDoor_14.png,100%) | ||
- | Chapter2との違いはブザーを鳴らす代わりに、センサ値が閾値以上ならバーを開け、閾値以下ならバーを閉じるという所です。人が来てバーが開いたと思ったら直ぐ閉じてしまうと困るのでその後に少し待機があります。 | + | Chapter2との違いはブザーを鳴らす代わりに、センサ値が閾値以上ならバーを開け、閾値以下ならバーを閉じるという所です。人が来てバーが開いたと思ったら直ぐ閉じてしまうと困るのでその後に少し待機します。 |
**準備 [#o28e1018] | **準備 [#o28e1018] | ||
Line 49: | Line 49: | ||
**ブザーを鳴らす部分を削除 [#ma9b92ad] | **ブザーを鳴らす部分を削除 [#ma9b92ad] | ||
+ | #ref(AutomaticDoor_15.png,100%) | ||
fd_DXWriteByteData (100, 40, 10); | fd_DXWriteByteData (100, 40, 10); | ||
fd_DXWriteByteData (100, 41, 10); | fd_DXWriteByteData (100, 41, 10); | ||
はブザーを鳴らす部分です。今回は必要ありませんので削除します。 | はブザーを鳴らす部分です。今回は必要ありませんので削除します。 | ||
- | #ref(AutomaticDoor_15.png,100%) | ||
**バーを開ける [#icc81839] | **バーを開ける [#icc81839] | ||
#ref(AutomaticDoor_16.png,100%) | #ref(AutomaticDoor_16.png,100%) | ||
- | センサ値と閾値を比較するif分の { の中に | + | センサ値と閾値を比較するif分の { } の中に |
fd_DXWriteWordData (1, 30, 300); | fd_DXWriteWordData (1, 30, 300); | ||
と入力して下さい。 | と入力して下さい。 | ||
Line 64: | Line 64: | ||
fd_DXWriteWordDataは関数名です。 | fd_DXWriteWordDataは関数名です。 | ||
- | ''第1引数''はDynamixelのIDです。AX-12+のIDは1です。 | + | ''第1引数''はDynamixelのIDです。付属のAX-12+のIDは1です。 |
''第2引数''はAX-12+のコントロールテーブルのアドレスです。[[AX-12+コントロールテーブル>FDIII-HC Starter Kit Guid Chapter1.1#xa86a787]]を見て下さい。AX-12+のホーンの位置の指令は、アドレス30と31のゴールポジションにデータを書くことで行います。~ | ''第2引数''はAX-12+のコントロールテーブルのアドレスです。[[AX-12+コントロールテーブル>FDIII-HC Starter Kit Guid Chapter1.1#xa86a787]]を見て下さい。AX-12+のホーンの位置の指令は、アドレス30と31のゴールポジションにデータを書くことで行います。~ | ||
- | ゴールポジションが2バイトのデータで表されているので、fd_DXWriteByteData関数(1バイドのデータを書き込む)ではなく、fd_DXWriteWordData関数を使います。 | + | ゴールポジションはアドレス2つ分(2バイト)で表されます。2バイトのデータで表されているので、fd_DXWriteByteData関数(1バイドのデータを書き込む)ではなく、fd_DXWriteWordData関数(2バイドのデータを書き込む)を使います。 |
''第3引数''はゴールポジションの値です。 | ''第3引数''はゴールポジションの値です。 | ||
Line 73: | Line 73: | ||
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位にしましょう。 |