「Arduinoの基礎 - PIRモーションセンサ」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「== 概要 == ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。<br> <br> 実際に、PIRセンサで人の動きを検出し…」) |
編集の要約なし |
||
2行目: | 2行目: | ||
ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。<br> | ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。<br> | ||
<br> | <br> | ||
使用するセンサは、PIRモーションセンサ(JST)(Sparkfun ID : SEN-13285)である。<br> | |||
このセンサの動作電圧は5[V]〜12[V]まで可能で、ピン配置は、赤がパワー、白がグラウンド、黒がアラームである。<br> | |||
<br> | <br> | ||
このセンサは、電源投入後、約2秒ほど周囲の状況のスナップショットを取得した後、<br> | |||
赤外線の動きによって何かの動作を検出した時、アラームピンをLowにセットする。<br> | |||
<br> | <br> | ||
アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。<br> | アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。<br> | ||
12行目: | 12行目: | ||
具体的には、<code>pinMode</code>関数を使用して、PIRモーションセンサからの入力ピンは<code>INPUT_PULLUP</code>としてプルアップする。<br> | 具体的には、<code>pinMode</code>関数を使用して、PIRモーションセンサからの入力ピンは<code>INPUT_PULLUP</code>としてプルアップする。<br> | ||
[[ファイル:Arduino PIR 1.png|フレームなし|中央]] | [[ファイル:Arduino PIR 1.png|フレームなし|中央]] | ||
<br> | <br><br> | ||
< | |||
== サンプルコード == | |||
以下の例では、PIRセンサで人の動きを検出して、モーションを検出した場合にLEDを点滅させている。<br> | |||
<syntaxhighlight lang="c++"> | |||
const int PIN_PIR_SIG = 5; | const int PIN_PIR_SIG = 5; | ||
const int PIN_LED = 10; | const int PIN_LED = 10; | ||
37行目: | 40行目: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br> | |||
また、以下の例では、LEDの点滅に加えて、ブザーを使用して音を再生する盗難防止警報システムである。<br> | |||
[[ファイル:Arduino PIR 2.jpg|フレームなし|中央]] | |||
<syntaxhighlight lang="c++"> | |||
const int PIN_PIR_SIG = 2 | |||
const int PIN_LED = 7 | |||
const int PIN_BUZZER = 3 | |||
bool state = false; | |||
void setup() | |||
{ | |||
pinMode(PIN_LED, OUTPUT); | |||
pinMode(PIN_PIR_SIG, INPUT_PULLUP); | |||
pinMode(PIN_BUZZER, OUTPUT); | |||
} | |||
void loop() | |||
{ | |||
if(digitalRead(PIN_PIR_SIG) == LOW) | |||
{ | |||
if(!state) | |||
{ | |||
state = true; | |||
} | |||
digitalWrite(PIN_LED, millis() / 100 % 2); | |||
tone(PIN_BUZZER, millis() % 1000 + 200); | |||
} | |||
else | |||
{ | |||
if(state) | |||
{ | |||
digitalWrite(PIN_LED, LOW); | |||
noTone(PIN_BUZZER); | |||
state = false; | |||
} | |||
} | |||
delay(100); | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Arduino]] | [[カテゴリ:Arduino]] |
2020年11月20日 (金) 01:38時点における最新版
概要
ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。
使用するセンサは、PIRモーションセンサ(JST)(Sparkfun ID : SEN-13285)である。
このセンサの動作電圧は5[V]〜12[V]まで可能で、ピン配置は、赤がパワー、白がグラウンド、黒がアラームである。
このセンサは、電源投入後、約2秒ほど周囲の状況のスナップショットを取得した後、
赤外線の動きによって何かの動作を検出した時、アラームピンをLowにセットする。
アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。
Arduinoにはビルトインのプルアップ抵抗を持っており、ピンの設定時にINPUT_PULLUPを指定すれば、それを利用することができる。
具体的には、pinMode
関数を使用して、PIRモーションセンサからの入力ピンはINPUT_PULLUP
としてプルアップする。
サンプルコード
以下の例では、PIRセンサで人の動きを検出して、モーションを検出した場合にLEDを点滅させている。
const int PIN_PIR_SIG = 5;
const int PIN_LED = 10;
void setup()
{
pinMode( PIN_PIR_SIG, INPUT_PULLUP );
pinMode( PIN_LED, OUTPUT );
}
void loop()
{
int i = digitalRead( PIN_PIR_SIG );
if( i == LOW )
{
for( int j = 0; j < 5; j++ )
{
digitalWrite( PIN_LED, HIGH );
delay( 50 );
digitalWrite( PIN_LED, LOW );
delay( 50 );
}
}
}
また、以下の例では、LEDの点滅に加えて、ブザーを使用して音を再生する盗難防止警報システムである。
const int PIN_PIR_SIG = 2
const int PIN_LED = 7
const int PIN_BUZZER = 3
bool state = false;
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_PIR_SIG, INPUT_PULLUP);
pinMode(PIN_BUZZER, OUTPUT);
}
void loop()
{
if(digitalRead(PIN_PIR_SIG) == LOW)
{
if(!state)
{
state = true;
}
digitalWrite(PIN_LED, millis() / 100 % 2);
tone(PIN_BUZZER, millis() % 1000 + 200);
}
else
{
if(state)
{
digitalWrite(PIN_LED, LOW);
noTone(PIN_BUZZER);
state = false;
}
}
delay(100);
}