이번에는 두사람의 우정을 구해주는 측정기를 만들어 보겠습니다.


- 기본 개념


  서로의 우정을 측정해주는 것을 만들어 보겠습니다. 실제로 우정을 측정하는 것은 아니고, 두 사람이 신호를 주면 무작위로 우정 좋음, 보통, 낮음으로 표시하게 해서 우정을 측정하는 장난감 같은 것을 만들어 보겠습니다. 


- 코딩 알고리즘


  마이크로비트에는 핀(PIN)이란 것이 있습니다. 이 핀은 P0~P3와 GND로 구성되어 있는데 핀에는 구멍이 있습니다. 이 핀이 작동하려면 P0부터 P3중 하나와 GND가 전기가 통하는 물질로 연결되어있어야 하는데요, 쉽게 건전지의 +(PIN)와 -(GND)가 연결되어야 회로에 전기가 흐르는 것과 같은 개념입니다. 여기서는 그 전기가 통하는 물질을 '사람의 몸' 으로 하겠습니다. 그래서

한 사람이 P0를 왼손으로 잡고 상대편이 오른손으로 GND를 잡은 후, 

남은 손을 서로 잡으면 좋음 보통 낮음 중 하나의 우정을 도트매트릭스에 표현해 주는 것

을 만들어 보겠습니다. 


  먼저 좋음, 보통, 나쁨에 대한 것을 만들어 보겠습니다. 만드는 방법은 무작위로 값이 변하는 수(Random variable)를 만들어 매번 핀을 잡았을 때 다른 우정을 표현해 줄 수 있도록 무작위변수를 만들겠습니다.  - 만들기 1의 내용


 그리고 얻은 무작위 변수에 따라 우정을 도트매트릭스에 표현해 보겠습니다. - 만들기 2의 내용


- 만들기 1 (우정도 변수 만들기)



(만들기 1에 사용할 블럭들)


  왼쪽 위부터 아래로

· 연결한 블록을 0 부터 원하는 수 사이중 하나로 저장하는 블록 (지금 보이는 블럭은 0부터 4 사이의 한 숫자를 저장)

· 우정도를 원하는 수로 설정하는 블록


이렇게 두 개로 만들어 보겠습니다. 


무작위로 변하는 우정도 만들기


 우정도는 더 세세하게 정해주어도 되지만 우선 좋음, 보통, 나쁨 세가지로 구분할 것이기 때문에 무작위 변수는 3가지 값 중 하나를 가져야 합니다. 그래서 0부터 2까지로 설정해 주어서 0(나쁨), 1(보통), 2(좋음) 3가지로 구분해 보겠습니다. 


(0부터 2사이의 숫자중 하나인 우정도를 만드는 블록)



-만들기 2 (얻은 무작위 변수 값에 따라 핀을 잡았을 때 적절한 표정 도트매트릭스에 표시하기)


(만들기2에 사용할 블럭들)



  왼쪽 위부터 아래로

· 핀0와 GND가 연결되면 블록 안의 내용을 실행하게하는 블록

· if 오른쪽의 값이 true이면 안의 내용을 실행하고 false이면 실행하지 않는 블록

· 두 수를 비교하는 블록

· 우정도 블록

· 숫자를 도트매트릭스에 표현해주는 블록



   1. 얻은 무작위 변수값 비교하는 블록 만들기


만들기 1을 통해서 이제 우정도안에는 0에서 2사이의 수가 저장되었습니다. 이 우정도가 0이면 나쁨을 출력, 1이면 보통을 출력, 2이면 좋음을 출력하게하기 위해 if 블록을 사용합니다. 먼저 연결 그림부터 보겠습니다. 


(두 수를 비교해서 true 아니면 false라는 값을 가지는 블록)


이 블록이 의미하는 것은 "우정도가 0과 같으면 true, 아니면 false" 입니다. 앞의 블록 설명에서 if 오른쪽에는 true 또는 false란 값이 들어간다고 했는데요, 이 블록을 그 부분에 연결하면 우정도가 0일때만 원하는 동작을 하게 할 수 있습니다. 나머지 1과 2도 동일합니다. 


(우정도의 값을 비교해서 원하는 값을 출력하게 하기 위한 블록 연결)


 2. 블록안에 적절한 표현 넣기


  위의 사용하는 블록에서는 가지고 있는 우정도의 값을 도트매트릭스에 표현하는 것을 이용하였습니다. 그림부터 보면 조건문은 다 완성했으므로 적절히 연결하면 


(완성)


  숫자 말고 각각 표정을 넣을 수도 있습니다. Basic 의 show icon 이란 블록을 보면 안에 


(show icon)


이렇게 다양한 그림을 출력 할 수 있습니다. 저는 각각 우는표정, 무표정, 웃는 표정을 넣어 봤습니다. 


(완성2)


마무리

  

  이번 예제에서는 또 실전 코딩에서 사용할 수 있는 중요한 것인 무작위변수와 if를 사용해봤습니다. 그리고 PIN 과 GND를 통해 회로가 동작하기 위한 간단한 조건에 대해서도 알게 되셨으면 좋겠습니다. 

+ Recent posts