기타/What I Learned

[TIL] 파이썬으로 익히는 STEAM코딩 (21.11.25)

가죽방패 2021. 11. 25. 14:46

※ 화재경보기 알고리즘

- 감지기는 화재가 발생할 떄 열이나 연기, 압력, 이온 등을 감지하는 장치인데

이 중 한 종류인 정온식감지기는 주위 온도가 일정한 온도 이상이 될 경우 작동하고 작동하는 온도를

공칭작동온도라고 한다. 해당 온도의 범위는 섭씨 60도~섭씨150도 이며, 섭씨 60도에서 80도 미만은 5도 간격으로, 섭씨 80도 이상은 10도 간격으로 설정되어 있다. 또한, 작동 온도에 따라 백색, 청색, 적색으로 표시가 된다.

 

백색: 80도 미만, 청색: 80도~120도 미만, 적색: 120도 이상

 

import turtle as t

color_status = ["white", "blue", "red"]
alert_status = ["정상", "주의", "화재"]
tempc = 50

def check_fire():
    if tempc < 80:
        status = 0
    elif tempc < 120:
        status = 1
    else:
        status = 2
    
    t.clear()
    t.home()
    t.pendown()
    t.fillcolor(color_status[status])
    t.begin_fill()
    t.circle(20)
    t.end_fill()
    t.penup()
    t.goto(-22, 50)
    t.write("%s : %d"%(alert_status[status], tempc))
    

def keyUp():
    global tempc
    if tempc < 80:
        tempc = tempc + 5				# 80도 보다 낮은 경우는 5도씩만 올라감
    else:
        tempc = tempc + 10				# 80도 이상인 경우 10도씩 올라감
    check_fire()						# 화재 여부를 알려주는 check_fire() 함수 호출
    

def keyDown():
    global tempc
    if tempc < 80:
        tempc = tempc - 5
    else:
        tempc = tempc - 10
    check_fire()

t.setup(300, 300)
s = t.Screen()
t.hideturtle()
t.speed(0)
check_fire()
s.onkey(keyUp, "Up")				# 위(Up) 방향키가 눌리면 keyUp() 콜백 함수 호출
s.onkey(keyDown, "Down")			# 아래(Down) 방향키가 눌리면 keyDown() 콜백 함수 호출
s.onkey(s.bye, "q")					# q가 눌리면 터틀 스크린 종료
s.listen()
t.mainloop()