AVR

아두이노 PIR 센서를 이용하여 경고음 발생시키기

by nanumi posted Apr 30, 2020
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

아두이노 PIR 센서를 이용하여 경고음  발생시키기

Motion Detection Alarm System Motion Detection Alarm System

 

Arduino Motion Sensor/Detector using PIR Sensor: Complete Project ...

 

//HASSAN SHETTIMA LAWAN

//hassanshettima705@gmail.com               //                                      기본 변수 설정

int buzzerPin = 8;                          //BUZZER INPUT PIN.                     부저 입력핀을 8번으로 함

int ledPin = 13;                            //LED PIN.                              led 핀을 13번으로 함

int pirPin = A0;                            //MOTION SENSOR INPUT PIN.              모션센서 핀을 아날로그 A0번으로 함

int sensorValue = LOW;                      //DEFAULT SENSOR STATE.                 모션센서의 초기값음 0(LOW), 1(HIGH)이면 작동이 되게 설정함.

int alarmoffswitchPin = 5;                  //                                      알람해제용 핀을 5번으로함(시끄러울 경우 30분간 해제)

int switchValue = LOW;                      //                                      스위치 눌림여부 확인변수로 기본 LOW

 

void setup() {                              //INITIAL SETTINGS/ASSIGNMETN.          핀모드의 작동설정을 합니다.

  pinMode(buzzerPin, OUTPUT);               //SET BUZZER AS OUTPUT.                 8번으로 설정된 부저핀은 출력모드로 사용합니다. 

  pinMode(ledPin, OUTPUT);                  //SET LED AS OUTPUT.                    13번으로 설정된 LED 핀은 출력모드로 사용합니다.

  pinMode(pirPin, INPUT);                   //SET PIR AS INPUT.                     아날로그 A0으로 설정된 PIR(적외선움직임) 센서는 입력모드로 사용합니다.

  pinMode(alarmoffswitchPin, INPUT)         //                                      5번으로 설정된 led핀은 입력모드로 사용합니다.

}

 

 

void loop() {                               //COMMAND TO BE REPEATED.               작업 수행명령              

  sensorValue = digitalRead(pirPin);        //READ PIR INPUT PIN.                   만약 sensorValue값이 1(HIGH)이면

  if ( sensorValue == HIGH) {               //IF MOTION IS DETECTED.                          buzzerPin에 1200주파수를신호를 주고

    tone(buzzerPin, 1200);                  //BUZZ THE BUZZER.                                Led도 같이 켠다.

    digitalWrite(ledPin, HIGH);             //ON LED.                                         (100ms)0.1초간 잠시 대기

    delay(500);                             //TIME DIFFERENCE BETWEEN HIGH(ON)& LOW(OFF).

  

    

    noTone(buzzerPin);                      //SILENT BUZZER.                                  buzzerPin에 경고음을 끈다.

    digitalWrite(ledPin, LOW);              //OFF LED.                                        ledPin도 끈다.

    delay(100);                             //TIME DIFFERENCE BETWEEN HIGH(ON)& LOW(OFF).     (100ms)0.1초간 잠시 대기

    

    switchValue = digitalRead(alarmoffswitchPin);  

      if( alarmoffswitchPin, HIGH){            //                                                 alarmoffswitchPin값이 1(HIGH)이면

        delay(30000);                          //                                                 스위치가 눌러진 것으로 파악,

        }

      

      else  {                                 //                                                  스위치가 눌러지지 않았을 경우 다음으로 진행됨.

        }

  }

  else {                                    //IF NO MOTION IS DETECTED.

    noTone(buzzerPin);                      //SILENT THE BUZZER.

    digitalWrite(ledPin, LOW);              //OFF LED.

  }

}