목차

# 필요한 모듈 임포트
from machine import Pin 
import bluetooth
from ble_simple_peripheral import BLESimplePeripheral
import utime

# BLE 객체 생성
ble = bluetooth.BLE()

# BLE 간단한 주변장치 클래스 인스턴스 생성
sp = BLESimplePeripheral(ble)

# 온보드 LED 설정
led_onboard = Pin("LED", Pin.OUT)
led_onboard.value(1)  # 연결 확인을 위해 LED 켜기

# LED 핀 설정 (예: GPIO 14, 15, 16번 핀에 LED 연결)
led_red = Pin(27, Pin.OUT)
led_blue = Pin(18, Pin.OUT)
led_yellow = Pin(22, Pin.OUT)

# LED 상태 변수 초기화
led_states = {
    'red': 0,
    'blue': 0,
    'yellow': 0
}

# 수신한 데이터를 처리하는 콜백 함수 정의
def on_rx(data):
    print("Data received:", data)
    command = data.decode('utf-8').strip()  # 데이터를 문자열로 디코딩하고 공백 제거

    if command in led_states:
        # 해당 LED의 상태를 토글
        led_states[command] = 1 - led_states[command]
        # LED 상태 적용
        led_red.value(led_states['red'])
        led_blue.value(led_states['blue'])
        led_yellow.value(led_states['yellow'])
        # 문자열 포매팅 수정
        led_status = 'ON' if led_states[command] else 'OFF'
        print(command.upper() + " LED " + led_status)
    elif command == 'off':
        # 모든 LED 끄기
        for key in led_states:
            led_states[key] = 0
        led_red.value(0)
        led_blue.value(0)
        led_yellow.value(0)
        print("All LEDs OFF")
    else:
        print("Unknown command")

# 메인 루프
while True:
    if sp.is_connected():
        sp.on_write(on_rx)
    utime.sleep(0.1)  # CPU 사용량을 줄이기 위해 약간의 딜레이 추가

추가 코드 업로드

ble_simple_peripheral.py

ble_advertising.py

https://671510d7ee5caa0d829ed2ad--dancing-trifle-f25156.netlify.app/

image.png