diff --git a/tutorial/7.button_control.py b/tutorial/7.button_control.py new file mode 100644 index 0000000..d5b5eb3 --- /dev/null +++ b/tutorial/7.button_control.py @@ -0,0 +1,35 @@ +import RPi.GPIO as GPIO +import time + +# --- GPIO 핀 설정 (BCM 넘버링) --- +button_pins = { + "버튼1": 6, # GPIO 6 + "버튼2": 13, # GPIO 13 + "버튼3": 19, # GPIO 19 + "버튼4": 26 # GPIO 26 +} + +# 라즈베리파이 보드 넘버링 모드 설정 +GPIO.setmode(GPIO.BCM) + +# 각 버튼 핀을 입력으로 설정하고 내부 풀업 저항 활성화 +for name, pin in button_pins.items(): + # 여기서 PUD_DOWN 대신 PUD_UP 사용 + GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) + print(f"{name} (GPIO {pin}) 핀 설정 완료.") + +# --- 버튼 상태 읽기 --- +try: + while True: + for name, pin in button_pins.items(): + # 버튼이 눌렸을 때 (풀업 저항 사용 시 LOW) + if GPIO.input(pin) == GPIO.LOW: + print(f"{name} (GPIO {pin}) 버튼이 눌렸습니다!") + # 여기에 각 버튼에 대한 특정 동작을 추가할 수 있습니다. + # 예: if name == "버튼1": print("첫 번째 버튼 기능 실행!") + time.sleep(0.1) # 0.1초 대기하여 CPU 과부하 방지 및 채터링 감소 + +except KeyboardInterrupt: + # Ctrl+C로 종료 시 GPIO 설정 초기화 + print("\n프로그램을 종료합니다.") + GPIO.cleanup()