#まずはこちらを
#以前書いた記事の続きです。 [【自作】ArduinoとMozziでつくるクラドニ図形【簡単】](https://qiita.com/p3ishunma2/items/26d9d90020e75fefd5db) の続編として、今回はクラドニ図形をセンサで動かしてみたいと思う。 どうなるだろうか。 #前回との変更点 硫化カドミウム (CdS) を使った半固定抵抗のcdsセルを、回路に組み込む。 手で覆ったり、光を当てると抵抗値が変わるので、Mozziと組み合わせればテルミンも作れる。 #回路図 ![chladni_回路図.png](https://qiita-image-store.s3.amazonaws.com/0/285932/369f8c0a-ee5f-e9af-4da3-0fc52c67a4ed.png) #プログラムうねうね動くクラドニ図形、変態だな。#共犯者 pic.twitter.com/GKcCejCQY8
— peiくん.make (@p3ishunma2) October 16, 2018
Chladni.ino
#include <MozziGuts.h> //Mozziのライブラリを利用するために読み込み
#include <Oscil.h> //音出力用のオシレーターテンプレートの読み込み
#include <tables/sin2048_int8.h> //オシレーターでサイン波を利用するために読み込み
Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin(SIN2048_DATA); //オシレーターのサイン波の形式を設定
#define CONTROL_RATE 64 //コントロールレート
int pitch = 200;
void setup(){
startMozzi(CONTROL_RATE); //コントロールレートを設定
aSin.setFreq(pitch); //出力する周波数
Serial.begin(9600);//Start connection with serial monitor
}
void updateControl(){
int pitch = mozziAnalogRead(1); //1番ピンから入力
aSin.setFreq(pitch); //出力する周波数
Serial.println(pitch);
}
int updateAudio(){
return aSin.next(); //サイン波を引き続き出力
}
void loop(){
audioHook(); //音の出力
}
出力はただの正弦波で、周波数をアナログ入力に変えてるだけ。
センサの値を確認するために、シリアルモニタに出力
プルアップ/プルダウンの切り替えや、周波数に任意の定数をかけ算して、調整してみても面白い