About虛擬&實際

@分享虛擬與實際的世界中所遊玩的心得紀錄,從物理化學到生命科學、從人文藝術到現代科技、從虛擬介面到實際生命體。享受的只是一種學習與體驗。若文章內容有誤,歡迎提出以供修改,對文章的回饋,歡迎寄信給我!一起分享,互相學習成長的環境。
@個人簡介在『關於韃靼』
@我是韃靼~我的信箱:chenyuquan at gmail dot com

2013年1月25日 星期五

用Arduino延伸“偽鋼琴鍵盤”

前言:
在project07學習到了使用按鍵與resistor ladder組合創造出keyboard instrument的樂趣,在想使用更多的組合可以組出基本的音階。

硬體:

switch *8, resistor 數個

程式:

使用if...else, 加上else if 擴充邏輯判斷到八種組合,使用array指令增加輸出的聲音頻率。

電阻與聲音頻率對照表:


其中:Resistor是取用的電阻大小,接地的參考電阻為21600 Ohm(21.6K Ohm),Voltage read是估計值,Real A0是實際上Arduino A0所讀到的區間數值(最後兩格),music frequency是聲音頻率的對照。

圖片&影片

八個按鍵很壯觀,若有更多當然更酷,不過那就更花時間了!!


後記:
雖然可以很明顯地聽出不同音階,不過木耳的我還是分辨不出來其實際的差異。記得app有可以簡易判斷樂器音階(!?)的軟體!?改天下載來玩玩看。

參考:

Arduino_Project07_Keyboard Instrument
Physical Music note

3 則留言:

  1. 可以請問要增加更多按鍵
    電阻是怎麼算的?急需謝謝你��

    回覆刪除
    回覆
    1. 你好,請從參考資料的兩篇去閱讀,那是用電阻分壓的方式去匹配的,至於轉換過去的跟Piezo也有關係,然後使用Arduino的Function: tone。
      http://www.arduino.cc/en/Reference/Tone

      刪除
    2. 補充:
      這是應用Resistor Ladders,所以您需要多少階層,就去計算出所需的。
      例如:Uno-AI的解析度只有1024,以您的例子來說的話,解析度需要1024/16 =64 (Ohm)
      如下表:

      Interval R
      64
      Button V read Set R
      1 1024
      2 960
      3 896
      4 832
      5 768
      6 704
      7 640
      8 576
      9 512
      10 448
      11 384
      12 320
      13 256
      14 192
      15 128
      16 64
      然後上面提到的Resistor Ladders:
      https://en.wikipedia.org/wiki/Resistor_ladder
      不過可能要注意:
      (A)實際電路的配置是否其解析度可以讓AI讀取到這麼細微的改變或者;
      (B)可能找不到匹配的電阻喲。
      以上,備份一下提供參考~

      刪除