/* 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);
}