es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo cambiar el color del controlador LED de música con SP107E / Flutter?

Quiero cambiar el color del LED musical (SP107E), ¿es posible hacerlo con Flutter? ¿Cuál es la forma correcta de hacerlo? Encontré algunas bibliotecas, pero no pude usarlas.

Ya estoy conectado al dispositivo, pero no puedo escribir valores.

En este ejemplo que estoy usando por ahora.

https://github.com/alvarowolfx/ble-rgb-light-flutter

Ver imagen

Solo quiero cambiar los colores del LED.

ACTUALIZACIÓN:

Obtengo este error cuando intento seleccionar un color.

Tried calling: write(Uint8Array, withoutResponse: true)
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:63:5)
#1 _DeviceScreenState.writeData
package:ble_rgb_lamp/main.dart:305
#2 _DeviceScreenState.onColorChange.<anonymous closure>
package:ble_rgb_lamp/main.dart:320

void writeData(Color color) async {
try {
var colorStr =
color.value.toRadixString(16).padLeft(8, '0').substring(2, 8);
var obj = {'color': colorStr};
var cmd = jsonEncode(obj);
List<int> bytes = utf8.encode(cmd);
print(cmd);
await rxChar.write(bytes, withoutResponse: true);
timer = null;
} on Exception catch (err) {
print(err);
}
}

void onColorChange(BuildContext context, Color color) async {
setState(() => pickerColor = color);

if (rxChar == null) {
    await fetchServices(context);
}

if (timer == null) {
    timer = Timer(Duration(milliseconds: 100), () =&gt; writeData(color));
}

}

Encontré la documentación SP107E

https://images-na.ssl-images-amazon.com/images/I/91v2W3TbWeL.pdf

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el color del led de música (SP107E) utilizando Flutter, es posible mediante la conexión Bluetooth y el control de los colores de los LED con comandos enviados a través de Bluetooth. La documentación de SP107E proporciona los comandos que se pueden utilizar para controlar los colores de los LED.

    Una forma de hacer esto es utilizar un complemento Bluetooth en Flutter, como flutter_blue, y conectarse al dispositivo SP107E. Una vez conectado, puedes enviar los comandos de color al dispositivo utilizando la característica de escritura del servicio Bluetooth.

    El código de ejemplo proporcionado en la pregunta es un buen punto de partida, pero parece tener un problema al escribir los valores de color en el dispositivo. El mensaje de error indica que el método de escritura se está llamando incorrectamente.

    Para escribir correctamente los valores de color en el dispositivo, es necesario convertir el valor de color al formato correcto esperado por el documento SP107E (por ejemplo, 0x1f2400 para rojo). Luego, los valores deben enviarse como una matriz de bytes al método de escritura.

    Un método writeData actualizado podría verse así:

    void writeData(Color color) async {
      try {
        var r = color.red.toRadixString(16).padLeft(2, '0');
        var g = color.green.toRadixString(16).padLeft(2, '0');
        var b = color.blue.toRadixString(16).padLeft(2, '0');
    
        String command = "56$colorStr AA";
        List<int> bytes = [];
        for (var i = 0; i < command.length; i += 2) {
          String hex = command.substring(i, i + 2);
          bytes.add(int.parse(hex, radix: 16));
        }
    
        print(command);
        await rxChar.write(bytes, withoutResponse: true);
        timer = null;
      } on Exception catch (err) {
        print(err);
      }
    }
    

    Esto convertirá los valores de color al formato correcto, creará una cadena de comando con los valores de color, convertirá la cadena de comando en una matriz de bytes de enteros y escribirá la matriz en la característica de escritura Bluetooth.

    En general, cambiar el color del led de música con Flutter y Bluetooth es posible, pero requiere un poco de conocimiento sobre comunicación Bluetooth y formatos de datos. Utilizando la documentación de SP107E y un complemento Bluetooth apropiado en Flutter, debería ser posible controlar los colores de los LED con precisión.

Comments are closed.