공부,일/라즈베리 파이
라즈베리 파이 polling , 이벤트 방식 전압 감지
fromnothing1
2021. 8. 11. 15:35
3.3 v 가 15번 핀으로 들어오면 출력
회로도

Polling
import RPi.GPIO as GPIO
import time
button_pin = 15
# 불필요한 warning 제거
GPIO.setwarnings(False)
# GPIO핀의 번호 모드 설정
GPIO.setmode(GPIO.BCM)
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while 1:
if GPIO.input(button_pin) == GPIO.HIGH:
print("Button Pushed!")
time.sleep(0.1)

push 버튼 누르면 위와 같이 출력된다.
이벤트
button_callback 함수를 이벤트에 연결해준다.
#!/usr/bin/python
#-*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
def button_callback(channel):
print("Button pushed!")
button_pin = 15
# 불필요한 warning 제거
GPIO.setwarnings(False)
# GPIO핀의 번호 모드 설정
GPIO.setmode(GPIO.BCM)
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(button_pin,GPIO.RISING,callback=button_callback)
while 1:
time.sleep(0.1) # 0.1 초 딜레이

이벤트를 통해서 LED 키고 끄기
#!/usr/bin/python
#-*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
button_pin = 15
led_pin = 26
# 불필요한 warning 제거
GPIO.setwarnings(False)
# GPIO핀의 번호 모드 설정
GPIO.setmode(GPIO.BCM)
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(led_pin, GPIO.OUT)
light_on = False
def button_callback(channel):
global light_on
if light_on == False:
GPIO.output(led_pin, 1)
print("LED ON!")
else:
GPIO.output(led_pin, 0)
print("LED OFF!")
light_on = not light_on
GPIO.add_event_detect(button_pin,GPIO.RISING,callback=button_callback, bouncetime=300)
try:
while 1:
time.sleep(0.1)
except KeyboardInterrupt:
pass
GPIO.cleanup()
print("종료합니다.")