공부,일/라즈베리 파이

라즈베리 파이 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("종료합니다.")