有了高精度測距儀,你可以使用紅外線制作樂器。
幾個月前,我改裝了一臺老式卡西歐電子合成器,讓它可以發出奇異的新聲音。同時,我搭建了一個接口,可以插上Arduino Mega單片機來控制鍵盤。這是我計劃的一部分,在電子系統協助下解決我一直以來不會演奏任何樂器的問題。
最初,我對Mega簡單地進行編程,讓其發出其中存儲的旋律。去年3月份,我在漢諾威消費電子、信息及通信博覽會(CeBIT)見過TeraRanger方面的一些人。這款傳感器實際上是歐洲核子研究組織(CERN)核研究中心的一個副產品,其用精確、廉價的輕量級方法來確定地下無人機調查所需的距離范圍。TeraRanger One測量反射紅外脈沖的飛行時間;它的刷新率為1千赫,能夠以5毫米的分辨率在室內確定遠達14米的距離。
我意識到,以這樣的測量范圍和分辨率,我可以制作一個具備兩種不同演奏方式的樂器。我將第一種模式稱為“空中特雷門琴”,是一種可以單手演奏的樂器。我將第二種模式稱為“空中大長琴”。
將TeraRanger One的輸出信號接到Mega很簡單。可以通過配置傳感器,將測量范圍(以毫米計)編碼為2字節。我把TeraRanger One的發送和接收線路連接到Mega奏出的兩個數字管腳上,使用SoftwareSerial Library處理通信問題。
我的最大問題是不能毀掉Mega。我最近從一家美國銷售本土品牌Arduino的零售店買了一批Mega。我之前使用過這些主板,感覺不錯。但當我測試這個項目時,Mega罷工了。于是,我換掉了它,但后來電路板也怠工了。我認為作為外部電源的通用插頭出了問題。
通常,通過USB連接器提供的5伏電壓足夠運行基于Arduino的項目,但TeraRanger One的電壓需要10~20伏,其中以12伏電壓為最佳。對于Mega,當其依靠外部電源運行時,輸入電壓的推薦范圍為7~12伏,耐受電壓為6~20伏。所以我在攢下的舊插頭中翻找,終于找到了輸出電壓為12伏的插頭,通過Mega的Vin引腳將外部電源供給TeraRanger One。但當我用第3臺Mega檢查Vin電壓時,我發現同時負載Mega和TeraRanger時電壓略微超過了14伏。我設置的負載不足,無法使插頭的電壓下降到額定值。
因此,我從攢下的舊插頭中找到9伏的插頭。TeraRanger One能夠承受這一電壓,Mega也運行良好。我能確定是偏高的電壓(即使仍然在規定范圍內)引起了電路板崩潰嗎?不能,但現在我打算接受這個解釋。
將測距傳感器的結果映射到卡西歐的鍵盤上也很簡單:我把手放在傳感器上方,確實可以產生與離傳感器距離相對應的音符。但發出的音聽上去有點煩人。即使我會彈鋼琴,在沒有視覺參考點的情況下,讓手掌離開TeraRanger的可感應范圍,然后再將手置于正確的距離,制造出想要的音符,也是極具挑戰性的。這在“空中大長琴”模式下將更加困難。
我意識到自己并不局限于卡西歐的傳統音階和半音排列,這便是解決辦法。這個靈感來自Animoog iPad應用程序,其可以支持多種不同屏幕上的鍵盤和音階排列,我將TeraRanger的結果投映到音階C、D#、E、F、F#、G#、A、B上。結果顯示,即便我在傳感器的感知范圍內將手從一個音符移動到另一個音符,聲音仍然更加悅耳了。
單音符的旋律有時聽起來仍然有點單薄,因此我編寫了一個查找表,可以查找每個音符的主要和弦,并增加了一個開關,讓Mega可以自動奏出這些和弦。我還增加了一個電位器來調整Mege決定音符的距離范圍。然后我把TeraRanger安裝在一個帶鉸鏈蓋的木盒里,可以讓我把朝上的傳感器翻轉到朝外,從“空中特雷門琴”切換到“空中大長琴”模式。
作者:Stephen Cass
