#define NOTE_OFF_VALUE 100 // 音量が最小になるセンサの値 const int pitchSensorPin = 0; // センサに使うピン(音程) const int volumeSensorPin = 1; // センサに使うピン(音量) const int audioOutPin = 2; // 音声出力に使うピン int pitchSensorValue; // センサの値(音程) int volumeSensorValue; // センサの値(音量) int pulseWidth; // 出力波形のパルス幅 int period; // 出力波形の波長 int i; // カウント用変数 void setup() { pinMode(audioOutPin, OUTPUT); // 音声出力用ピンを出力モードにする。 } void loop() { digitalWrite(audioOutPin, LOW); // 音声出力用ピンをLowにする volumeSensorValue = analogRead(volumeSensorPin); // センサピンの電圧を取得する(音程) pitchSensorValue = analogRead(pitchSensorPin); // センサピンの電圧を取得する(音量) period = pitchSensorValue << 5; // センサの値(音程)から波長を計算 if (volumeSensorValue < NOTE_OFF_VALUE) // センサの値(音量)が一定以下なら pulseWidth = 0; // パルス幅を0にする else // そうでなければ pulseWidth = (pitchSensorValue * (volumeSensorValue-NOTE_OFF_VALUE >> 5)) >> 1; // センサの値(音程と音量)からパルス幅を計算する。 for(i=pulseWidth;i