본문 바로가기
공부,일/라즈베리 파이

라즈베리 파이 polling , 이벤트 방식 전압 감지

by fromnothing1 2021. 8. 11.

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("종료합니다.")

'공부,일 > 라즈베리 파이' 카테고리의 다른 글

Flask 이용해서 웹서버 구축 및 이용  (0) 2021.08.12
PWM 제어  (0) 2021.08.12
라즈베리 파이 하드웨어 기본  (0) 2021.08.11
기본설정 및 파이썬 사용  (0) 2021.08.10
nmap  (0) 2021.08.10

댓글