10: 2010-01-13 (水) 17:08:08 sho | 11: 2010-01-18 (月) 16:00:47 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 19: | Line 19: | ||
#ref(write1.png,100%) | #ref(write1.png,100%) | ||
デスクトップのGCC Developer LiteのショートカットをダブルクリックしてGCC Developer Liteを起動します。 | デスクトップのGCC Developer LiteのショートカットをダブルクリックしてGCC Developer Liteを起動します。 | ||
+ | #ref(write1_2.png,100%) | ||
+ | GCC Developer Liteの青いエリアにプログラムを書いて行きます。プログラムは半角英数で入力します。大文字と小文字を区別して下さい。~ | ||
+ | 最初から[EOF]と書いてありますが、これはファイルの終わりを示すものですので気にせず入力して下さい。 | ||
**FREEDOMライブラリを使えるようにする [#ke15e8c6] | **FREEDOMライブラリを使えるようにする [#ke15e8c6] | ||
Line 27: | Line 30: | ||
---- | ---- | ||
#ref(Warning_p3.png,100%) | #ref(Warning_p3.png,100%) | ||
- | fd.hというファイルの中に色々な関数が書かれています。~ | + | fd.hという名前のファイルの中に色々な関数が書かれています。~ |
- | #include <fd.h>と入力した行の上でCtrlボタンを押しながらダブルクリックするとfd.hを開くことができますので見てみましょう。 | + | #include <fd.h>と入力した行の上でCtrlボタンを押しながらダブルクリックするとfd.hを開くことができます。~ |
+ | まだfd.hの中身を理解する必要はありません。fd.hのウィンドウ右上の×ボタン(GCC Developer Liteウィンドウの×ボタンではありません)で閉じます。 | ||
**メイン関数 [#c9fdea2a] | **メイン関数 [#c9fdea2a] | ||
Line 41: | 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キーを使ってインデントでスペースを空けてから |
uint8_t ReadData; | uint8_t ReadData; | ||
- | と入力して下さい。メイン関数の中ではTabキーを使ってインデントを付けます(プログラムの書き方については[[Chapter1.4のプログラムの書き方>FDIII-HC Starter Kit Guide Chapter1.4#y8e712e1]]を参照して下さい)。~ | + | と入力して下さい(プログラムの書き方については[[Chapter1.4のプログラムの書き方>FDIII-HC Starter Kit Guide Chapter1.4#y8e712e1]]を参照して下さい)。 |
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] |
#ref(Warning_p6.png,100%) | #ref(Warning_p6.png,100%) | ||
FREEDOMライブラリを使用するためには必ずメイン関数の初めに初期化をしなければなりません。 | FREEDOMライブラリを使用するためには必ずメイン関数の初めに初期化をしなければなりません。 | ||
Line 69: | Line 73: | ||
''第4引数''はブザーがなる供給電圧の閾値です。バッテリを使用する場合に、残量が少ない事を知らせます。ここでは7.4と書いて供給電圧が7.4Vを切るとブザーがなるように設定します。 | ''第4引数''はブザーがなる供給電圧の閾値です。バッテリを使用する場合に、残量が少ない事を知らせます。ここでは7.4と書いて供給電圧が7.4Vを切るとブザーがなるように設定します。 | ||
- | **距離センサ値の取得 [#se3a7020] | + | **赤外線距離センサ値の取得 [#se3a7020] |
#ref(Warning_p8.png,100%) | #ref(Warning_p8.png,100%) | ||
- | 初期化まで終われば準備は整いました。処理の流れを描いた図の通り、初めに距離センサの値を取得します。初期化の後、一行開けて | + | 初期化まで終われば準備は整いました。処理の流れを描いた図の通り、初めに赤外線距離センサの値を取得します。初期化の後、一行開けて |
fd_DXReadByteData (100, 27, &ReadData); | fd_DXReadByteData (100, 27, &ReadData); | ||
と入力して下さい。 | と入力して下さい。 | ||
- | これはAX-S1やAX-12+から1バイト(8ビット)のデータを読み出すための関数です(ビット、バイトについては[Chapter1.4のビット・バイト>FDIII-HC Starter Kit Guide Chapter1.4#y24bb3d4]]を参照して下さい)。 | + | これはAX-S1やAX-12+から1バイト(8ビット)のデータを読み出すための関数です(ビット、バイトについては[[Chapter1.4のビット・バイト>FDIII-HC Starter Kit Guide Chapter1.4#y24bb3d4]]を参照して下さい)。 |
#ref(Warning_p9.png,100%) | #ref(Warning_p9.png,100%) | ||
fd_DXReadByteDataは関数名です。~ | fd_DXReadByteDataは関数名です。~ | ||
Line 80: | 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 88: | Line 92: | ||
#ref(Warning_p10.png,100%) | #ref(Warning_p10.png,100%) | ||
- | 距離センサを取得した関数の後に | + | 赤外線距離センサを取得した関数の後に |
fd_printf("%3d\r", ReadData); | fd_printf("%3d\r", ReadData); | ||
と入力して下さい。 | と入力して下さい。 | ||
Line 111: | Line 115: | ||
-機器の接続は[[Chapter2.2の組み立て>FDIII-HC Starter Kit Guide Chapter2.2]]を参照して下さい。~ | -機器の接続は[[Chapter2.2の組み立て>FDIII-HC Starter Kit Guide Chapter2.2]]を参照して下さい。~ | ||
FDIII-HCの電源をOFFにし、プッシュボタンを押しながらUSBケーブルを差し込む事を忘れないで下さい。 | FDIII-HCの電源をOFFにし、プッシュボタンを押しながらUSBケーブルを差し込む事を忘れないで下さい。 | ||
- | -メニューの「ツール」->「コンパイルオプション」で「FREEDOM III library for FDIII-HC」を選択しOKをクリックします。~ | + | -メニューの「ツール」→「コンパイルオプション」で「FREEDOM III library for FDIII-HC」を選択しOKをクリックします。~ |
但し既に一度サンプルプログラムを書き込んでおり、左下に「FREEDOM III library for FDIII-HC」と表示されている場合は必要ありません。 | 但し既に一度サンプルプログラムを書き込んでおり、左下に「FREEDOM III library for FDIII-HC」と表示されている場合は必要ありません。 | ||
#ref(Warning_p14.png,100%) | #ref(Warning_p14.png,100%) | ||
- | -メニューの「コンパイル」->「ビルド」をクリックします。適当なファイル名(AlarmUnitなど)を入力し、適当なフォルダを選択して保存をクリックします。 | + | -メニューの「コンパイル」→「ビルド」をクリックします。適当なファイル名(AlarmUnitなど)を入力し、適当なフォルダを選択して保存をクリックします。 |
-コンパイルが成功したらOKをクリックします。自動的にSIMPLE TERMが起動します。 | -コンパイルが成功したらOKをクリックします。自動的にSIMPLE TERMが起動します。 | ||
- | -SIMPLE TERMのメニューの「ファイル」->「プロパティ」をクリックし適切な設定を行います。~ | + | -SIMPLE TERMのメニューの「ファイル」→「プロパティ」をクリックし適切な設定を行います。~ |
詳しくは[[こちら>FDIII-HC Starter Kit Guide Chapter1.3#a3b0dd1e]]。 | 詳しくは[[こちら>FDIII-HC Starter Kit Guide Chapter1.3#a3b0dd1e]]。 | ||
既に設定を行っている場合は必要ありません。 | 既に設定を行っている場合は必要ありません。 | ||
- | -SIMPLE TERMのメニューの「通信」->「ポートオープン」をクリックします。 | + | -SIMPLE TERMのメニューの「通信」→「ポートオープン」をクリックします。 |
-SIMPLE TERM上に | -SIMPLE TERM上に | ||
--< FDIII Ver1.0 by BestTechnology >-- | --< FDIII Ver1.0 by BestTechnology >-- | ||
Line 127: | Line 131: | ||
---- | ---- | ||
- | SIMPLE TERM上に数字が表示されているはずです。AX-S1の正面のセンサに手をかざし、数値が変動することを確認して下さい。 | + | SIMPLE TERM上の最終行に数字が表示されているはずです。AX-S1の正面のセンサに手をかざし、数値が変動することを確認して下さい。 |
#ref(Warning_p13.png,100%) | #ref(Warning_p13.png,100%) | ||
#ref(Warning_p12.png,100%) | #ref(Warning_p12.png,100%) |