|
本章包含的内容: n 通过音调沟通 n 播放音乐 n 转换MIDI文件 n 转换WAV文件 RCX自身有一个内置扬声器及驱动它的硬件,这样可以使你的机器人能发声。这个特点却未被充分使用!它不仅仅通过一些有趣的方式使你的机器人更具有个性化,而且提供了一个简单的通信协议,以帮助测试程序,及排除程序错误。 这是我们为什么在本书中要用一个章节来介绍RCX的声音和音乐的原因了,虽然这个话题与编程有关,而不是搭建。不过,正象我们在第6章中介绍的那样,制作机器人时,这两个点很少是独立的。对于本书第二部分将要介绍到的机器人,声音是他们与外界相联系的一个重要元素。对其他机器人来说,声音丰富了他们的行为。 如果你不熟悉音乐术语或声音文件格式,你可能会觉得本章的主题有一点复杂。但是这个努力是值得的,因为这项技术为你机器人世界带来更有趣的机会。你可以了解如何运用简单的音调,如何编写一小段曲子,以及如何将数字声音文件转换成可以嵌入程序的声音效果。 我们在介绍中提过,RCX有一个内置的扬声器。其外侧特征为:在LEGO标志面,RCX1.5有两个小缝隙,声音就是从那发出来的。RCX的声音系统是通过程序编写完成的;你无法改变扬声器的音量,这是预先确定的,但是你可以控制音乐的频率(定调)和持续时间。NQC语言,在我们的例子里使用,包括两个基本命令来产生声音,叫PlaySound和PlayTone。通过PlaySound指令,可以使RCX输出6个预先设定的声音模式中的一个,如一个简短的滴答声,两声蜂鸣或短的音符串: PlaySound(SOUND_CLICK); PlaySound(SOUND_DOUBLE_BEEP); PlaySound(SOUND_UP); PlaySound(SOUND_DOWN); PlayTone命令可以演奏一个给定的音调(以赫兹为单位)并持续一段时间(1/100秒);下面这个语句可以演半秒钟262赫兹的音调。 PlayTone(262,50); RCX能够产生任何从31赫兹到16,000赫兹的频率:不过,你只能在音乐频率范围内编写音乐(见附件C)。所有可以为LEGO固件编程的语言都具有这项功能。而其他大多数语言都或多或少对需要一些复杂的方法对声音控制。 声音可以更直接地反映出RCX对特殊环境的变化。RCX有显示,但是我们并不能随时看到它,尤其是当你的机器人穿过房间运行的时候!它总是记录数据,你可以在PC上读取储存在RCX内的一个专门存储区的数据,但是,要使用这些数据,你就必须一直坐在计算机前。而声音,则可以在不打断任务其他工作的情况下发射,你可以听到,就算机器人远在你视野之外。 通过简单的声音模式,你能知道完成了工作,或是哪里出了问题或电池电量不足等等。它能知道按下按钮,或告诉你等待特殊的输入,如第6章校准程序的例子。在1999年MINDSTORMS爱好者和专业人员聚集在麻省理工学院(MIT),我们要设计一个了Tic-Tac-Toe机器人—见第20章—可以通过不同的主题音乐通知人类对手有关比赛的结果。 |
|||||||||||||||
|
|
|||||||||||||||
|
|||||||||||||||