센서 > 아두이노+인체감지센서

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 센서

인체감지센서 | 아두이노+인체감지센서

페이지 정보

작성자 master 작성일18-03-07 09:33 조회3,154회 댓글0건

본문

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int body=7;    // 인체감지센서
int relay=8;   // 릴레이
int ledPin=13// LED
//
void setup(){
  pinMode(ledPin,OUTPUT); // Output 설정
  pinMode(relay,OUTPUT);  // Output 설정
  Serial.begin(9600);
}
//
void loop(){
  int a=digitalRead(body); // 센서값 읽기
  if(a==1){ // 인체감지시
    digitalWrite(ledPin,HIGH); digitalWrite(relay,LOW); // ON
    delay(6000);
  }
  else{
    digitalWrite(ledPin,LOW); digitalWrite(relay,HIGH); // OFF
  }
}

 

인체감지 센서는 움직이는 것만 감지합니다.
가만히 움직이지 않고 있으면 감지하지 못합니다.
현관 센서등과 동일한 동작을 하는데 차이가 있다면 센서등의 동작시간은 보통 30초 정도로 설정합니다.

30초 후에는 마찬가지로 꺼지게 되는데 팔을 휘저어서 다시 센싱하도록 만들죠

움직임만 감지하도록 설계한 센서 특성이라서 어쩔 수 없습니다.

delay(6000);

현재 딜레이를 6초로 했는데

delay(60000);

60초 까지 늘릴 수 있습니다.
더 긴시간은 for()문을 사용하면 되겠죠

10분으로 설정하고, 중간에 움직임을 감지하면 시간을 계속 십분으로 연장하도록 소스를 수정하면

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int body=7;    // 인체감지센서
int relay=8;   // 릴레이
int ledPin=13// LED
int on_time=0;
//
void setup(){
  pinMode(ledPin,OUTPUT);
  pinMode(relay,OUTPUT);
  Serial.begin(9600);
}
//
void loop(){
  if(digitalRead(body))on_time=6000// 감지시 6000*100ms=600초=10분
  //
  if(on_time){
    digitalWrite(ledPin,HIGH); digitalWrite(relay,LOW); // ON
    on_time--;
  }
  else{
    digitalWrite(ledPin,LOW); digitalWrite(relay,HIGH); // OFF
  }
  //
  delay(100); // 100ms
}

 

100ms마다 센서를 체크하고

10분안에 센싱되면 다시 10분으로 설정합니다.

10분이상 감지되지 않으면 OFF 합니다. 

 

댓글 : 0

조회수 : 3,154

등록된 댓글이 없습니다.

게시물 검색

센서 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전