이 페이지의 목차
피지컬 컴퓨팅 시스템 구성하기
학습 목표
- 선택한 부품으로 피지컬 컴퓨팅 시스템을 구성하고 프로그램을 작성할 수 있다.
관련 성취기준
- [12소생02-02]
소프트웨어를 통해 아이디어를 표현하는 데 필요한 센서와 액추에이터를 선택하여 피지컬 컴퓨팅 시스템을 구성한다.
생각 열기 — 「어두우면」은 몇부터일까
스마트 가로등은 「어두우면 켠다」. 그런데 소프트웨어는 「어둡다」는 말을 모른다. 숫자만 안다.
규칙의 세 부품 — 조건, 기준, 되풀이
문턱값(threshold) — 센서 값이 그보다 크냐 작으냐로 판단을 가르는 기준값. 「빛이 300보다 작으면 어둡다」의 300은 센서 값으로 판단을 가르는 기준이다. 사람의 말(「어두우면」)을 소프트웨어의 말(「빛 < 300」)로 옮기는 자리가 바로 여기다.
- 조건
만약 ~이면, 아니면
센서 값을 문턱값과 견주어 둘 가운데 하나를 한다. 「아니면」 쪽을 꼭 적어야 출력이 제자리로 돌아온다.
- 기준
문턱값
실제 장소에서 센서 값을 재어 보고 정한다. 책상 위와 창가의 빛 값은 다르다.
- 되풀이
쉬지 않고 다시
보드는 규칙을 한 번 실행하고 끝나지 않는다. 1초에 몇 번씩 처음부터 다시 실행하며 세상의 변화를 따라간다.
가상 보드의 진짜 보드에 올릴 코드 보기를 열면 이 세 부품이 코드에서 어디에 있는지 보인다. 마이크로비트로 만든 스마트 가로등의 코드는 이런 모양이다.
while True: # 되풀이 — 끝없이 다시
if display.read_light_level() < 60: # 조건 + 문턱값(60)
for i in range(8):
np[i] = (255, 255, 255) # 그러면 — 흰색으로 켜기
np.show()
else: # 아니면 — 끄기
for i in range(8):
np[i] = (0, 0, 0)
np.show()
sleep(100) # 0.1초 쉬고 다시
아두이노에서는 while True: 대신 void loop() { … } 가 되풀이를 맡는다. 말은 달라도 뼈대는 같다.
미션 1 — 스마트 가로등
이 미션은 두 보드 모두로 풀 수 있다. 하나로 성공했다면 보드를 바꿔 다시 해 보자. 같은 규칙이 그대로 통과할까?
미션 — 스마트 가로등
어두워지면 네오픽셀이 흰색으로 켜지고, 밝아지면 꺼지게 하자. 마이크로비트와 아두이노 어느 쪽으로도 풀 수 있다.
보드와 출력
센서 — 값을 바꿔 보자
규칙 — 위에서부터 차례로, 쉬지 않고 되풀이한다
진짜 보드에 올릴 코드 보기 —
미션 2 — 주차 차단기
미션 — 주차 차단기
차가 20cm 보다 가까이 오면 차단기(서보)가 90도로 열리고, 멀어지면 0도로 닫히게 하자.
보드와 출력
센서 — 값을 바꿔 보자
규칙 — 위에서부터 차례로, 쉬지 않고 되풀이한다
진짜 보드에 올릴 코드 보기 —
미션 3 — 더위 경보
조건 하나로 출력 두 가지(소리와 색)를 바꿔야 한다. 규칙 하나에는 동작을 하나만 넣을 수 있으니, 같은 조건의 규칙을 두 개 만들어 보자.
미션 — 더위 경보
온도가 30℃ 를 넘으면 「라」 소리로 경보를 울리고 네오픽셀을 빨강으로, 그렇지 않으면 소리를 끄고 초록으로 두자.
보드와 출력
센서 — 값을 바꿔 보자
규칙 — 위에서부터 차례로, 쉬지 않고 되풀이한다
진짜 보드에 올릴 코드 보기 —
생각대로 안 움직일 때
| 증상 | 흔한 원인 | 고치는 법 |
|---|---|---|
| 한 번 켜지면 꺼지지 않는다 | 「아니면」을 비워 두었다 | 아니면 쪽에 끄는 동작을 넣는다 |
| 밝을 때 켜지고 어두울 때 꺼진다 | 부등호가 거꾸로다 | 「보다 작으면」과 「보다 크면」을 바꾼다 |
| 아무리 어두워도 켜지지 않는다 | 문턱값이 센서 범위에 맞지 않는다 | 센서 값을 직접 재어 보고 문턱값을 다시 정한다 |
| 두 규칙이 서로 싸운다 | 같은 출력을 두 규칙이 서로 다르게 바꾼다 | 아래 규칙이 이긴다 — 차례를 바꾸거나 조건을 겹치지 않게 한다 |
| 문턱값 근처에서 깜빡거린다 | 센서 값이 문턱값 근처에서 오르내린다 | 켜는 기준과 끄는 기준을 조금 다르게 둔다(예: 250보다 작으면 켜고 350보다 크면 끈다) |
마지막 줄은 실제 가로등과 에어컨이 모두 쓰는 방법이다. 켜는 기준과 끄는 기준 사이에 «틈»을 두면 문턱값 근처에서 불이 깜빡거리지 않는다.
깜빡임을 만들고 고쳐 보기
약 10분미션 1의 가상 보드에서 빛 슬라이더를 문턱값 바로 근처에서 천천히 앞뒤로 움직여 보자. 불이 켜졌다 꺼졌다 하는가? 그다음 규칙 두 개로 바꿔 보자 — 「빛이 낮은 값보다 작으면 켜기」, 「빛이 높은 값보다 크면 끄기」(둘 다 「아니면」은 비운다). 이제 그 틈 안에서는 무엇이 일어나는가?
확인 문제
개념 확인 문제
보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.
스마트 가로등에서 「빛 < 300」의 300과 같은 기준값을 무엇이라 하는가?12소생02-02
마이크로비트에서 「빛 < 60」으로 잘 되던 규칙을 아두이노로 그대로 옮겼더니 웬만큼 어두워서는 켜지지 않는다. 까닭은?12소생02-02
아두이노 코드에서 「끝없이 되풀이」를 맡는 부분은?12소생02-02
문턱값 근처에서 불이 계속 깜빡거리는 것을 막는 방법으로 가장 알맞은 것은?12소생02-02
교과서에서 찾기
| 교과서 | 해당 위치 | 쪽수 |
|---|---|---|
| 교학사 | Ⅱ-1 피지컬 컴퓨팅 › 피지컬 컴퓨팅 시스템의 구현 | 40쪽 |
| 길벗 | Ⅱ-02 나의 아이디어가 작품이 된다 › 피지컬 컴퓨팅 시스템 구성 | 50쪽 |
| 삼양미디어 | Ⅱ-02 피지컬 컴퓨팅 시스템 구성 | 45쪽 |
| 씨마스 | Ⅱ-1 개념 학습 › 미디어 아트와 피지컬 컴퓨팅 | 48쪽 |
| 천재교과서 | Ⅱ-1 피지컬 컴퓨팅 시스템 › 피지컬 컴퓨팅 시스템의 구성 | 57쪽 |