2010年9月18日現在、VSTONEのサポートページで公開されているVS-WRC003LVのサンプルプログラム(「モータ制御サンプル」等、すべて)に含まれるMtr_run関数にはバグがあります。
この関数はBeauto Chaser用に書いたプログラムをVS-WRC003LVでも変わらず使えるようにするため(互換性のため)のものです。ブレーキ動作をあらわす0x80を入れた場合の動作が間違っていて、モーターが100%に近い速度で回りだします。本講座のプログラムのようにブレーキをよく使う場合には致命的ですので注意してください。
この関数を使用する場合はvs-wrc003lv.cの56行目から62行目を次のように修正してください。
void Mtr_Run(BYTE mt1,BYTE mt2,BYTE mt3,BYTE mt4){
if(mt1 == 0x80)
! mt1 == 0;
if(mt2 == 0x80)
! mt2 == 0;
if(mt3 == 0x80)
! mt3 == 0;
if(mt4 == 0x80)
! mt4 == 0;
void Mtr_Run(BYTE mt1,BYTE mt2,BYTE mt3,BYTE mt4){
if(mt1 == 0x80)
! mt1 = 0;
if(mt2 == 0x80)
! mt2 = 0;
if(mt3 == 0x80)
! mt3 = 0;
if(mt4 == 0x80)
! mt4 = 0;
なおVS-WRC003LVのモータードライバはフリーの動作ができないようになっており、Mtr_runやMtr_run_lvに0を指定してもフリーではなくブレーキになります。本講座のサンプルプログラムをVS-WRC003LVに応用する際、第5回、第6回のrun関数にある「0の場合0x80にする特別な場合わけ」は必要なくなります。
また、VS-WRC003LVはそのままではPCからシリアルポートとして認識させることができません。本講座で説明したような対話的デバッグや調整をするためには、VS-WRC003LV シリアルコンバータを使用して設定を変更する必要があります。
山口辰久