본문 바로가기

라즈베리파이

라즈베리파이 GPIO 인터럽트 사용 Python 예제

반응형


라즈베리파이 GPIO 인터럽트 사용 Python 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env python
 
import RPi.GPIO as GPIO 
#GPIO 라이브러리 버젼을 출력한다
print GPIO.VERSION
#핀 넘버링을 BCM 방식을 사용한다.
GPIO.setmode(GPIO.BCM) 
 
#4번 핀을 입력모드로 설정
GPIO.setup(4, GPIO.IN) 
globalCounter = 0 
 
#인터럽트 함수가 호출되면 글로벌 변수 globalCounter 값을 1 증가시킨다.
def myInterrupt(channel): 
    global globalCounter 
    globalCounter += 1
    print " Done. counter:" , globalCounter
 
 
#4번 핀이 OFF될 때 myInterrupt 함수를  통해 인터럽트를 받겠다는 요청
#GPIO.FALLING은 ON 상태에서 OFF로 변경될 때 시그널을 받겠다는 의미
GPIO.add_event_detect(4, GPIO.FALLING, callback=myInterrupt) 
 
try
    raw_input("Press Enter to Exit\n>"
except KeyboardInterrupt: 
    GPIO.cleanup() # clean up GPIO on CTRL+C exit 
    GPIO.remove_event_detect(4
 
GPIO.remove_event_detect(4
GPIO.cleanup() # clean up GPIO on normal exit
 



이미지 출처와 참고로 읽어보면 좋은 링크: Interrupt-driven I/O on Raspberry Pi 3 with LEDs and pushbuttons: rising/falling edge-detection using RPi.GPIO

https://medium.com/@rxseger/interrupt-driven-i-o-on-raspberry-pi-3-with-leds-and-pushbuttons-rising-falling-edge-detection-36c14e640fef

반응형