12: 2010-01-18 (月) 19:21:04 sho ソース 13: 2010-01-19 (火) 12:31:15 sho ソース
Line 1: Line 1:
*プログラミング① [#kb82317e] *プログラミング① [#kb82317e]
#ref(Warning_1.png,100%) #ref(Warning_1.png,100%)
-「AX-S1の赤外線距離センサに泥棒が反応したら、AX-S1のブザーを鳴らして脅かす」というプログラムを作成します。+「AX-S1の赤外線反射センサに泥棒が反応したら、AX-S1のブザーを鳴らして脅かす」というプログラムを作成します。
プログラムと言うと難しそうだと感じる方もいるかもしれません。しかし本キットは予め用意されたFREEDOMライブラリを使うことで、このプログラムを16行で書くことができます。 プログラムと言うと難しそうだと感じる方もいるかもしれません。しかし本キットは予め用意されたFREEDOMライブラリを使うことで、このプログラムを16行で書くことができます。
Line 11: Line 11:
プログラミングを始める前に処理の流れを図にしましょう。 プログラミングを始める前に処理の流れを図にしましょう。
#ref(Warning_p1.png,100%) #ref(Warning_p1.png,100%)
-スタートから始まり、先ず赤外線距離センサの値を見ます。赤外線距離センサの値をある値(泥棒が来たと判断される値)と比較し、それ以上ならブザーをならし、それ以下ならブザーは鳴りません。その後、再び赤外線距離センサの値取得に戻ります。+スタートから始まり、先ず赤外線反射センサの値を見ます。赤外線反射センサの値をある値(泥棒が来たと判断される値)と比較し、それ以上ならブザーをならし、それ以下ならブザーは鳴りません。その後、再び赤外線反射センサの値取得に戻ります。
今後この図を元にプログラミングを行います。悩んだら見返しましょう。 今後この図を元にプログラミングを行います。悩んだら見返しましょう。
Line 45: Line 45:
**変数宣言 [#k1355d19] **変数宣言 [#k1355d19]
#ref(Warning_p5.png,100%) #ref(Warning_p5.png,100%)
-これから赤外線距離センサの値を読み込むプログラムを書くのですが、読み込んだ値を保存しておく所が必要になります。保存する場所として変数を使います(変数については[[Chapter1.4の変数>FDIII-HC Starter Kit Guide Chapter1.4#ib843ca5]]を参照して下さい)。~+これから赤外線反射センサの値を読み込むプログラムを書くのですが、読み込んだ値を保存しておく所が必要になります。保存する場所として変数を使います(変数については[[Chapter1.4の変数>FDIII-HC Starter Kit Guide Chapter1.4#ib843ca5]]を参照して下さい)。~
メイン関数のvoid main (void)の次にある空の行にカーソルを移動します。メイン関数内であることがわかりやすいようにTabキーを使ってインデントでスペースを空けてから メイン関数のvoid main (void)の次にある空の行にカーソルを移動します。メイン関数内であることがわかりやすいようにTabキーを使ってインデントでスペースを空けてから
Line 53: Line 53:
ReadDataは変数の名前です。~ ReadDataは変数の名前です。~
uint8_tは変数の型です(型については[[Chapter1.4のデータ型>FDIII-HC Starter Kit Guide Chapter1.4#n1ebdc94]]を参照して下さい)。 uint8_tは変数の型です(型については[[Chapter1.4のデータ型>FDIII-HC Starter Kit Guide Chapter1.4#n1ebdc94]]を参照して下さい)。
-これはC言語において通常使う型ではありません。赤外線距離センサ値などのFREEDOMライブラリで扱う値が、符号の無い8ビット(1バイト)単位であることを意味してFREEDOMライブラリではこのように書きます。通常のC言語で書くとunsigned charです。+これはC言語において通常使う型ではありません。赤外線反射センサ値などのFREEDOMライブラリで扱う値が、符号の無い8ビット(1バイト)単位であることを意味してFREEDOMライブラリではこのように書きます。通常のC言語で書くとunsigned charです。
**FREEDOMライブラリの初期化 [#b75be71e] **FREEDOMライブラリの初期化 [#b75be71e]
Line 73: Line 73:
''第4引数''はブザーがなる供給電圧の閾値です。バッテリを使用する場合に、残量が少ない事を知らせます。ここでは7.4と書いて供給電圧が7.4Vを切るとブザーがなるように設定します。但し、第3引数のブザーの設定をしていないので今はブザーは鳴りません。 ''第4引数''はブザーがなる供給電圧の閾値です。バッテリを使用する場合に、残量が少ない事を知らせます。ここでは7.4と書いて供給電圧が7.4Vを切るとブザーがなるように設定します。但し、第3引数のブザーの設定をしていないので今はブザーは鳴りません。
-**赤外線距離センサ値の取得 [#se3a7020]+**赤外線反射センサ値の取得 [#se3a7020]
#ref(Warning_p8.png,100%) #ref(Warning_p8.png,100%)
-初期化まで終われば準備は整いました。処理の流れを描いた図の通り、初めに赤外線距離センサの値を取得します。初期化の後、一行開けて+初期化まで終われば準備は整いました。処理の流れを描いた図の通り、初めに赤外線反射センサの値を取得します。初期化の後、一行開けて
 fd_DXReadByteData (100, 27, &ReadData);  fd_DXReadByteData (100, 27, &ReadData);
と入力して下さい。 と入力して下さい。
Line 84: Line 84:
''第1引数''は、DynamixelのIDです(IDについては[[Chapter1.1のID>FDIII-HC Starter Kit Guide Chapter1.1#eaba0d72]]を参照して下さい)。AX-S1のIDは100です。~ ''第1引数''は、DynamixelのIDです(IDについては[[Chapter1.1のID>FDIII-HC Starter Kit Guide Chapter1.1#eaba0d72]]を参照して下さい)。AX-S1のIDは100です。~
-''第2引数''は、AX-S1のコントロールテーブルのアドレスです。[[Chapter1.1のAX-S1コントロールテーブル>FDIII-HC Starter Kit Guide Chapter1.1#u70f1fa1]]を見て下さい。AX-S1の前方の赤外線距離センサ値のアドレスは27です。+''第2引数''は、AX-S1のコントロールテーブルのアドレスです。[[Chapter1.1のAX-S1コントロールテーブル>FDIII-HC Starter Kit Guide Chapter1.1#u70f1fa1]]を見て下さい。AX-S1の前方の赤外線反射センサ値のアドレスは27です。
''第3引数''は、読み出したデータを入れるための変数のアドレスです(アドレスについては[[Chapter1.4のアドレス>FDIII-HC Starter Kit Guide Chapter1.4#b45fcfd3]]を参照して下さい)。変数の頭に & をつけるとその変数のアドレスという意味になります。AX-S1のコントロールテーブルのアドレスとは関係ありません。 ''第3引数''は、読み出したデータを入れるための変数のアドレスです(アドレスについては[[Chapter1.4のアドレス>FDIII-HC Starter Kit Guide Chapter1.4#b45fcfd3]]を参照して下さい)。変数の頭に & をつけるとその変数のアドレスという意味になります。AX-S1のコントロールテーブルのアドレスとは関係ありません。
Line 92: Line 92:
#ref(Warning_p10.png,100%) #ref(Warning_p10.png,100%)
-赤外線距離センサを取得した関数の後に+赤外線反射センサを取得した関数の後に
 fd_printf("%3d\r", ReadData);  fd_printf("%3d\r", ReadData);
と入力して下さい。 と入力して下さい。


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