DSシールド2にDC運転機能を追加する
DSair2には、analogDC(PWM)運転機能がありますが、DSシールド2にはないので、スケッチ(プログラム)を改造して機能追加しました。
追加変更したところを 自分の覚え書きで書いておきます。
DSair2 Firmware(R3.1)のDSairFirmware.ino から DSshield2スケッチ(rev.0003)DSshield.inoに下記の部分を追加
追加位置は、DSairFirmware.inoと同じ順序の位置にコードを挿入しました。
行数は、DSairFirmware.inoの行数です。
38〜38行 #define LEDSTATE_ANALOG 4
#define PIN_PWMA 9
#define PIN_PWMB 10 を定義に追加
159行 void SetAnalogSpeed(word inSpeed, byte inDir); の関数定義を追加
434行〜 boolean dispatch(){ …… }
関数内に
578〜598行 else if (function == "DC"){ …… } を追加
1132〜1154行 void changeLED(void){ …… } 関数内に
case LEDSTATE_ANALOG:
break; を追加
1226〜1255行 void SetAnalogSpeed(word inSpeed, byte inDir){ …… } 関数を追加
1257〜1261行 void FreeAnalogSpeed(){ …… } 関数を追加
これでDSair2とおなじように、シリアルポートから
DC(AnalogSpeed,AnalogDirection)
AnalogSpeed 0-1023
AnalogDirection 1:FWD, 2:REV
コマンドを受信してDC運転ができるようになりました。
線路電源OFFの時だけ使用可能。DCに切り替えるときはsetPower(0)を送信する。
シリアルコマンドは下記を参照
https://desktopstation.net/wiki/doku.php/dsair_wifi_specification
https://desktopstation.net/wiki/doku.php/desktop_station_s_serial_communication_specification
もちろん出力側にピュアアナログアダプターつなげば、平滑直流で運転ができます。
Comments