テルミンとは世界初の電子楽器でシンセサイザーの元になったものです。
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
さんが
2021/01/31
に
編集
をしました。
(メッセージ: 初版)
-
s51517765
さんが
2021/01/31
に
編集
をしました。
-
s51517765
さんが
2021/01/31
に
編集
をしました。
-
s51517765
さんが
2021/01/31
に
編集
をしました。
-
s51517765
さんが
2021/01/31
に
編集
をしました。
ログインしてコメントを投稿する