MakeCode Multi Editor를 활용한 마이크로비트 라디오 통신 예제 5개

Python 모드 기준 · 송신/수신 코드 · 상세 설명 · 실행 확인 방법 포함

사용 방법

  1. MakeCode Multi Editor를 열고 마이크로비트 2개를 준비합니다.
  2. 왼쪽 마이크로비트에는 송신 코드, 오른쪽 마이크로비트에는 수신 코드를 넣습니다.
  3. 두 코드의 radio.set_group() 번호가 같아야 통신됩니다.
  4. 라디오 그룹 번호가 다르면 메시지를 받을 수 없습니다.
핵심 명령의미
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)

상세 설명

실행 확인: 왼쪽 마이크로비트의 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)

상세 설명

실행 확인: 송신기 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)

상세 설명

실행 확인: 송신 마이크로비트를 흔들면 송신기와 수신기 모두 같은 숫자를 표시합니다.

응용

예제 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)

상세 설명

실행 확인: 송신기가 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)

상세 설명

실행 확인: A 버튼으로 R, S, P를 고르고 B 버튼을 누르면 상대 마이크로비트에 선택 문자가 표시됩니다.