인체감지센서 | 아두이노+인체감지센서
페이지 정보
작성자 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
등록된 댓글이 없습니다.