카테고리 없음

[파이썬] PIR 모션 센서가 Raspberry Pi를 사용하여 감지하지 않는 경우 else-like 절

필살기쓰세요 2021. 2. 1. 09:12

나는 문제를 해결하고 누군가가 그것을 사용하고 싶을 때 게시 할 것이라고 생각했습니다. 코드가 상당히 많이 변경되었습니다. 여전히 매우 낮은 CPU를 사용합니다. 유일한 차이점은이 코드가 동작을 포착하는 데 더 효율적이지만 잘못된 판독 값이 더 높다는 것입니다. 이는 PIR 센서의 노브를 조정하여 해결할 수 있습니다. 위의 코드에도 동일한 개념을 적용 할 수 있습니다.

''' Import required stuff '''

import RPi.GPIO as GPIO     #GPIO
import time                 #for delay

''' GPIO setup '''

GPIO.setmode(GPIO.BCM) #GPIO setmode 
PIR_PIN_L = 23         #define left pin
PIR_PIN_R = 24         #define right pin
PIR_PIN_M = 25          #define middle pin

GPIO.setup(PIR_PIN_L, GPIO.IN) #set left pin
GPIO.setup(PIR_PIN_R, GPIO.IN) #set right pin
GPIO.setup(PIR_PIN_M, GPIO.IN) #set middle pin

'''Definitions '''

def MOTIONL():                          #define motion on left 
    if GPIO.input(PIR_PIN_L)==1 :       #trigger condtion left being active
                     print("Motion Detected on Left") #output
                                      time.sleep(3)          
                                      
                                       def MOTIONR():                           #define motion on right
                                           if GPIO.input(PIR_PIN_R)==1 :        #trigger condtion right being active
                                                            print("Motion Detected on Right") #output
                                                                             time.sleep(3)    
                                                                             
                                                                             def MOTIONM():                           #define motion in middle
                                                                                 if GPIO.input(PIR_PIN_M)==1 :        #trigger condtion middle being active
                                                                                                  print("Motion Detected on Middle") #output
                                                                                                                   time.sleep(3)    
                                                                                                                   def NOMOTION() :
                                                                                                                       if GPIO.input(PIR_PIN_L)==0 and GPIO.input(PIR_PIN_R)==0 and     GPIO.input(PIR_PIN_M)==0 :
                                                                                                                           #above trigger condition is no sensor being active
                                                                                                                                            print("No Motion Detected") #output
                                                                                                                                                             time.sleep(3)    
                                                                                                                                                             
                                                                                                                                                             ''' Initiation '''
                                                                                                                                                             
                                                                                                                                                             print("PIR Module Test (CTRL+C to exit)")
                                                                                                                                                             time.sleep(4)
                                                                                                                                                             print("Ready")
                                                                                                                                                             
                                                                                                                                                             ''' Sensing '''
                                                                                                                                                             
                                                                                                                                                             try:
                                                                                                                                                             
                                                                                                                                                                            while 1:  #calls defined functions simulatanously
                                                                                                                                                                                                          NOMOTION()
                                                                                                                                                                                                                                        MOTIONR()
                                                                                                                                                                                                                                                                      MOTIONL()
                                                                                                                                                                                                                                                                                                    MOTIONM()
                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                    except KeyboardInterrupt: #CTRL and C will reset shell
                                                                                                                                                                                                                                                                                                                   print("Quit")
                                                                                                                                                                                                                                                                                                                                  GPIO.cleanup()
                                                                                                                                                                                                                                                                                                                                  

print 명령은 당신이 전화를 원하는대로 기능을 대체 할 수 있습니다.



출처
https://stackoverflow.com/questions/39920019