SSHS 「불 대수와 논리게이트로 만드는 스마트 발명품」 발명수업 팀 프로젝트(2026-08)입니다. 센서 6개를 읽어 장치 4개를 제어하는 판단 규칙을 and·or·not 세 연산만으로 적고, 진리표 64줄로 검증했습니다.
원래 tkinter 창으로 만든 프로그램은 설치 없이 쓰는 시뮬레이터로도 옮겼습니다. 진리표와 전체 테스트가 함께 들어 있습니다.
교실에서는 창문을 열어둔 채 에어컨이 돌고, 아무도 없는데 난방이 켜져 있고, 공기가 답답한데 아무도 창문을 열지 않습니다. 켜야 할 조건은 분명한데 사람이 매번 놓치는 문제라, 그 조건을 논리식으로 적어 기계가 대신 판단하게 했습니다.
입력과 출력
| 입력 | 뜻 | 출력 | 뜻 | |
|---|---|---|---|---|
R |
자동 운영 모드가 켜져 있는가 | C |
냉방 | |
P |
교실에 사람이 있는가 | H |
난방 | |
W |
창문이 열렸는가 | A1 |
창문 닫기 경고음 | |
T1 |
외부 온도가 28도를 초과하는가 | A2 |
창문 열기 경고음 | |
T2 |
외부 온도가 18도 미만인가 | |||
Q |
이산화탄소 농도가 높은가 |
입력이 6개이므로 가능한 조합은 2⁶ = 64가지입니다. 전부 진리표로 적어 검증했습니다.
논리식
hot = T1 and (not T2) # 더위 신호가 믿을 만한가
cold = T2 and (not T1) # 추위 신호가 믿을 만한가
C = R and P and (not W) and hot and (not Q)
H = R and P and (not W) and cold and (not Q)
A1 = R and P and W and (hot or cold) and (not Q)
A2 = P and (not W) and Q
자동 운영 모드를 끄면 사람이 냉난방을 직접 켜고 끕니다. R 이 선택 신호인 2:1 멀티플렉서 구조입니다. 경고음은 안전 장치라 수동 모드에서도 자동 판단을 그대로 씁니다.
C_최종 = (R and C) or ((not R) and 수동냉방)
H_최종 = (R and H) or ((not R) and 수동난방)
결과 한눈에
- 64가지 중 장치가 하나라도 도는 조합은 12가지뿐입니다. 나머지 52가지는 전부 정지 상태입니다.
- 냉방과 난방, 창문 닫기 경고와 열기 경고는 어떤 조합에서도 동시에 켜지지 않습니다.
- 진리표 64줄과 실제 동작을 비교한 전체 테스트: 64 / 64 통과.
| R | P | W | T1 | T2 | Q | C | H | A1 | A2 | 동작 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 자동 냉방 |
| 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 자동 난방 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 창문 닫기 경고 |
| 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 창문 닫기 경고 |
| 0 | 1 | 0 | * | * | 1 | 0 | 0 | 0 | 1 | 창문 열기 경고 (4가지) |
| 1 | 1 | 0 | * | * | 1 | 0 | 0 | 0 | 1 | 창문 열기 경고 (4가지) |
* 는 온도 센서 값과 무관하다는 뜻입니다. 공기 질 경고는 온도를 보지 않습니다.
설계하면서 고친 세 가지
| 문제 | 증상 | 해결 |
|---|---|---|
A1에 창문 조건이 없었습니다 |
창문이 닫혀 있는데 "닫아 주세요"가 울립니다 | W 추가 |
A2에 창문 조건이 없었습니다 |
창문이 열려 있는데 "여세요"가 울립니다 | not W 추가 |
T1과 T2가 동시에 참일 수 있었습니다 |
냉방과 난방이 함께 켜집니다 | hot / cold 로 분리 |
세 번째는 물리적으로 불가능한 입력입니다. 28도를 넘으면서 동시에 18도 미만일 수는 없으니, 센서가 그런 값을 보내면 고장으로 보고 온도로 움직이는 출력을 전부 멈춥니다. 세 가지 모두 식만 봐서는 찾지 못했고, 진리표 64줄을 눈으로 훑다가 발견했습니다.
더 보기
- 설계 노트 → — 과제 명세, 자연어 조건, 설계 근거, 검증 방법, 웹으로 옮기며 바뀐 점.
- classroom_hvac.py — 원본 tkinter 구현. Python 표준 라이브러리만 쓰고, 설치할 패키지가 없습니다.
classroom_hvac.py는 원본 저장소의내작업/과 함께 MIT 라이선스로 공개돼 있습니다. 자유롭게 쓰고 고쳐도 됩니다.- 수업에서 받은 실습 파일과 PDF 는 저작권이 작성자에게 있어 여기에는 올리지 않았습니다. GitHub 저장소에 참고용으로 있습니다.