FT232H GPIO Control with PC
import board
import digitalio
import timedef gpio_output(pin_name, interval=1):
"""
FT232H GPIO 핀을 출력으로 설정하고 주기적으로 ON/OFF 전환.Args:
pin_name (str): GPIO 핀 이름 (예: 'C0', 'C1').
interval (float): LED ON/OFF 간격 (초).
"""
pin = getattr(board, pin_name) # 핀 이름을 동적으로 가져옴
led = digitalio.DigitalInOut(pin)
led.direction = digitalio.Direction.OUTPUTprint(f"GPIO {pin_name} 설정 완료. 출력으로 동작 중...")
try:
while True:
led.value = True # GPIO 핀 HIGH
print(f"GPIO {pin_name} HIGH (ON)")
time.sleep(interval)
led.value = False # GPIO 핀 LOW
print(f"GPIO {pin_name} LOW (OFF)")
time.sleep(interval)
except KeyboardInterrupt:
print("출력 동작 중단.")
finally:
led.value = False
print(f"GPIO {pin_name} 초기화 완료.")def gpio_input(pin_name):
"""
FT232H GPIO 핀을 입력으로 설정하고 외부 풀업/풀다운을 사용하여 값 읽기.Args:
pin_name (str): GPIO 핀 이름 (예: 'C1', 'C2').
"""
pin = getattr(board, pin_name) # 핀 이름을 동적으로 가져옴
button = digitalio.DigitalInOut(pin)
button.direction = digitalio.Direction.INPUTprint(f"GPIO {pin_name} 설정 완료. 입력값 읽기 시작... 외부 풀업/풀다운 저항 사용 중.")
try:
while True:
if not button.value: # 버튼이 눌렸을 때 (LOW)
print(f"GPIO {pin_name}: Button Pressed!")
else: # 버튼이 눌리지 않았을 때 (HIGH)
print(f"GPIO {pin_name}: Button Released!")
time.sleep(0.1) # 0.1초 간격으로 읽기
except KeyboardInterrupt:
print("\n입력 동작 중단.")
finally:
print(f"GPIO {pin_name} 초기화 완료.")if __name__ == "__main__":
while True:
print("\n====== FT232H GPIO 테스트 ======")
print("1. GPIO 출력 테스트")
print("2. GPIO 입력 테스트")
print("3. 종료")
mode = input("모드를 선택하세요 (1, 2, 또는 3): ")if mode == "1":
# GPIO 출력 테스트
pin = input("출력으로 사용할 GPIO 핀 이름 (예: C0): ")
interval = float(input("ON/OFF 간격 (초, 기본값 1초): ") or 1.0)
print(f"\n{pin} 핀을 {interval}초 간격으로 출력합니다. Ctrl+C로 중단.")
try:
gpio_output(pin_name=pin, interval=interval)
except Exception as e:
print(f"출력 테스트 오류: {e}")elif mode == "2":
# GPIO 입력 테스트
pin = input("입력으로 사용할 GPIO 핀 이름 (예: C1): ")
print(f"\n{pin} 핀에서 버튼 입력 상태를 읽습니다. Ctrl+C로 중단.")
try:
gpio_input(pin_name=pin)
except Exception as e:
print(f"입력 테스트 오류: {e}")elif mode == "3":
# 종료
print("프로그램을 종료합니다.")
breakelse:
print("잘못된 입력입니다. 다시 선택하세요.")