LEDs

LEDs

El Wiimote dispone de cuatro diodos LED de color azul situados en la parte trasera del mando. 

Wiimote, LEDs. Imagen alterada. User Oh-moo on ja.wikipedia / CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Habitualmente se usan para indicar el número de jugador al que pertenece el mando, pero son totalmente controlables por el host.

Durante la fase de pareado Bluetooth se encienden intermitentemente en número proporcional a la batería restante en el Wiimote.

Desde la librería CWIID se pueden controlar usando la función cwiid_command estableciendo el parámetro command a CWIID_CMD_LED. El parámetro flag se interpretará como una lista de bits que indica el estado que tomarán los LEDs.

CWIID proporciona cuatro constantes para hacer referencia a los LEDs que se encenderán:

  • CWIID_LED1_ON, LED 1 encendido.
  • CWIID_LED2_ON, LED 2 encendido.
  • CWIID_LED3_ON, LED 3 encendido.
  • CWIID_LED4_ON, LED 4 encendido.

Como es habitual, estos valores se pueden combinar mediante la operación lógica OR.

Por lo tanto, siendo wiimote el gestor del Wiimote que se quiere controlar, para encender los LEDs 1 y 3 se usaría:

cwiid_command(wiimote, CWIID_CMD_LED, CWIID_LED1_ON|CWIID_LED3_ON);

Si acto seguido se desea apagar el LED 1 y encender el 2 manteniendo el 3 en su estado anterior se deberá ejecutar:

cwiid_command(wiimote, CWIID_CMD_LED, CWIID_LED2_ON|CWIID_LED3_ON);

La luminosidad con que se encienden los LEDs no se puede controlar de forma directa, aunque sí mediante modulación por ancho de pulso enviando múltiples comandos CWIID_CMD_LED con el consiguiente consumo en la transmisión Bluetooth.

Existe otra función para controlar los LEDs:

int cwiid_set_led(cwiid_wiimote_t *wiimote, uint8_t led);

wiimote es el gestor del Wiimote.
led es el estado de los LEDs.

Devuelve 0 si la operación se realizó con éxito o un valor no nulo en caso de error.

El estado de los LEDs se puede conocer mediante el miembro led del estado obtenido por consulta directa (usando cwiid_get_state) siempre que el bit CWIID_RPT_STATUS esté activado en rpt_mode.

Reflexión

¿Qué es la modulación por ancho de pulso?

Obra publicada con Licencia Creative Commons Reconocimiento 3.0