焦電センサで遊ぶ

投稿日:

 秋月電子に行ったら、「焦電センサ」が売られていた。付加回路のついたモジュールで、800円。秋月電子のサイトを見ると、他にも安いものはあるが、店頭にあるものではこれが一番安かった。

IMG_3096

 「焦電センサ」という言い方は随分通ぶった言い方で、一般的には「赤外線人感センサ」と言った方が通りがよかろう。

 買ったものは5V・TTLの負ロジックで、35度くらいのものがセンサ前面の角度120°の範囲2メートル以内で動くと、出力が「負」になる。ロジック端子にプルアップ抵抗をつけて、5Vくらいをくれておいてやるとよいわけだ。

 そこで、早速こんなふうにする。ブレッドボードシールド上にはプルアップ抵抗と、リード線を伸ばして3色LEDを取り付けるだけでいい。

IMG_3097
IMG_3098

 スケッチをこんなふうに書けば、即席人感ランプの出来上がりである。

//
//  Pir2Led.ino
//  焦電センサで遊ぶ。
//    秋月電子焦電センサモジュール「SE-10」使用
//    https://satotoshio.net/blog/?p=1471
//    27.7.11 1100~
//    佐藤俊夫
//
const int PIR = 8, LEDR = 9, LEDG = 10, LEDB = 11, LIGHTTIME = 5000, DULL = 100;
//  DULL  過敏さを抑えるため、100回くらい人感しないと点灯させない。
//  LEDはアノードコモン、焦電センサは負論理なので、どっちも「負 LOW」で点灯
void setup() {
  pinMode(PIR, INPUT);
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);
}

void loop() {
  static int pcount = 0;
  boolean p = HIGH;
  delay(20);
  p = digitalRead(PIR);
  if(p == LOW){
    pcount++;
  }
  if(pcount >= DULL){
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    digitalWrite(LEDB, LOW);
    pcount = 0;
    delay(LIGHTTIME);
  }else{
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    digitalWrite(LEDB, HIGH);
  }
}

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください