s51517765 が 2021年01月31日18時11分21秒 に編集
初版
タイトルの変更
Arduinoでデジタルテルミンを作った
タグの変更
秋葉原
本文の変更
 テルミンとは世界初の電子楽器でシンセサイザーの元になったものです。 https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AB%E3%83%9F%E3%83%B3 テルミンはコンデンサをもつ高周波発振器を2つ内蔵していて、演奏者の手とアンテナの間にコンデンサを形成し、これによりアナログ回路的に音程を形成します。 また、左手により音量をコントロールすることが出来ます。 このようなテルミンをまねて、手をかざすことで音楽を奏でられる楽器をArduinoで作りました。 どちらかというとシングルアンテナのマトリョミンに近いです。 マトリョミンは音量コントロールが省略された構成のテルミンです。 https://www.mandarinelectron.com/matryomin/ 本来のテルミンは完全にアナログ回路で音を発しますが、これをArduinoを用いてデジタルで作りました。 言ってみればデジタルテルミンです。 # 回路図  音程のコントロールは超音波距離センサを用いて、音は圧電スピーカから発します。 通常、圧電スピーカはGPIOから直接駆動することもできますが、周波数等の関係で音量が小さくなるので外部(ここではUSB)から電源をとることで音量UPをしました。 そのためトランジスタ(2SC1815)を使っています。 超音波センサでかざした手との間の距離を測定し、音程を決定します。 @[youtube](https://www.youtube.com/watch?v=DUBi24YffcE) ```c:main.c 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 ) { t = millis(); for (int i = 0; i < toneLength; i++) { digitalWrite(SpeakerPin, HIGH); delayMicroseconds(toneCycle / dist); digitalWrite(SpeakerPin, LOW); delayMicroseconds(toneCycle / dist); } } } ```