BASIC4MCU | 질문게시판 | 답변 : 아두이노 PIR센서 이용 출입 카운트 하기(소스코드)
페이지 정보
작성자 master 작성일2019-12-01 23:39 조회5,031회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=11000
본문
//int ledPin1=6; // blue(1번)LEDint ledPin2=7; // red(2번)LEDint ledPin3=8; // green(3번)LEDint inputPin1=4; // PIR센서1 신호핀int inputPin2=5; // PIR센서2 신호핀//int pirState1=0; // PIR1 초기상태(움직임이 없음을 가정)int pirState2=0; // PIR2 초기상태(움직임이 없음을 가정)int val1=0; // 신호1 입력값int val2=0; // 신호2 입력값int count=0; // 카운터 초기값//void setup(){pinMode(ledPin1,OUTPUT); // 6번 LED를 출력으로 설정pinMode(ledPin2,OUTPUT); // 7번 LED를 출력으로 설정pinMode(ledPin3,OUTPUT); // 8번 LED를 출력으로 설정pinMode(inputPin1,INPUT); // 센서1 입력 설정pinMode(inputPin2,INPUT); // 센서2 입력 설정Serial.begin(9600); // 시리얼 통신,속도는 9600}//void loop(){val1=digitalRead(inputPin1); // 1센서값 읽어와 val1에 저장val2=digitalRead(inputPin2); // 2센서값 읽어와 val2에 저장if(val1==1){ // 센서1 신호값이 1면(인체감지시)if(val2==1){ // 센서2 신호값이 1면(인체감지시)digitalWrite(ledPin1,1); // 1번 LED ONdigitalWrite(ledPin2,0); // 2번 LED offdigitalWrite(ledPin3,0); // 3번 LED offif(pirState2==0){ // PIR2 초기상태(움직임이 없음을 가정)count++;Serial.println("in"); Serial.println(count); // 카운트숫자 표시delay(800);}}else{ // 센서2 신호값이 0면(인체감지 없을시)digitalWrite(ledPin1,0); // 1번 LED OffdigitalWrite(ledPin2,1); // 2번 LED ondigitalWrite(ledPin3,0); // 3번 LED offdelay(800);}}else if(val2==1){ // 센서2 신호값이 1면(인체감지시)if(val1==1){ // 센서1 신호값이 1면(인체감지시)digitalWrite(ledPin3,1); // 3번 LED ONdigitalWrite(ledPin2,0); // 2번 LED offdigitalWrite(ledPin1,0); // 1번 LED offif(pirState1==0){ // PIR1초기상태(움직임이 없음을 가정)count--;Serial.println("out"); Serial.println(count); // 카운트숫자 표시delay(800);}}else{ // 센서1 신호값이 0면(인체감지 없을시)digitalWrite(ledPin3,0); // 3번 LED OffdigitalWrite(ledPin2,1); // 2번 LED ondigitalWrite(ledPin1,0); // 1번 LED offcount=count;delay(800);}}else{digitalWrite(ledPin3,0); // 3번 LED OFFdigitalWrite(ledPin2,1); // 2번 LED ondigitalWrite(ledPin1,0); // 1번 LED Offcount=count;delay(800);}}//PIR센서 2개를 이용하여 센서 1,센서 2 순서로 인식되면+1 카운트센서2,센서1 순서로 인식되면-1 카운트 하려고 하는데 in만 인식하고 out이 안되는데 어떻게 수정해야 할까요?ㅜㅠ
뭐가 많이 복잡하군요
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-12-01 오후 11:38:48// by Ok-Hyun Park//int B=6,R=7,G=8;int PIR1=4,PIR2=5;//int t=0;//int count=0;//void setup(){pinMode(B,OUTPUT); pinMode(R,OUTPUT); pinMode(G,OUTPUT);pinMode(PIR1,INPUT); pinMode(PIR2,INPUT);Serial.begin(9600);}//void loop(){while(!digitalRead(PIR1) && !digitalRead(PIR2)); // 센서 입력이 올 때까지 대기//if(digitalRead(PIR1)){ // 센서1 신호값이 1면(인체감지시)t=0;while(!digitalRead(PIR2)){ // 센서2 입력이 올 때까지 대기delay(10);if(++t>300){ return; } // 3초 이내에 센서2 입력이 없으면 리턴}//digitalWrite(B,1); digitalWrite(R,0); digitalWrite(G,0); // B LED ONSerial.println("in"); Serial.println(++count); // 카운트숫자 표시}else if(digitalRead(PIR2)){ // 센서2 신호값이 1면(인체감지시)t=0;while(!digitalRead(PIR2)){ // 센서2 입력이 올 때까지 대기delay(10);if(++t>300){ return; } // 3초 이내에 센서1 입력이 없으면 리턴}//digitalWrite(B,0); digitalWrite(R,0); digitalWrite(G,1); // G LED ONSerial.println("out"); Serial.println(--count); // 카운트숫자 표시}//delay(800);digitalWrite(B,0); digitalWrite(R,1); digitalWrite(G,0); // LED offwhile(digitalRead(PIR1) || digitalRead(PIR2)); // 센서 입력이 없어질 때까지 대기}
댓글 0
조회수 5,031등록된 댓글이 없습니다.