정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

서보모터+인체감지센서 동시 작동이 안돼요ㅠㅠ
에이쁠 | 2019-10-14

1. 프로젝트 사용한 보드 종류

아두이노 우노

 

2. 사용한 개발 프로그램명

아두이노 IDE

 

3. 사용한 센서 모델명

인체감지센서(HC-SR501), 무한회전 서보모터(FS5106R)

 

 

4. 연결한 회로 설명 (또는 이미지)

인체감지센서에 따라 서보모터를 구동하는 회로입니다. (사진 첨부가 안되네요ㅜㅜ)

2개의 인체감지센서가 모두 인식이 된 후 2개 모두 사람이 없다고 인식하면

서보모터가 작동하게 하고 싶습니다.

 

5. 소스코드 (주석 필수)

 

#include <Servo.h>
Servo myservo;

int motion1 = 2; //인체감지센서1
int motion2 = 13; //인체감지센서2
int pirState1 = LOW;   // 센서 초기상태는 움직임이 없음을 가정
int pirState2 = LOW;
int val1=0;
int val2=0;
int Ready=LOW;

void setup() {
  pinMode(motion1, INPUT);
  pinMode(motion2, INPUT);
  Serial.begin(9600);// 시리얼 통신 속도 설정

  myservo.attach(9);
}

void loop() {
  val1 = digitalRead(motion1);         // 센서 신호값을 읽어와서 val1에 저장
  val2 = digitalRead(motion2);    // 센서 신호값을 읽어와서 val2에 저장
  if (val1 == HIGH) {                                            
     if (pirState1 == LOW){                
        Serial.println("Hi! 1");   // 센서1이 인식됨
        pirState1 = HIGH;
    }
   }
  if (val2 == HIGH) {                                            
     if (pirState2 == LOW){                
        Serial.println("Hi! 2");   // 센서2가 인식됨
        pirState2 = HIGH;
    }
   }
  if (val1 == LOW && val2 == LOW){                            
    if ((pirState1 == HIGH)&&(pirState2 == HIGH)){                
        Serial.println("Good bye!");   // 센서 2개 모두 LOW
        pirState1 = LOW;
        pirState2 = LOW;
        Ready=HIGH;    // 서보모터 작동 준비   
    }
  }
  if(Ready==HIGH){ //서보모터 작동
    myservo.write(180);
    delay(1000);
    myservo.write(90);
    delay(1000);
    Ready=LOW;
  }
}

6. 문제점 및 에러 내용

  에러가 뜨지는 않는데 인체감지센서가 작동이 안되는 것 같습니다. (시리얼모니터에 아무것도 안뜨네요ㅜ)

그리고 업로드만 해도 서보모터가 아주 조금씩 계속 움직입니다..

맨마지막 서보모터부분의 if문을 빼고 업로드하면 인체감지센서는 잘 됩니다.. 왜이럴까요ㅜㅜ 부탁드려요ㅠ

이전글   |    금고 키패드 비밀번호 도와주세요 ㅠㅠ 2019-10-13
다음글   |    DB서버에서 아두이노로 데이터를 가져오는 것을 하고 있습니다.... 2019-10-14