Skip to content

Instantly share code, notes, and snippets.

@likersacademia
Created August 22, 2019 01:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save likersacademia/19154f3ed179fdf519eec7ec9282147c to your computer and use it in GitHub Desktop.
Save likersacademia/19154f3ed179fdf519eec7ec9282147c to your computer and use it in GitHub Desktop.
/*DAYs SCENE 08 ★★★★
できること)
歩く速さがはやいと光がついて、遅く歩くように知らせる
最初に使うもの)
距離センサー LED
仕組み)
速さを感知している。距離センサーにゆっくり手を近づけたり、速く手を近づけてみてください。
*/
//ここから下は設定です。一番下まで行くとプログラムを変更しやすいところがあります。
#define echoPin 19
#define trigPin 18
double Duration = 0; //受信した間隔
double Distance1 = 0; //距離
double Distance2 = 0;
#define ledPin 10
#define ON LOW
#define OFF HIGH
#define SPEAKER 10
#define do 262
#define re 294
#define mi 330
#define fa 349
#define so 392
#define ra 440
#define shi 494
#define do2 523
double Speed = 0;
void setup() {
Serial.begin(9600);
pinMode(echoPin,INPUT);
pinMode(trigPin,OUTPUT);
pinMode(ledPin,OUTPUT);
pinMode(SPEAKER,OUTPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //超音波を出力
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Duration = pulseIn(echoPin, HIGH); //センサからの入力
if (Duration > 0) {
Duration = Duration/2; //往復距離を半分
Distance1 = Duration*340*100/1000000; //音速を340m/sに設定
//Serial.print("スタート:");
//Serial.print(Distance1);
//Serial.println("cm");
}
delay(200);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //超音波を出力
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Duration = pulseIn(echoPin, HIGH); //センサからの入力
if (Duration > 0) {
Duration = Duration/2; //往復距離を半分
Distance2 = Duration*340*100/1000000; //音速を340m/sに設定
//Serial.print("フィニッシュ:");
//Serial.print(Distance2);
//Serial.println("cm");
}
delay(100);
Speed = (Distance1-Distance2)*5;
Serial.print("Speed:");
Serial.print(Speed);
Serial.println("cm/s");
delay(10);
//プログラムは、ここから変更することをオススメします
/*スクーミーで、作って、問題解決をしよう!
先ずは、センサーがなにかを見て、それに対してお知らせする方法を考えてみよう。
最初は全て、「明かりがつく」で設定してあります。
明かりがついて教えてくれるのか
音で教えてくれるのか
どちらの方がいいか考えて、文字を変更してみよう。
(本当は、ここの文章より上も変更するのですが、練習なので、ここの文章より下だけを変えることで動きます。)
 明かりをつけて知らせたい場合 
digitalWrite(ledPin,ON); → LEDに明かりをつける
delay(1000); →その動作を何秒するか。1000で1秒
digitalWrite(ledPin,OFF); → LEDの明かりを消す
 delay(1000); →その動作を何秒するか。1000で1秒
音を鳴らして知らせたい場合
tone(SPEAKER,do); → ドの音(do:ド re:レ mi:ミ fa:ファ so:ソ ra:ラ shi:シ do2:ド )
delay(1000); →その動作を何秒するか。1000で1秒
noTone(SPEAKER); →音を止める
delay(1000); →その動作を何秒するか。1000で1秒
明かりも音も両方使うこともできますが、上の文章の変更をする必要があります。
*/
if((abs(Speed) > 20)&&(abs(Speed)<100)){ //20cm/s~100cm/s ここは範囲を変えることができます。
digitalWrite(ledPin,ON);
delay(500);
digitalWrite(ledPin,OFF);
delay(500);
}else{
digitalWrite(ledPin,OFF);
delay(10);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment