사용 방법
- MakeCode Multi Editor를 열고 마이크로비트 2개를 준비합니다.
- 왼쪽 마이크로비트에는 송신 코드, 오른쪽 마이크로비트에는 수신 코드를 넣습니다.
- 두 코드의 radio.set_group() 번호가 같아야 통신됩니다.
- 라디오 그룹 번호가 다르면 메시지를 받을 수 없습니다.
| 핵심 명령 | 의미 |
|---|---|
| radio.set_group(번호) | 무선 통신 그룹을 설정합니다. |
| radio.send_string("문자") | 문자열 메시지를 보냅니다. |
| radio.send_number(숫자) | 숫자 데이터를 보냅니다. |
| radio.send_value("이름", 값) | 이름과 값을 함께 보냅니다. |
| radio.on_received_string() | 문자열을 받았을 때 실행됩니다. |
| radio.on_received_number() | 숫자를 받았을 때 실행됩니다. |
기초
예제 1. 버튼 A로 인사 메시지 보내기
목표: 한 마이크로비트에서 A 버튼을 누르면 같은 라디오 그룹의 다른 마이크로비트로 Hello 메시지를 보냅니다.
송신 마이크로비트 코드
radio.set_group(7)
def on_button_pressed_a():
radio.send_string("Hello")
basic.show_icon(IconNames.YES)
input.on_button_pressed(Button.A, on_button_pressed_a)
수신 마이크로비트 코드
radio.set_group(7)
def on_received_string(receivedString):
basic.show_string(receivedString)
radio.on_received_string(on_received_string)
상세 설명
- radio.set_group(7)은 통신 채널을 7번으로 맞추는 코드입니다.
- 송신기는 A 버튼을 누르면 radio.send_string('Hello')로 문자열을 보냅니다.
- 수신기는 radio.on_received_string 이벤트가 실행되어 받은 문자열을 LED에 출력합니다.
- MakeCode Multi Editor에서 두 장치를 같은 group 번호로 설정해야 통신됩니다.
실행 확인: 왼쪽 마이크로비트의 A 버튼을 누르면 오른쪽 마이크로비트 화면에 Hello가 흐르듯 출력됩니다.
기초
예제 2. 버튼 A/B로 방향 명령 보내기
목표: A 버튼은 LEFT, B 버튼은 RIGHT 명령을 보내고 수신기는 방향 화살표를 표시합니다.
송신 마이크로비트 코드
radio.set_group(10)
def on_button_pressed_a():
radio.send_string("LEFT")
basic.show_arrow(ArrowNames.WEST)
def on_button_pressed_b():
radio.send_string("RIGHT")
basic.show_arrow(ArrowNames.EAST)
input.on_button_pressed(Button.A, on_button_pressed_a)
input.on_button_pressed(Button.B, on_button_pressed_b)
수신 마이크로비트 코드
radio.set_group(10)
def on_received_string(msg):
if msg == "LEFT":
basic.show_arrow(ArrowNames.WEST)
elif msg == "RIGHT":
basic.show_arrow(ArrowNames.EAST)
else:
basic.show_icon(IconNames.NO)
radio.on_received_string(on_received_string)
상세 설명
- 문자열 명령을 약속해 두면 원격 조종처럼 사용할 수 있습니다.
- 수신기는 if, elif 조건문으로 받은 메시지를 구분합니다.
- LEFT를 받으면 왼쪽 화살표, RIGHT를 받으면 오른쪽 화살표를 표시합니다.
- 명령어 철자가 송신 코드와 수신 코드에서 완전히 같아야 합니다.
실행 확인: 송신기 A 버튼을 누르면 수신기에 왼쪽 화살표, B 버튼을 누르면 오른쪽 화살표가 표시됩니다.
응용
예제 3. 흔들면 랜덤 숫자 보내기
목표: 마이크로비트를 흔들면 1부터 6까지의 난수를 보내고 수신기는 숫자를 표시합니다.
송신 마이크로비트 코드
radio.set_group(15)
def on_gesture_shake():
n = randint(1, 6)
radio.send_number(n)
basic.show_number(n)
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
수신 마이크로비트 코드
radio.set_group(15)
def on_received_number(receivedNumber):
basic.show_number(receivedNumber)
radio.on_received_number(on_received_number)
상세 설명
- randint(1, 6)은 1 이상 6 이하의 임의의 정수를 만듭니다.
- radio.send_number(n)은 숫자 데이터를 전송합니다.
- 문자열은 send_string, 숫자는 send_number를 사용하는 것이 좋습니다.
- 주사위, 게임 점수, 센서값 전송 활동으로 확장할 수 있습니다.
실행 확인: 송신 마이크로비트를 흔들면 송신기와 수신기 모두 같은 숫자를 표시합니다.
응용
예제 4. 온도 센서값 무선 전송하기
목표: 송신 마이크로비트가 현재 온도를 주기적으로 보내고 수신 마이크로비트가 온도를 표시합니다.
송신 마이크로비트 코드
radio.set_group(20)
def on_forever():
t = input.temperature()
radio.send_value("temp", t)
basic.show_number(t)
basic.pause(3000)
basic.forever(on_forever)
수신 마이크로비트 코드
radio.set_group(20)
def on_received_value(name, value):
if name == "temp":
basic.show_string("T")
basic.show_number(value)
radio.on_received_value(on_received_value)
상세 설명
- input.temperature()는 마이크로비트가 측정한 온도값을 가져옵니다.
- radio.send_value('temp', t)는 이름과 값을 함께 전송합니다.
- 수신기는 name이 temp인지 확인한 뒤 value를 출력합니다.
- 3초마다 보내므로 너무 빠르게 화면이 바뀌는 문제를 줄일 수 있습니다.
실행 확인: 송신기가 3초마다 온도를 보내면 수신기에 T와 온도 숫자가 차례로 표시됩니다.
심화
예제 5. 무선 가위바위보 게임
목표: 각 마이크로비트가 A 버튼으로 선택을 바꾸고 B 버튼으로 선택값을 전송합니다.
송신 마이크로비트 코드
radio.set_group(30)
choice = 0
names = ["R", "S", "P"]
def show_choice():
basic.show_string(names[choice])
def on_button_pressed_a():
global choice
choice = (choice + 1) % 3
show_choice()
def on_button_pressed_b():
radio.send_number(choice)
basic.show_string("SEND")
input.on_button_pressed(Button.A, on_button_pressed_a)
input.on_button_pressed(Button.B, on_button_pressed_b)
show_choice()
수신 마이크로비트 코드
radio.set_group(30)
def on_received_number(other):
if other == 0:
basic.show_string("R")
elif other == 1:
basic.show_string("S")
elif other == 2:
basic.show_string("P")
radio.on_received_number(on_received_number)
상세 설명
- choice는 현재 선택을 저장하는 변수입니다. 0은 바위, 1은 가위, 2는 보입니다.
- A 버튼을 누를 때마다 (choice + 1) % 3으로 선택이 순환합니다.
- B 버튼을 누르면 현재 선택 숫자를 라디오로 보냅니다.
- 두 마이크로비트에 같은 코드를 넣으면 서로 선택값을 주고받는 게임으로 확장할 수 있습니다.
실행 확인: A 버튼으로 R, S, P를 고르고 B 버튼을 누르면 상대 마이크로비트에 선택 문자가 표시됩니다.