【Arduino】超音波センサーを使用した人の侵入を警告するようなものを作ってみた(仮)
今回は、超音波センサーを使用した人の侵入を警告するようなものを作ってみたいと思います。
今回作ってみようと思った経緯は、自分は、FATEシリーズが好きで、最近は、原作をやったことのないので、近いうちにお金の余裕が出たら買いたいのですが、FATEの原作は、もともとエ〇ゲーなので、大学生で実家暮らしの自分には、親の目線かなり気になる所でありますので、実家で安心してプレイできるようにしたいそれに伴い家にあるArduinoで何か作れないかと思い今回の作成に至りました。
【使用機器】
ArduinoUNO・・・1個
ブレッドボード・・・1個
3色LED・・・1個
抵抗220Ω・・・3個
超音波センサー・・・1個
ジャンパワイヤ(オス・オス)・・・9本
【配線した写真】
【プログラム】
今回プログラムしていくにあたって処理内容としては、超音波センサーよ読み取り50.1CM以上なら青色で3色LEDが点灯し50.0CMから25.1CMの間に反応したら緑色に点灯します。
25.0cm以下は赤色が点灯するような処理でプログラムをスケッチしています。
//超音波センサー
#define echoPin 2 // Echo Pin
#define trigPin 3 // Trigger Pin
double zyusin = 0; //受信した間隔
double kyori = 0; //距離
//LED
const int redPin = 9;
const int greenPin = 6;
const int bluePin = 5;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode( echoPin, INPUT );
pinMode( trigPin, OUTPUT );
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite( trigPin, HIGH ); //超音波を出力
delayMicroseconds( 10 ); //
digitalWrite( trigPin, LOW );
zyusin = pulseIn( echoPin, HIGH ); //センサからの入力
if (zyusin > 0) {
zyusin = zyusin/2; //往復距離を半分にする
kyori = zyusin*340*100/1000000; // 音速を340m/sに設定
Serial.print("kyori:");
Serial.print(kyori);
Serial.println(" cm");
}
if(kyori>50.1){
setColor(255, 0, 0);
}
if(kyori<50.0&&kyori>25.1){
setColor(0, 255, 0);
}
if(kyori<25.0){
setColor(0, 0, 255);
}
delay(1000);
}
void setColor(int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
50CM以上の時
50CM以下25.1以上の時
25CM以下の時
・計測の画面
のような反応が起きました。これからこの装置を起点にしてちょっと改良して使えるようにしたいと思いました。
【反省】
・無知すぎた
・超音波があまりよくない
・プログラムを見ての通り変数をローマ字にしている(英語雑魚)
以上のような反省があったので、次回までには、少しでも克服していきたいと思います。
【参考サイト】
・https://novicengineering.com/%E3%80%90arduino%E3%80%91rgb-led%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/
・https://deviceplus.jp/hobby/entry016/