s51517765のアイコン画像
s51517765 2021年01月31日作成 (2021年01月31日更新)
製作品 製作品 閲覧数 3957
s51517765 2021年01月31日作成 (2021年01月31日更新) 製作品 製作品 閲覧数 3957

Arduinoでデジタルテルミンを作った

デジタルテルミン

テルミンとは世界初の電子楽器でシンセサイザーの元になったものです。
https://ja.wikipedia.org/wiki/テルミン

テルミンはコンデンサをもつ高周波発振器を2つ内蔵していて、演奏者の手とアンテナの間にコンデンサを形成し、これによりアナログ回路的に音程を形成します。
また、左手により音量をコントロールすることが出来ます。

このようなテルミンをまねて、手をかざすことで音楽を奏でられる楽器をArduinoで作りました。
どちらかというとシングルアンテナのマトリョミンに近いです。
マトリョミンは音量コントロールが省略された構成のテルミンです。
https://www.mandarinelectron.com/matryomin/

本来のテルミンは完全にアナログ回路で音を発しますが、これをArduinoを用いてデジタルで作りました。
言ってみればデジタルテルミンです。

回路図

回路図

音程のコントロールは超音波距離センサを用いて、音は圧電スピーカから発します。
通常、圧電スピーカはGPIOから直接駆動することもできますが、周波数等の関係で音量が小さくなるので外部(ここではUSB)から電源をとることで音量UPをしました。
そのためトランジスタ(2SC1815)を使っています。
超音波センサでかざした手との間の距離を測定し、音程を決定します。

ここに動画が表示されます

main.ino

const int TrigPin = A0; const int EchoPin = A1; long dist = 0; long toneCycle = 100000; long aveCount = 40; unsigned long toneLength = 10; const int SpeakerPin = 8; unsigned long t = 0; void setup() { Serial.begin(9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); } void loop() { dist = 0; for (int i = 0; i < aveCount; i++) { digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(8); digitalWrite(TrigPin, LOW); dist += pulseIn(EchoPin, HIGH) ; } dist /= aveCount; dist /= 30; dist *= 30; Serial.println(dist); if (200 < dist && dist < 4400 ) { for (int i = 0; i < toneLength; i++) { digitalWrite(SpeakerPin, HIGH); delayMicroseconds(toneCycle / dist); digitalWrite(SpeakerPin, LOW); delayMicroseconds(toneCycle / dist); } } }
s51517765のアイコン画像
https://s51517765.hatenadiary.jp/
ログインしてコメントを投稿する