memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

Arduinoテルミン

今年も美術館との共同イベントが開催されることになりました.ちなみに昨年の様子は以下です.

https://www.nishinippon.co.jp/kyushu_event/7523/

今年はクマ.クマをデザインしつつ,そのクマにマイコンをつけて何かしようということになりました.

以下がボディです.かっこいい.



お腹の部分に空間が空いているので「テルミンなんてどうですか?」と.それで採用になりました.

Arduino+超音波距離センサでテルミンっぽいのはよく授業でも作っていました.なので,すぐできるだろう...と思っていたんですが...

とりあえず作ったのが以下.

距離センサの値がうろちょろするので...そのまま周波数に変換してtone関数で鳴らすとこんな感じになります.まぁ,よくネットでみる感じのやつです.とても楽器とは言えません.

とりあえず,音階にして,中間的な音は鳴らないようにしたのが以下です.でもね...今回やってみてわかったのですが,tone関数の音はタイマ割込で作られているそうで,テープLEDのNeopixelでタイマ割込のタイマを勝手にキャンセルしてしまうらしく...テープLEDを光らせると音にノイズが入ってしまいました...これは不可避か?

しかたがなく,運用で逃げられないかと作ったのが以下でした.toneではなく,タイマ関数を使わないTimerFreeToneというライブラリを使ってみたんですね.でも,このライブラリでは音の長さを予め指定しなければならないためブツブツ音が切れてしまいます.これはこれで問題...

色々とどうにかできないか探しました.

結局,できたのが以下でした.

NeoPixelのライブラリは使えないので,調べてみると,NeoPixelのライブラリを使わなくても光らせることに成功したという方がいました.

https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them

素晴らしい...見事にtone関数とNeoPixelの制御を1つのArduino
 Nanoでできるようになりました.

あと,銅板買ってきて抵抗つけて簡易タッチセンサを取り付けて,タッチしているときのみ音が鳴るようにしました.これで楽器っぽくなりました.

工夫点としては,音を出す前にテープLEDで音程に関連付けた色で発光させました.この色をみれば所定の音程になっているかどうかわかるはずです.

ネットでよくみるArduinoテルミン的な作品の多くは,ここまでやっている例はなく,とりあえず音を鳴らす感じの作品が多いと思います.

以下にソースコードを置いきました.もしよければご覧ください.

いや...とりあえず形になった.

めでたしめでたし.あとは製作キットを作って準備しないとなぁ〜.

本番は11月5・6日です.

2022/10/11追記

演奏するのが難しいので,低学年の子が演奏するときなどに使えるイージーモード(手を上下するだけで演奏できる)を追加した.