GitHubにて公開
デフォルトのアドレス3
F3:O3 室内灯
F4:O4 モニタリング装置
CV設定
CV01 2桁アドレス(初期設定3)
CV08 リセット
CV33 F0(初期設定0)
CV35 F1(初期設定0)
CV36 F2(初期設定0)
CV37 F3(初期設定3) 室内灯
CV38 F4(初期設定4) モニタリング装置
CV39 F5(初期設定0)
CV40 F6(初期設定0)
CV41 F7(初期設定0)
CV42 F8(初期設定0)
CV43 F9(初期設定0)
CV44 F10(初期設定0)
CV45 F11(初期設定0)
CV46 F12(初期設定0)
CV51 slot点灯条件(初期設定5)
今回はNMRAライブラリを同じプロジェクト内に入れました。
その結果、コンパイルは通るけど、まったくDCCを受信していない現象が発生。
すでに、あるあるなので、以下の2つの関数を修正。
//extern void notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
↓
extern void notifyDccSpeed( uint16_t Addr, DCC_ADDR_TYPE AddrType, uint8_t Speed, DCC_DIRECTION Dir, DCC_SPEED_STEPS SpeedSteps )
//extern void notifyDccFunc( uint16_t Addr, FN_GROUP FuncGrp, uint8_t FuncState)
↓
extern void notifyDccFunc(uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint8_t FuncState)

O3の処理(デフォルトでF3が割り当てられています)0か1かを調べてLEDをON/OFFさせています。
O4の処理は下記の関数で処理するため、#if #endifを使ってコメントアウトしています。

速度によってLEDの点灯・消灯は簡単で、Monitaring_Control()関数内で処理をしています。
F4でONになっていると、速度が5step(CV51のデフォルト値)を閾値で点灯・消灯させています。
ステートマシンにする必要があまり無いですけどw
マイコンボードに書き込むを実行してSmile Function Decoderのプログラムを書き換えます。
新町車輌製造さんによるS設備Monitoring装置(3Dプリンタ出力)
DCC電子工作連合機器活用レポートコンテスト
2018/01/18 1版