我一直是Robin Baumgarten的赞助人。他为游戏制作实验硬件。他的线摇摆一维地牢爬行是我的最爱,我一直想玩它。它使用门挡弹簧作为控制器。旋钮中的加速计可以像操纵杆一样工作,还可以检测用于攻击敌人的摆动。
在看到他可玩的圣诞树版本的游戏后,我不得不为自己制作一个。我找不到他发布的任何源文件,但是我找到了一个名为TWANG的开源克隆。这场比赛非常有趣,而且非常具有挑战性。
电子硬件
这里列出了所使用的电子硬件。
Arduino mega。Mega对于I / O需求是过度的,但UNO没有足够的内存。
MPU-6050 3轴加速/陀螺分线板。这些价格约为5美元,并且对Arduino有很好的库支持。
小型扬声器。我以4美元的价格在Micro Center购买了一对外置PC扬声器,并拉出了一些2英寸扬声器。您需要在其中一条电线上使用100欧姆的电阻。
RGB LED灯条:为APA102型灯条编写默认代码。所用的FastLED库也支持便宜的WS2812(Neopixel)条。我用144 LED 1米APA102带。时钟和数据类型条可以工作得更快,并且它们通常具有整体亮度因子,使其具有比Neopixels更有用的亮度范围。这些条的亮度是疯狂的,你通常运行在大约1/2的亮度。
如果手头没有APA102型灯条,其他灯条也完全可以,如果是其他灯条,可以参见下面fastLED库示例里面,找到自己对应的灯条类型进行替换:
// Use if you want to force the software SPI subsystem to be used for some reason (generally, you don't)
// #define FASTLED_FORCE_SOFTWARE_SPI
// Use if you want to force non-accelerated pin access (hint: you really don't, it breaks lots of things)
// #define FASTLED_FORCE_SOFTWARE_SPI
// #define FASTLED_FORCE_SOFTWARE_PINS
#include "FastLED.h"
/////////////////////////////////////////////////////////////////////////////////////////// //
// Move a white dot along the strip of leds. This program simply shows how to configure the leds,
// and then how to turn a single pixel white and then off, moving down the line of pixels. //
// How many leds are in the strip?
#define NUM_LEDS 60
// Data pin that led data will be written out over #define DATA_PIN 3
// Clock pin only needed for SPI based chipsets when not using hardware SPI //#define CLOCK_PIN 8
// This is an array of leds. One item for each led in your strip. CRGB leds[NUM_LEDS];
// This function sets up the ledsand tells the controller about them
void setup() {
// sanity check delay - allows reprogramming if accidently blowing power w/leds
delay(2000); // Uncomment one of the following lines for your leds arrangement.
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
// FastLED.addLeds(leds, NUM_LEDS);
}
// This function runs over and over, and is where you do the magic to light
// your leds.
void loop() {
// Move a single white led
for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
// Turn our current led on to white, then show the leds
leds[whiteLed] = CRGB::White;
// Show the leds (only one of which is set to white, from above)
FastLED.show();
// Wait a little bit
delay(100);
// Turn our current led back to black for the next loop around
leds[whiteLed] = CRGB::Black;
}
}
寿命指示灯:您可以使用3个独立的指示灯指示您剩余的生命数。我决定跳过它。我更喜欢信号显示元件的简单性。我在游戏中添加了一个动画游戏,让你更清楚地知道你已经死了,死了。
印刷零件
我创建了自己的3D打印部件。我在TWING Thingiverse文件中遇到了问题。他们是OBJ文件,并将这些部分分组。库拉没有创造出好的印刷品。无论如何,我的演讲者并不适合。
底盘:我制作了一个厚壁外壳,使它有一点重量,并使其更加坚固。
封面:封面也很厚。扬声器安装在口袋中,并附有热胶。
弹簧夹。这将弹簧牢固地固定在盖子上。我还加了一点热胶以防止它旋转。
旋钮底座。这与官方TWANG版非常相似。它有一个更长的螺纹接口来抓住弹簧。这部分需要大量的滥用。
旋钮顶部:卡扣,但也会得到一点热胶。
固件
固件写得很好,很容易遵循。你需要下载很多库。有些可以从Arduino IDE安装,有些必须手动下载。这在Github页面上有很好的解释。
一切工作在60帧/秒的循环。这包括显示和声音。我能够轻松地调整一些东西,并通过动画添加游戏。
这些级别非常易于编辑。你真的不需要知道如何编程。我调整了一些让初学者更容易。
部件
建立春季大会
将焊丝焊接到加速器模块。
将弹簧夹滑过弹簧。
将旋钮组装到弹簧顶部。
将电线穿过旋钮底座和弹簧。
将模块拧到旋钮底座上。
将旋钮顶部连接到旋钮底座。
将弹簧连接到盖子上(确保连接时弹簧保持垂直)
调整金属弹簧底座,直到弹簧垂直放置。
在盖子的凹槽中放一点热胶
将电线穿过并将弹簧放入凹槽中。
在夹子所在的弹簧周围放一点热胶。把它拧下来。
将扬声器连接到盖子
胡说
附上一些电线。将一个100欧姆,1 / 4W内嵌在其中一条电线上。
装配基地
用螺丝将Arduino Mega安装到基座上。
按照下图所示连接所有电线。我在左端连接了SCL / SDA加速器,但您也可以将它们连接到右端的20和21引脚。
附上封面
用法
您需要使用单独的5V电源为LED灯条供电。我为我的144 LED灯条使用了10A电源。
您还需要为Arduino供电。最简单的方法是通过USB端口进行。你可以将电源线连接到Arduino的5V电源,但要注意不要同时给电源和USB供电,否则可能会损坏。
注意:我一直在连接LED电源。当我只给Arduino供电时,我看到一些LED闪烁。这让我担心它正在从I / O引脚吸取一些能量。
下一步。
让它更容易构建:布线是一种痛苦,可能不会太耐用。我使用压入与Arduino Mega连接的连接器的引脚。为了更容易,我设计了一个带螺丝夹的小护罩。它还将通过一个二极管为Arduino提供电力,这将允许USB也被使用。扬声器电阻是屏蔽的一部分。它也与Arduino UNO兼容,所以可能会有口袋大小的TWANG。这将在下周抵达。我可能会把这些额外的东西卖给Tindie。
ESP32版本:我真的想试试这个。声音和速度应该更好,与其他玩家联网的能力听起来很酷。它也更小,更便宜。
评分系统:每个人都想参加比赛。
视频
这是Twang的视频。
原文转自:http://www.buildlog.net/blog/2018/01/twang/
相关资料:http://www.indiecade.com/games/selected/line-wobbler
http://wobblylabs.com/projects/wobbler
https://github.com/bdring/TWANG
https://hackaday.com/2018/01/24/diy-dungeon-crawler-game-plays-on-single-led-strip/