2020年10月27日 星期二

[Arduino] 特雷門(Theremin) 電波琴

特雷門(Theremin) 電波琴是甚麼玩意兒? 如果您還不知道,可以參考一下維基百科 。


所需材料

1. Arduino Nano(Uno也可以) 開發板 *1

2. 麵包板 *1

3. PAM8403 功放模組 *1

4. 光敏電阻(LDR) *1

5. 10K 電阻 *1

6. 小喇叭(蜂鳴器也可以) *1

7. 公母頭杜邦線 *若干

8. 公排針 *若干

如果您沒有以上材料,也可以到露天賣場購買。



焊接

1. 將功放模組焊上公排針。

2. 將公母頭杜邦線的公頭端焊上喇叭。

電路接線

1. 將 Arduino Nano 開發板插上麵包板。

2. 依照上面電路圖用杜邦線連接各單元。

3. 喇叭接功放模組單邊輸出即可。


程式

1. 下載函式庫 https://sensorium.github.io/Mozzi/

2. 將下列程式上傳到 Arduino。

//#include <ADC.h>

#include <MozziGuts.h>

#include <Oscil.h> // oscillator template

#include <tables/sin2048_int8.h> // sine table for oscillator

#include <RollingAverage.h>

#include <ControlDelay.h>


#define INPUT_PIN 0 // analog control input


unsigned int echo_cells_1 = 32;

unsigned int echo_cells_2 = 60;

unsigned int echo_cells_3 = 127;


#define CONTROL_RATE 64

ControlDelay <128, int> kDelay; // 2seconds


// oscils to compare bumpy to averaged control input

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin0(SIN2048_DATA);

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin1(SIN2048_DATA);

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin2(SIN2048_DATA);

Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin3(SIN2048_DATA);


// use: RollingAverage <number_type, how_many_to_average> myThing

RollingAverage <int, 32> kAverage; // how_many_to_average has to be power of 2

int averaged;


void setup(){

  kDelay.set(echo_cells_1);

  startMozzi();

}


void updateControl(){

  int bumpy_input = mozziAnalogRead(INPUT_PIN);

  averaged = kAverage.next(bumpy_input);

  aSin0.setFreq(averaged);

  aSin1.setFreq(kDelay.next(averaged));

  aSin2.setFreq(kDelay.read(echo_cells_2));

  aSin3.setFreq(kDelay.read(echo_cells_3));

}


int updateAudio(){

  return 3*((int)aSin0.next()+aSin1.next()+(aSin2.next()>>1)

    +(aSin3.next()>>2)) >>3;

}


void loop(){

  audioHook();

}


上傳程式後,試著用手由遠到近遮住光敏電阻,光敏電阻受光程度會影響聲音的頻率。


觀賞影片


如果 Arduino 連接 Midi,將可以產生更有趣的聲音效果,如下影片





做完電波琴後,您也可以參考這篇文「用蜂鳴器播放超級瑪莉(Mario)音樂」,讓您的喇叭發出電玩般的聲音。

參考資料

https://www.hackster.io/Oniichan_is_ded/arduino-theremin-96fc6d?fbclid=IwAR0IxHx7tyu2cwGUJTBs6tmBP234j-XV-2stRpmPg76N2sv9NQQpdhUsFKk

https://www.instructables.com/Make-Your-Own-Simple-Theremin/
https://www.youtube.com/watch?v=57S3dylfw3I
https://www.youtube.com/watch?v=DnD92Q_Kpac
https://www.youtube.com/watch?v=IEoOSjzHYhE
https://www.youtube.com/watch?v=Xsjwt9nXue0


採購資訊

特雷門(Theremin) 電波琴套件 https://www.ruten.com.tw/item/show?22040528261934