1. 적외선 PIR센서 인체감지 모션센서
- 수동 적외선 센서로써 적외선을 통해 사람의 움직임(모션, motion)을 감지하는 센서
- 감지 각도 범위 안에 적외선(빛)의 변화가 있을 시 High(1) 신호를
- 없을 시 Low(0) 값을 출력하는 센서
2. PIR 센서로 현관 등 만들기
#include <MiniCom.h>
#include <Led.h>
MiniCom com;
Led led(8);
int pir_pin = 7;
int pirState = LOW;
int val = 0;
void setup() {
com.init();
com.print(0, "[[Motion]]");
pinMode(pir_pin, INPUT);
}
void loop() {
com.run();
val = digitalRead(pir_pin);
if(val == HIGH) {
if(pirState == LOW) {
com.print(1, "Motion detected!");
pirState = HIGH;
}
} else {
if(pirState == HIGH) {
com.print(1, "Motion ended!");
pirState = LOW;
}
}
led.setValue(val);
}
3. 적외선 PIR센서 인체 감지 모션 센서
#pragma once
#include <Arduino.h>
class Pir{
protected:
int pin;
int state;
pir_callback_t on_f;
pir_callback_t off_f;
public:
Pir(int pin);
void setCallback(pir_callback_t on_f, pir_callback_t off_f);
void check();
};
#include "Pir.h"
Pir::Pir(int pin): pin(pin){
pinMode(pin, INPUT);
state = LOW;
on_f = NULL;
off_f = NULL;
}
void Pir::setCallback(pir_callback_t on_f, pir_callback_t off f){
this -> on_f = on_f;
this -> off_f = off_f;
}
void Pir::check{
int val = digitalread(pin);
if(val == HIGH){
if(state == LOW){
state = HIGH;
if(on_f != NULL){
on_f();
}
}
} else{
if(state == HIGH){
state = LOW;
if(off_f != NULL){
off_f();
}
}
}
}
#include <MiniCom.h>
#include <Led.h>
#include "Pir.h"
MiniCom com;
Led led(8);
Pir pir(7)
void detect_on(){
com.pirnt(1, "Motion dectected!");
led.on();
}
void detect_ff(){
com.print(1, "Motion ended!");
led.off();
}
void setup(){
com.init();
com.print(0, "[[Motion]]");
pir.setCallback(detect_on, detect_off);
}
void loop(){
com.run();
pir.check();
}