TITLE:FDIII-HCで外付けLEDを点灯する #norelated #contents |CENTER:BGCOLOR(red):||c | :idea:|本ページの注意事項は各製品のナレッジベースやマニュアルに準拠します。&br;各製品のナレッジベースやマニュアルをお読み頂き、ご理解頂いた上で本ページを参考にしてください。| **概要 [#y31bc0e6] ここではMultifunction I/O moduleを使って、FDIII-HCから外部LEDのON/OFF駆動とPWM信号で輝度を変えて点灯させる方法を紹介します。 **用意するもの [#uc8087ab] -[[FDIII-HC]] -[[Multifunction I/O module]] -LED -数百Ωの抵抗 -ケーブル -ハンダごて、ハンダ -ユニバーサル基板 -ピンヘッダ -[[3ピンコネクタ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=98]] ハンダが苦手という方はブレッドボードを使用しても良いでしょう。 Multifunction I/O moduleの仕様を考慮し適切なLEDと抵抗値を選定してください。 FDIII-HCの変わりに[[Dynamixelコンフィギュレータ]]を使用してパソコンと通信することも可能です。 **接続 [#ja34fcfb] ON/OFF駆動を行う場合は下図の様に配線を行います。 #ref(figure1.png) PWM信号で輝度を変えて点灯させる場合は下図のように配線を行います。 #ref(figure4.png) Multifunction I/O moduleのCN2のPin1:VOUT(5V)とPin6:PIO4の間にLEDと抵抗を接続します。LEDの向きを間違えないようにしましょう。 LEDのON/OFF駆動ならPIO4~7、輝度を変えての点灯ならPIO4と5が利用できます。 Multifunction I/O moduleのCN2には、VOUTとGND端子が1つずつしかありません。複数台のLEDを接続したり、後でLEDを取り外したりする場合は、ユニバーサル基板とピンヘッダで変換基板を作り、ケーブルと3ピンコネクタでセンサを接続するか、ブレッドボードで配線するなどの工夫が必要です。 ''変換基板作成例'' #ref(figure2.png) #ref(FDIII-HCにPSD距離センサの信号を取り込む/figure25.png) 複数の機器を接続する場合には注意するべき点があります。~ Multifunction I/O moduleのCN2のVOUTから供給できる電流は限られています。~ VOUTに接続する機器の消費電流が許容量をオーバーすると、Multifunction I/O module自体も同じ電源を使用しているため正常に動作しなくなります。 Multifunction I/O moduleが度々リセットするような場合は、別途電源を用意し外部機器に供給する必要があります。 またPWM駆動のようにPIOをソース源とする場合は1端子あたり30mA以下に抑え、さらに全端子の電流が50mAを超えないように調整してください。 #ref(figure3.png) DynamixelケーブルでFDIII-HCとMultifunction I/O moduleを接続します。 **PIO Configを変更する [#ea65bbe1] コントロールテーブルのLEDを接続した端子に対するPIO Configを、ON/OFF駆動させる場合は1、PWM信号で輝度を変えたい場合は4に設定します。 PIO Configの設定は、運用時のプログラム内では設定しないことをお勧めします。 PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 制限といっても普通に使用していれば制限を越えることはまずありません。 しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があります。 PIO4 Configを1にするプログラムを以下に示します。 #include <fd.h> void main (void) { fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); fdWait(2000); fd_DXWriteByteData (200, 10, 1); fd_printf ("Complete"); fd_SoftReset(); while (1); } 一度だけ実行しましょう。~ 書き換えが終わるとブートローダへ戻ります。~ PWM駆動をする場合は以下修正が必要です。 fd_DXWriteByteData (200, 10, 1); ここでIDが200のMultifunction I/O moduleのアドレス10を1に書き換えています。アドレス10はPIO4 Configです。~ PWM駆動をする場合は第3引数は1ではなく4となります。~ IDとアドレスは適宜変更してください。 **プログラミング [#k2387ac0] ここではFDIII-HCのプログラムを作成するための準備や書き込み方法は省略します。 ***ON/OFF駆動 [#ib89c218] Multifunction I/O moduleのPIO4に接続したLEDを1秒毎にON/OFFを切り替えます。 #include <fd.h> #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} void main (void) { uint8_t DigitalOut = 255; // アドレス43の値 fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); while (1) { DigitalOut |= (1 << 4); fd_DXWriteByteData (200, 43, DigitalOut); fd_Wait (1000); DigitalOut &= ~(1 << 4); fd_DXWriteByteData (200, 43, DigitalOut); fd_Wait (1000); KEY_QUIT; } } デジタル出力の設定はアドレス43のDigital Outで行います。Digital Outのビット4を1にするとPIO4がHIGH(LED消灯)、0にするとLOW(LED点灯)となります。 ***PWM駆動 [#vcf62c85] PWM信号のデューティー比を変えるとこで、Multifunction I/O moduleのPIO4に接続したLEDの輝度を変えます。 #include <fd.h> #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} void main (void) { uint8_t Duty = 0; // デューティー比 fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); while (1) { fd_DXWriteByteData (200, 49, Duty); Duty++; if (Duty > 255) Duty = 0; KEY_QUIT; } } PIO4のデューティー比はアドレス49です。
(This host) = https://www.besttechnology.co.jp