littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于Arduino的DCC解码器核心系统

项目简介

本项目是基于Arduino实现的DCC解码器核心系统。它借助AP_DCC_library和RSBus库,实现了支持配置变量(CVs)和通过RS - Bus消息进行反馈的DCC解码器所需的通用核心功能与对象。系统能初始化DCC和RS - Bus硬件,处理编程消息,支持不同类型解码器的CVs,还可通过特定MAC程序远程访问CVs。

项目的主要特性和功能

  1. 硬件初始化:依据boards.h里定义的引脚和USART设置,对DCC和RS - Bus硬件进行初始化。
  2. 编程消息处理:处理多数编程主模式(PoM)和服务模式(编程轨道)消息。
  3. 配置变量支持:支持不同类型解码器的配置变量(CVs),可通过PoM和服务模式远程访问。
  4. 反馈消息传输:PoM反馈消息通过RS - Bus使用地址128发送。
  5. 用户交互功能:用户按下编程按钮,系统会根据接收到的下一个DCC地址初始化解码器的DCC和/或RS - Bus地址;提供板载LED对象发出事件信号,提供板载按钮对象供用户配置新地址。
  6. 多处理器支持:已在传统ATMega处理器及较新的MegaAVR处理器上完成测试。

安装使用步骤

前提条件

假设用户已下载本项目的源码文件,并且已按照需求在Arduino IDE中安装了支持所用处理器的“boards”,如MightyCore、MegaCore、MegaCoreX和DxCore。

安装步骤

把下载的源码文件放到合适的Arduino项目目录中。

使用步骤

  1. 包含必要文件:主草图只需包含AP_Accessory_Common.h头文件,该文件涵盖了CvValues.hAP_DCC_libraryRSbusAP_DccButtonAP_DccLEDAP_DccTimer等头文件和库。若仅需有限功能,也可单独包含所需头文件。
  2. 初始化设置:在setup()函数里调用cvValues.init()选择此类型解码器的匹配CV默认值集,调用decoderHardware.init()初始化解码器硬件。示例代码如下: ```cpp

include

void setup() { cvValues.init(SwitchDecoder, 20); decoderHardware.init(); } 3. 主循环操作:在主循环`loop()`中,调用`dcc.input()`检查是否接收到新的DCC消息,调用`decoderHardware.update()`更新板载LED并检查编程按钮是否被按下。示例代码如下:cpp void loop() { if (dcc.input()) {}; decoderHardware.update(); } `` 若需通过RS - Bus发送反馈消息,可在用户草图中实例化一个或多个RSbusConnection`类的RS - Bus对象。更详细的示例可参考BasicDecoder.md

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】