*プログラミング1 [#qe8ca20d] #ref(Warning_1.png,100%) 「AX-S1の赤外線反射センサに泥棒が反応したら、AX-S1のブザーを鳴らして脅かす」というプログラムを作成します。 プログラムと言うと難しそうだと感じる方もいるかもしれません。しかし本キットは予め用意されたFREEDOMライブラリを使うことで、このプログラムを16行で書くことができます。 FREEDOMライブラリとは、FDIII-HCのための[[関数>FDIIICHAPTER1.4#p52f0f17]]を集めたものです。FDIII-HCを使うに当たって必要だと思われるプログラムが予め用意され、ユーザーはその関数名を書くだけで簡単にプログラミングが可能になります。 **処理の流れを図にする [#x60b5360] プログラミングを始める前に処理の流れを図にしましょう。 #ref(flow.png,100%) スタートから始まり、先ず赤外線反射センサの値を見ます。赤外線反射センサの値をある値(泥棒が来たと判断される値)と比較し、それ以上ならブザーをならし、それ以下ならブザーは鳴りません。その後、再び赤外線反射センサの値取得に戻ります。 今後この図を元にプログラミングを行います。悩んだら見返しましょう。 **準備 [#id067260] ソフトウェアのインストールは終わっていますか?まだの方は[[Chapter1.2のソフトウェアの準備>FDIIICHAPTER1.2]]を見て下さい。~ #ref(gcc_icon.png,100%) デスクトップのGCC Developer LiteのショートカットをダブルクリックしてGCC Developer Liteを起動します。 #ref(gcc_open.png,100%) GCC Developer Liteの青いエリアにプログラムを書いて行きます。プログラムは半角英数で入力します。大文字と小文字を区別して下さい。~ 最初から[EOF]と書いてありますが、これはファイルの終わりを示すものですので気にせず入力して下さい。 **FREEDOMライブラリを使えるようにする [#r44fc0ef] #ref(gcc_edit_1.png,100%) 既に説明した通り、FREEDOMライブラリには便利な関数が用意されています。この関数を使用できるようにするために先ず最初にfd.hをインクルードします。 ---- #ref(gcc_edit_2.png,100%) fd.hという名前のファイルの中に色々な関数が書かれています。~ #include <fd.h>と入力した行の上でCtrlボタンを押しながらダブルクリックするとfd.hを開くことができます。~ まだfd.hの中身を理解する必要はありません。fd.hのウィンドウ右上の×ボタン(GCC Developer Liteウィンドウの×ボタンではありません)で閉じます。 **メイン関数 [#dcba31ee] #ref(gcc_edit_3.png,100%) メイン関数はその名の通り主となる関数です。プログラムはメイン関数内の上から順に実行して行きます。見やすくするために一行開けてメイン関数の中身を書いて行きます。 **変数宣言 [#m4138a34] #ref(gcc_edit_4.png,100%) これから赤外線反射センサの値を読み込むプログラムを書くのですが、読み込んだ値を保存しておく場所が必要になります。保存する場所として[[変数>FDIIICHAPTER1.4#z62e3ad6]]を使います。~ メイン関数のvoid main (void)の次にある空の行にカーソルを移動します。メイン関数内であることがわかりやすいようにTabキーを使ってインデントでスペースを空けてから入力して下さい(プログラムの書き方については[[Chapter1.4のプログラムの書き方>FDIIICHAPTER1.4#s49216c9]]を参照して下さい)。 ReadDataは変数の名前です。~ uint8_tは変数の[[型>FDIIICHAPTER1.4#p7400a94]]です。赤外線反射センサ値などのFREEDOMライブラリで扱う値が、符号の無い8ビット(1バイト)単位であることを意味しています。unsigned charと同義です。 **FDIII-HCの初期化 [#l316e5db] #ref(gcc_edit_5.png,100%) FDIII-HCを使用するためにはメイン関数の初めに初期化をしなければなりません。 ***[[fd_SetBeepCondition>FDIIILIB#ke8d1df6]] [#v29dcde7] ビープ音が鳴るための条件を設定します。ビープ音を鳴らす必要がなければ省略しても問題ありません。 ***[[fd_SetUVThreshold>FDIIILIB#ce52eef3]] [#w641dc92] FDIII-HCの電源電圧低下を検出する閾値を設定します。閾値を設定していても、 fd_SetBeepCondition関数を記述していなければビープ音は鳴りません。 ***[[DX_ChangeBaudrate>FDIIILIB#n66c725c]] [#m3a51f05] Dynamixel製品との通信速度(ボーレート)を変更します。ライブラリ内で静的に1M(1000000)で初期化されていますが、Dynamixel製品の通信速度が変更されている場合はプログラム側で同じ通信速度に変更する必要があります。~ Dynamixel製品が125k[bps]の場合 #html{{ <pre class="brush: c"> #include <fd.h> void main (void) { DX_ChangeBaudrate (125000); } </pre> }}
(This host) = https://www.besttechnology.co.jp