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

TODAY1,144 TOTAL2,267,965
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


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

페이지 정보

작성자 master 작성일2018-03-07 09:33 조회2,902회 댓글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

조회수 2,902

등록된 댓글이 없습니다.

센서HOME > 센서 > 전체 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기