噪音玩具 - 编程中的速成课程
噪音玩具套件使用起来很有趣,但是如果你像我一样 - 将那个小的“PROGRAM”端口留下来会让你发疯。
由于对Arduino的AVR编程知之甚少,我自学了如何为其上传和破解源代码。继续阅读以了解契约是如何完成的,并听取一些示例音频。
有关:
- 如何 - 建造噪音玩具
- 噪音玩具盒
第1部分 - 硬件hackery
如果您以前从未编写过微控制器,那么前景可能看起来有点令人生畏 - 但实际上并非如此艰难,并且学习这一过程会带来大量新选择。 (如果已经知道如何,你可以跳到第3部分,了解相关的Noise Toy文件)
Noise Toy使用Atmel AVR微控制器芯片(ATTiny85,具体而言)。 Loud Objects设计了该套件,以便可以对芯片进行重新编程,而无需将其从设备中移除或“在线”。事实上,玩具可以看作是一个简单的AVR“目标板”,微控制器可以从PC上接收来自PC串行数据连接的新代码。
串行端口在大多数新机器上非常罕见(在Mac上不存在),因此大多数人使用USB代替。为了将USB数据转换为我们的小芯片更“串行”的东西,我们使用系统内编程器(简称ISP)。 Noise Toy设计师安排了PROGRAM标题与特定的ISP --Tuxgraphics的AvrUsb500接口。我手边没有其中一个,但确实有另一个ISP,即Adafruit Industries的USBTinyISP。为了与玩具一起使用,需要进行一些调整。
USBTinyISP使用6针连接器,比AvrUsb500多一个引脚。为了确定哪些引脚做了什么,我比较了两个器件的文档并交叉引用了ATTiny85的数据表。
事实证明,USBTiny上的附加引脚为电路板提供了可选电源,而AvrUsb500则假设您的芯片在编程时已经通电。
考虑到这一点,我通过在设备内移动一个简单的跳线来禁用USBTinyISP的可选电源引脚。使用从这些引脚比较中收集到的信息,我绘制了一个快速的原理图,描述了我的USBTiny应该如何连接到玩具的PROGRAM标题。
您可以使用实芯或跳线来建立正确的连接 - 为了获得更持久的解决方案,我在穿孔板上制作了一个小适配器 -
不太整洁,但它完成了工作。第2部分 - 软件乐趣和编程过程
一旦找到界面,您将需要一些软件来执行实际编程。我在我的powerbook上下载并安装了AVR MacPack(那些带有Windows的人可以使用WinAVR)然后我通过Ladyada.net上的方便教程熟悉了基本的编程过程。
可以从Loud Objects的站点下载其他Noise Toy源代码。这些是.c文件,需要在写入芯片之前编译为.hex。为此,您需要一个指定一些必要变量的'makefile'。我在Psychogenic的网站上找到了一个简单的模板makefile,并用必要的细节更新了它 -
微控制器名称:
MCU = attiny85 PROGRAMMER_MCU = t85
项目名:
PROJECTNAME = mynoisetoyproject
我的.c源文件的名称:
PRJSRC = mynoisetoyproject.c
您可以在此处下载已编辑的makefile。
保存新的makefile(你猜对了)“生成文件
“并将其放在一个名为”的新文件夹中“mynoisetoyproject
“在...内 文件
夹。
Loud Objects的dave_matthews_band.c听起来像是实验的主要目标,所以我在我最喜欢的文本编辑器中打开它,然后开始工作。仔细阅读代码,我注意到一点看起来很熟悉。好奇,我替换了所有的实例 随机()
并用它们取而代之 0
- 然后将文件保存为“mynoisetoyproject.c” 文件/ mynoisetoyproject
.
一旦文件夹和文件好了,我就继续下列手续 -
打开终端应用程序,然后输入以下行:
cd Documents / mynoisetoyproject make all mynoisetoyproject.hex
通过USB将ISP连接到计算机,然后连接到Noise Toy并输入以下内容 -
avrdude -c usbtiny -p t85 -U flash:w:mynoisetoyproject.hex
终端显示快速上传过程后,我断开了玩具并给了我的小演示黑客听一听。有点可以预见的是,我听说“dave_matthews_band.c”的随机版本较少 - 我称之为“chris_mattews_band”
听听chris_matthews_band
只需对原始程序进行一些修改就会对所产生的声音产生重大影响。如果您在使用Arduino之前可能会识别这些源文件中的语言。这种类型的黑客攻击似乎是一般学习更多编码的好方法 - 哦,这很有趣!
第3部分 - 文件等
以下是Loud Objects网站上其他程序的一些示例 -
- birdlane.mp3
- stereo.mp3
- dave_matthews_band.mp3
- Ike.mp3
- kunrnd.mp3
- rptrnd.mp3
- salvation.mp3
如果您不想破解/编写任何代码,这里是所有原始程序的.zip预编译为.hex文件进行上传 - Noise Toy hex pack
这里是编辑过的makefile和示例代码hack - mynoisetoyproject makefile
我希望这可以帮助一些人通过微控制器开发来打破僵局,并从一个简单但非常有用的套件中获得额外的成功。如果您为该套件编写/破解好程序,请务必在下面的评论中分享!
EOM