【Hacker News搬运】Spinner鼠标:Arkanoid、Tempest等基于Arduino的USB旋转控制器。
-
Title: Spinner-mouse: Arduino-based USB rotary controller for Arkanoid, Tempest, etc.
Spinner鼠标:Arkanoid、Tempest等基于Arduino的USB旋转控制器。
Text:
Url: https://github.com/carlosefr/spinner-mouse
Arkanoid是一款在模拟器上玩的经典街机游戏,但用普通的鼠标控制难度极高。这是因为游戏设计时使用的是旋转控制器(俗称“旋转盘”或“拨盘”),而不是游戏杆。旋转控制器可以直接移动挡板(飞船),而不是推它。 大多数街机模拟器(如lr-fbneo和lr-mame2003-plus是当前的选择)允许使用鼠标代替。由于Arkanoid的MS-DOS版本也可以用鼠标玩,因此使用鼠标是一个合理的选择。但鼠标让我必须坐在桌前玩,这是我想要避免的。 NES版本的Arkanoid随附了自己的旋转控制器,通常被称为“Vaus”控制器,其简单(且便宜)的设计启发了作者构建自己的版本,该版本呈现为USB鼠标——任何基于ATmega32U4微控制器的Arduino类似板都可以轻松实现。 作者添加了一个额外的按钮,并选择了一个可以连接到他现有的MIDI键盘踏板(总共可达三个按钮)。 主要输入是一个通常用于音量控制的音频放大器的平滑增量旋转编码器。它的成本只是街机爱好者通常使用的编码器的一小部分,这让作者担心它可能没有足够的分辨率,但最终证明它的表现很好。这个特定的编码器有两个脉冲引脚,每转24步,最终分辨率为96步,采用四象限编码。 primary按钮(黄色)是一个街机风格的微开关,secondary按钮(红色)是一个普通的门铃按钮。两者在按压时连接到地(主动低),以使用ATmega内部的 pull-up电阻器并减少外部组件的数量,并在它们的引脚上使用100nF电容进行去抖动,以减少代码复杂性。 (可选)踏板是通常用作音乐键盘持续音踏板的类型。内部只是一个弹簧加载的按钮,可以配置为常开或常闭。它通过一个包括通常闭合的感测开关的音频插头来连接。正如之前所做的那样,这两个开关都使用ATmega内部的 pull-up电阻器,并通过100nF电容进行去抖动。 外部(蓝色)LED提供一些关于控制器操作的最小反馈。由于蓝色LED通常是非常强大的光源,作者使用PWM将其调暗到合理的水平。 默认情况下,旋转输入会使鼠标指针以内部多转电位计配置的速度移动——一次移动一个像素。如果按下 primary按钮时连接控制器,它将进入慢速模式,并且总是以配置速度的20%移动。这对于像MAME这样的具有自己灵敏度调整的模拟器很有用。 你可能想知道为什么慢速模式是配置速度的20%,而不是最高精度96步/转(1个鼠标步/编码器脉冲):它允许更好地使用MAME的拨盘灵敏度范围,该范围只能增加到255%。 除了在按钮被按下等进行一些调试输出之外,还可以通过串行端口切换控制器模式。具体来说: s切换到慢速模式; n切换到正常模式(取决于多转电位计设置的速度); r切换到默认模式(慢速/正常取决于连接时是否按下了 primary按钮); c显示当前模式。 在retropie目录中,有运行命令脚本,我在RetroPie中使用它们,以根据启动的模拟器动态切换模式。 灵敏度设置(在模拟器中) 在我的情况下,我将多转电位计设置为默认速度22,这在运行lr-fbneo的Arkanoid时我觉得很舒适。我更喜欢在lr-mame2003-plus中调整灵敏度(控制器必须处于慢速模式才能获得最佳效果,请参见上述)。 不同的游戏使用了具有不同分辨率的旋转器。因此,每个游戏的特定灵敏度设置也将不同。即使游戏的原始旋转器具有更高的分辨率,似乎也能很好地工作(例如,Arkanoid的旋转器分辨率为486步/转)。 以下两个列表包括了我构建过程中使用的组件,以及我购买的具体零件的链接。由于我大部分是从附近的葡萄牙商店订购的,所以大部分链接的页面都是葡萄牙语的,但应该仍然有助于找出需要购买的东西。 第一个列表是支持仅使用一个按钮的游戏(例如Arkanoid、Super Sprint/Championship Sprint、Hot Rod)以及使用两个按钮的游戏(例如Tempest、Badlands)所需的最小组件。这应该涵盖大多数情况。 如果您想在赛车游戏中使用踏板,或者需要第三个按钮的游戏(例如APB),那么您还需要第二个列表中的附加组件。 1x ATmega32U4 USB-C模块(5V/16MHz
Post by: rcarmo
Comments:
robertclaus: It was refreshing to see an off-the-shelf project box on the parts list rather than 3d printing it. I'm in the middle of a multi-day printing spree for a project and am learning to appreciate that not every generic box needs to be 3d printed.
robertclaus: 在零件列表上看到现成的项目框而不是3d打印,这让人耳目一新;我正在为一个项目进行多日打印,我正在学习并认识到并非每个通用盒子都需要3d打印。
tombert: I made something like this pretty recently, though it was with an ESP32, and it was bluetooth, and I used a mouse driver. It was cool, though I did kind of grow a hatred for the Arduino "poll the pins in the loop" way of doing things. It would kind of work, but the problem would be that if you spun the knob too quickly, it would actually end up going backwards because you're effectively spinning faster than it can sync.<p>I ended up having to learn how to use the FreeRTOS interrupts. It was a bit harder but it was a much better play experience.
tombert: 我最近做了这样的东西,尽管它是用ESP32做的,是蓝牙的,我用了鼠标驱动程序。这很酷,尽管我确实对Arduino产生了某种仇恨;轮询环路中的引脚”;做事的方式。这是可行的,但问题是,如果你旋转旋钮太快,它实际上会倒退,因为你;重新有效地旋转得比同步更快<p> 我最终不得不学习如何使用FreeRTOS中断。这有点困难,但这是一次更好的比赛体验。
vunderba: Nicely done. Back in the day, I actually used to convert the midi signals from a rotary encoder knob on one of my AKAI into a MAME input just so I could play Arkanoid.
vunderba: 做得不错。事实上,在过去,我曾经把我的一个AKAI上的旋转编码器旋钮的midi信号转换成MAME输入,这样我就可以玩Arkanoid了。
toobitts: Nice. I've purchased a couple of these, which are similar:<p><a href="https://www.tindie.com/products/bittradeone/rev-o-mate-bfrom11bk/" rel="nofollow">https://www.tindie.com/products/bittradeone/rev-o-mate-bfrom...</a><p>Incredibly useful in my line of work.
toobitts: 美好的I-;我购买了一些类似的产品:<p><a href=“https://;/;www.tindie.com/!products/:bittradone/,rev-o-mate-brom11bk/”rel=“nofollow”>https:///;www.tindie.com/;products;bittradone/;rev-o-mate-bfrom</a> <p>在我的工作中非常有用。
Rebelgecko: I've been eagerly awaiting the day when I can buy one of these: <a href="https://github.com/scottbez1/smartknob">https://github.com/scottbez1/smartknob</a> (or when building one myself doesn't require any soldering more advanced than thru-hole).
Rebelgecko: I-;我一直在热切地等待有一天我能买到其中一个:<a href=“https://;/;github.com/!scottbez1/:smartknob”>https:///;github.com/;scottbez1;smartknob</a>(或者当我自己构建一个时,不需要任何比通孔更先进的焊接)。