import time
# --- 초기 변수 ---
T_list = [1, 2, 4] # input.txt에서 읽은 값 (시뮬레이터에서는 기본값)
T_index = 0 # 현재 주기 인덱스
is_running = False # LED 작동 여부
# --- input.txt 읽기 ---
def read_input_file():
try:
with open("input.txt", "r") as f:
values = list(map(int, f.readline().strip().split()))
if len(values) != 3:
raise ValueError("input.txt에는 3개의 정수가 있어야 함")
return values
except:
return [1, 2, 4]
# --- 거리 측정 (시뮬레이터: 수동 입력) ---
def measure_distance():
try:
d = float(input("거리(cm)를 직접 입력: "))
return d
except:
print("잘못된 입력, 기본값 150 사용")
return 150.0
# --- LED 깜빡이기 ---
def blink_led(period, count):
global is_running
is_running = True
for i in range(count):
print(f"[LED ON] ({i+1}/{count})")
time.sleep(period)
print("[LED OFF]")
time.sleep(period)
is_running = False
# --- 버튼1: 주기 변경 ---
def pushbutton1():
global T_index
if not is_running:
T_index = (T_index + 1) % 3
print(f"[버튼1] 주기 변경됨 → 현재 주기 T = {T_list[T_index]}초")
else:
print("[버튼1] 현재 작동 중 → 무시됨")
# --- 버튼2: 거리 측정 후 동작 ---
def pushbutton2():
if not is_running:
distance = measure_distance()
C = int(distance // 100) + 1
print(f"[버튼2] 거리: {distance:.1f} cm → 깜빡임 횟수 C = {C}")
blink_led(T_list[T_index], C)
else:
print("[버튼2] 현재 작동 중 → 무시됨")
# --- 초기 설정 ---
T_list = read_input_file()
print(f"📂 input.txt 로드: T = {T_list}, 초기 주기 T = {T_list[T_index]}")
# --- 메인 루프 ---
while True:
cmd = input("\n[1] 주기 변경 | [2] 동작 시작 | [q] 종료 > ").strip().lower()
if cmd == "1":
pushbutton1()
elif cmd == "2":
pushbutton2()
elif cmd == "q":
print("프로그램 종료")
break
else:
print("잘못된 입력")