Bluetooth

Nesta lição, usaremos o aplicativo móvel Adafruit Bluefruit Connect para controlar remotamente os LEDs do nosso dispositivo Circuit Playground Bluefruit.

Comece instalando o aplicativo Bluefruit Connect na loja de aplicativos móveis:

Bluetooth Low Energy (BLE) é uma tecnologia sem fio para parear dois dispositivos e, em seguida, transmitir informações entre eles. Um dispositivo anuncia sua disponibilidade, enquanto o outro varre o ambiente em busca de dispositivos disponíveis.

Neste exercício, programaremos o dispositivo Bluefruit para anunciar sua disponibilidade e, em seguida, usaremos o aplicativo móvel Bluefruit Connect para varrer o ambiente, conectar-se ao dispositivo e começar a transmitir informações. Especificamente, transmitiremos uma cor do nosso aplicativo móvel e programaremos o dispositivo para mudar os LEDs para essa cor.

O Adafruit fornece funções auxiliares para tornar isso relativamente simples de implementar. Usaremos uma variável chamada connected para determinar se outro dispositivo (por exemplo, nosso celular) está pareado com o Bluefruit:

  • Se não estiver conectado, continuamos anunciando a disponibilidade.
  • Se estiver conectado, continuamos ouvindo por ColorPackets e mudamos a cor dos LEDs quando recebemos um.
from adafruit_circuitplayground import cp

from adafruit_bluefruit_connect.packet import Packet
from adafruit_bluefruit_connect.color_packet import ColorPacket

from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService

# Comece com os LEDs desligados
BLACK = (0, 0, 0)
cp.pixels.brightness = 0.3
cp.pixels.fill(BLACK)

ble = BLERadio()
uart_service = UARTService()
advertisement = ProvideServicesAdvertisement(uart_service)

while True:
    # Continue anunciando até que outro dispositivo se conecte
    ble.start_advertising(advertisement)
    while not ble.connected:
        pass
    ble.stop_advertising()

    # Continue ouvindo por pacotes enquanto estiver conectado
    while ble.connected:
        if uart_service.in_waiting:
            packet = Packet.from_stream(uart_service)
            if isinstance(packet, ColorPacket):
                print(packet.color)
                cp.pixels.fill(packet.color)

Desafio

Em vez de definir os LEDs para a cor recebida do aplicativo móvel, defina os LEDs para a cor complementar.

Dica: crie uma nova variável de cor baseada no valor de packet.color e use-a na chamada para cp.pixels.fill

Referências

Thanks! We hope you found what you are looking for. Please feel free to contribute via Github.