/* Arduino ライブラリとは?(製作編)
     距離に応じてスピーカを制御する
*/
#include <HCSR04.h>

#define TRIG_PIN 2 // トリガー端子
#define ECHO_PIN 3 // エコー端子

#define SPEAKER_PIN A0 // スピーカー接続端子

#define BLOCK_LENGTH 5 // 1ブロックの長さ(単位:cm)

// ド〜ドの音程の周波数
//            ド    レ   ミ   ファ  ソ   ラ    シ   ド
int note[] = {262, 294, 330, 349, 392, 440, 494, 523};

// HC-SR04のオブジェクト生成
HCSR04 kyoriSensor(TRIG_PIN, ECHO_PIN);

void setup(){
  // シリアルモニタ初期化
  Serial.begin(9600);
}

void loop() {
  // 距離測定&シリアルモニタ表示
  float distance = kyoriSensor.dist();
  Serial.println(distance);

  if( distance > 0.0 ) { // 測定できた時の処理
    // どのブロックに障害物があるか計算
    //(計算結果は整数にするため結果を代入する変数はint型にする)
    int block = distance / BLOCK_LENGTH;
    Serial.println(block);

    // ブロック位置に対応する音程を鳴らす
    if( block==0 || block==1 ){
      tone(SPEAKER_PIN, note[0]);
    } else if( block>=2 && block<=8 ) {
      tone(SPEAKER_PIN, note[block-1]);
    } else {
      noTone(SPEAKER_PIN);
    }
  } else {
    noTone(SPEAKER_PIN);
  }

  // 時間待ち
  delay(200);
}
$abcdeabcde151015202530354045505560fghijfghij