littlebot
Published on 2025-04-13 / 1 Visits
0

【源码】基于Arduino的StepMania灯光控制系统

项目简介

本项目借助Arduino达成了在StepMania 5/Project Outfox游戏里对灯光的控制,让玩家仿若置身街机游戏厅,可通过游戏操作使灯光同步变化。用户能使用LED灯、舞蹈垫灯、霓虹灯等各类灯光设备,增添游戏乐趣。

项目的主要特性和功能

  1. 多种连接方式:既支持将单个灯光直接连到Arduino引脚,也能通过移位寄存器连接大量灯光,突破引脚数量限制。
  2. 可扩展性:采用模块化设计,便于用户按需添加或移除灯光设备,灵活扩展灯光系统。
  3. 高功率支持:利用N - 通道MOSFET或固态继电器(SSR),可控制高功率灯光设备。
  4. 跨平台兼容:同时支持Windows和Linux操作系统,方便不同用户使用。

安装使用步骤

硬件连接

  1. 单灯连接:默认代码支持单个灯光连到每个Arduino引脚,适用于DDR/ITG风格的4面板设置。无需改代码,按Wiring - Direct.png图连接并上传代码到Arduino。若要更改灯光引脚,修改代码中#define PIN_<something>_<something>部分。
  2. 移位寄存器连接:若要连更多灯光,可使用移位寄存器。去掉代码中//#define USE_SHIFT_REGISTERS前的双斜杠,按Wiring - ShiftRegisters.png图连接。若要更改移位寄存器连接的引脚,修改#define PIN_SHIFT_CLOCKLATCHDATA部分;若要更改灯光与移位寄存器的映射,修改void readSerialLightingData()函数。
  3. 高功率灯光连接:控制高功率灯光时,使用N - 通道MOSFET,按Wiring - MOSFET.png图连接。若需控制更高电压的灯光,可考虑使用固态继电器(SSR)。

代码上传

将项目的Arduino代码上传至Arduino设备。

软件设置

Windows系统

  1. Preferences.ini中,设置LightsDriver = Win32Serial,并将LightsComPort设为Arduino所在的COM端口(该端口为在Arduino IDE中上传代码时选择的端口)。
  2. 启动StepMania,若未出现错误信息则设置成功。

Linux系统

灯光输出设置
  1. Preferences.ini中,设置LightsDriver = SextetStreamToFile
  2. 记录SextetStreamOutputFilename的值(默认是Data/StepMania - Lights - SextetStream.out)。
  3. 在StepMania安装文件夹内打开终端,运行mkfifo./加上步骤2记录的文件名(如mkfifo./Data/StepMania - Lights - SextetStream.out)。
  4. 运行StepMania,此时会停留在加载窗口,这是正常现象。
  5. 运行cat加上步骤2记录的文件名(如cat./Data/StepMania - Lights - SextetStream.out),若看到字符滚动则SextetStream正常工作。
Arduino输出设置
  1. 若之前未操作过,运行sudo usermod -a -G dialout <your username>将自己添加到dialout组,以获取通过USB串口与Arduino通信的权限。
  2. 运行cat <sextet filename/path> > <arduino device name>(设备名与Arduino IDE中显示的一致,通常以/dev/ttyACM开头),也可以使用socat <sextet filename/path> <arduino device name>

运行测试

完成上述步骤后,运行StepMania 5游戏,测试灯光设备是否能正常工作。

下载地址

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