Jeffrey Cross
Jeffrey Cross

噪音玩具 - 编程中的速成课程

噪音玩具套件使用起来很有趣,但是如果你像我一样 - 将那个小的“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

分享

发表评论