Extension de Comunicacion para MakeCode y Micro:bit
La extension “Comunicacion” mejora las capacidades de comunicacion entre dispositivos Microbit, permitiendo una interaccion mas avanzada y personalizada en proyectos educativos y de entretenimiento.
Uso como Extension
Este repositorio puede ser agregado como una extension en MakeCode.
- Abre https://makecode.microbit.org/
- Haz clic en Nuevo Proyecto
- Haz clic en Extensiones dentro del menu de la rueda dentada
- Busca por https://github.com/romanrguez192/communication e importa
Editar este Proyecto
Para editar este repositorio en MakeCode:
- Abre https://makecode.microbit.org/
- Haz clic en Importar, luego en Importar URL
- Pega https://github.com/romanrguez192/communication y haz clic en importar
Bloques Disponibles
La extension “Comunicacion” proporciona una variedad de bloques para la comunicacion entre dispositivos Micro:bit, permitiendo configuraciones personalizadas, sincronizacion y la transmision de diferentes tipos de datos. A continuacion, se detallan los bloques disponibles y ejemplos de su uso.
Configuracion
Establecer Canal de Comunicacion
communication.setChannel(1)
Configura el canal de comunicacion (0-255) para limitar la interferencia con otros dispositivos.
Registrar Dispositivo con Nombre
communication.registerDevice("Alice")
Asigna un nombre identificativo a tu dispositivo Micro:bit, facilitando su identificacion en la red.
Grupos
Unirse al Grupo
communication.joinGroup("Exploradores")
Permite que el dispositivo se una a un grupo especifico para comunicarse unicamente con los miembros de ese grupo.
Salir del Grupo
communication.leaveGroup("Exploradores")
Retira el dispositivo del grupo especificado, deteniendo la recepcion de mensajes de ese grupo.
Sincronizacion
Esperar por Dispositivos Conectados
communication.waitForDevices(2)
Bloquea la ejecucion del programa hasta que el numero especificado de dispositivos se haya conectado.
Esperar por Dispositivo Especifico
communication.waitForDevice("Bob")
Detiene la ejecucion del programa hasta que el dispositivo con el nombre especificado se conecte.
Esperar por Dispositivos Conectados en Grupo
communication.waitForDevicesInGroup(2, "Exploradores")
Bloquea la ejecucion del programa hasta que el numero especificado de dispositivos del grupo especificado se haya conectado.
Puntos de Encuentro de Sincronizacion Directa
communication.synchronizationBarrierDirect("Alice", "inicioJuego")
Sincroniza acciones entre dispositivos en puntos especificos del programa, esperando a que un dispositivo especifico alcance el punto de encuentro antes de continuar.
Puntos de Encuentro de Sincronizacion de Grupo
communication.synchronizationBarrierGroup("Exploradores", "puntoReunion")
Sincroniza acciones entre dispositivos de un grupo en puntos especificos del programa, esperando a que todos los dispositivos del grupo alcancen el punto de encuentro antes de continuar.
Puntos de Encuentro de Sincronizacion por Difusion
communication.synchronizationBarrierBroadcast("finJuego")
Sincroniza acciones entre todos los dispositivos en el canal de comunicacion en puntos especificos del programa, esperando a que todos los dispositivos alcancen el punto de encuentro antes de continuar.
Mensajes Directos
Enviar Mensaje Directo
communication.sendDirectMessage("Bob", "Hola")
Envia un mensaje directamente a un dispositivo especifico identificado por su nombre.
Recibir Mensaje Directo
communication.onDirectMessageReceived(function(mensaje, emisor) {
basic.showString(mensaje)
})
Define una accion a realizar cuando se recibe un mensaje directo de cualquier dispositivo.
Recibir Mensaje Directo de Emisor Especifico
communication.onDirectMessageReceivedFrom("Bob", function(mensaje) {
basic.showString(mensaje)
})
Define una accion a realizar cuando se recibe un mensaje directo de un emisor especifico.
Valores Directos
Enviar Valor Directo
communication.sendDirectValue("Bob", "temperatura", 25)
Envia un valor con nombre a un dispositivo especifico identificado por su nombre.
Recibir Valor Directo
communication.onDirectValueReceived("temperatura", function(valor, emisor) {
basic.showNumber(valor)
})
Define una accion a realizar cuando se recibe un valor con nombre de cualquier dispositivo.
Recibir Valor Directo de Emisor Especifico
communication.onDirectValueReceivedFrom("Bob", "temperatura", function(valor) {
basic.showNumber(valor)
})
Define una accion a realizar cuando se recibe un valor con nombre de un emisor especifico.
Eventos Directos
Enviar Evento Directo
communication.sendDirectEvent("Bob", "inicio")
Envia un evento directamente a un dispositivo especifico, lo que puede desencadenar acciones especificas en el receptor.
Escuchar por Evento Especifico
communication.onDirectEventReceivedWithEvent("inicio", function(emisor) {
basic.showString("Inicio desde " + emisor)
})
Ejecuta acciones en respuesta a la recepcion de un evento especifico enviado por cualquier dispositivo.
Escuchar por Evento Especifico de Emisor Especifico
communication.onDirectEventReceivedFromWithEvent("Alice", "inicio", function() {
basic.showString("Inicio desde Alice")
})
Ejecuta acciones en respuesta a la recepcion de un evento especifico enviado por un emisor especifico.
Solicitudes
Enviar Solicitud
let value = communication.requestValue("Bob", "temperatura")
basic.showNumber(value)
Envia una solicitud a un dispositivo especifico identificado por su nombre, esperando una respuesta.
Recibir Solicitud
communication.onRequestReceived("temperatura", function(emisor) {
})
Define una accion a realizar cuando se recibe una solicitud de cualquier dispositivo.
Responder a Solicitud
communication.respondWithValue("Alice", "temperatura", 25)
Envia una respuesta a una solicitud recibida, con un valor con nombre especifico.
Mensajes de Grupo
Enviar Mensaje al Grupo
communication.sendMessageToGroup("Exploradores", "¡Reunion!")
Envia un mensaje a todos los miembros de un grupo especifico.
Recibir Mensaje de Grupo
communication.onReceivedMessageFromGroup("Exploradores", function(mensaje, emisor) {
basic.showString(mensaje)
})
Define una accion a realizar cuando se recibe un mensaje de cualquier miembro del grupo especificado.
Recibir Mensaje de Grupo con Emisor Especifico
communication.onReceivedMessageFromGroupFrom("Exploradores", "Bob", function(mensaje) {
basic.showString(mensaje)
})
Define una accion a realizar cuando se recibe un mensaje de un emisor especifico en el grupo especificado.
Valores de Grupo
Enviar Valor al Grupo
communication.sendValueToGroup("Exploradores", "temperatura", 25)
Envia un valor con nombre a todos los miembros de un grupo especifico.
Recibir Valor de Grupo
communication.onReceivedValueFromGroup("Exploradores", "temperatura", function(valor, emisor) {
basic.showNumber(valor)
})
Ejecuta acciones en respuesta a la recepcion de un valor con nombre enviado por cualquier miembro del grupo.
Recibir Valor de Grupo con Emisor Especifico
communication.onReceivedValueFromGroupFrom("Exploradores", "Bob", "temperatura", function(valor) {
basic.showNumber(valor)
})
Ejecuta acciones en respuesta a la recepcion de un valor con nombre enviado por un emisor especifico en el grupo especificado.
Eventos de Grupo
Enviar Evento al Grupo
communication.sendEventToGroup("Exploradores", "inicioActividad")
Envia un evento a todos los miembros de un grupo especifico, lo que puede desencadenar acciones especificas en los receptores.
Recibir Evento de Grupo
communication.onReceivedEventFromGroupWithEvent("Exploradores", "inicioActividad", function(emisor) {
basic.showString("Actividad iniciada por " + emisor)
})
Ejecuta acciones en respuesta a la recepcion de un evento especifico enviado por cualquier miembro del grupo.
Recibir Evento de Grupo con Emisor Especifico
communication.onReceivedEventFromGroupFromWithEvent("Exploradores", "Bob", "inicioActividad", function() {
basic.showString("Actividad iniciada por Bob")
})
Ejecuta acciones en respuesta a la recepcion de un evento especifico enviado por un emisor especifico en el grupo especificado.
Mensajes por Difusion
Enviar Mensaje por Difusion
communication.broadcastMessage("Alerta general")
Envia un mensaje a todos los dispositivos en el canal de comunicacion, independientemente del grupo.
Recibir Mensaje por Difusion
communication.onReceivedBroadcast(function(mensaje, emisor) {
basic.showString(mensaje)
})
Define una accion a realizar cuando se recibe un mensaje de difusion de cualquier dispositivo.
Recibir Mensaje por Difusion con Emisor Especifico
communication.onReceivedBroadcastFrom("Bob", function(mensaje) {
basic.showString(mensaje)
})
Define una accion a realizar cuando se recibe un mensaje de difusion de cualquier dispositivo.
Valores por Difusion
Enviar Valor por Difusion
communication.broadcastValue("alerta", "rojo")
Envia un valor con nombre a todos los dispositivos en el canal de comunicacion.
Recibir Valor por Difusion
communication.onReceivedValueBroadcast("alerta", function(valor, emisor) {
if (valor == "rojo") {
basic.showIcon(IconNames.No)
}
})
Ejecuta acciones en respuesta a la recepcion de un valor con nombre enviado por cualquier dispositivo en modo de difusion.
Recibir Valor por Difusion con Emisor Especifico
communication.onReceivedValueBroadcastFrom("Bob", "alerta", function(valor) {
if (valor == "rojo") {
basic.showIcon(IconNames.No)
}
})
Ejecuta acciones en respuesta a la recepcion de un valor con nombre enviado por un emisor especifico en modo de difusion.
Eventos por Difusion
Enviar Evento por Difusion
communication.broadcastEvent("evacuar")
Envia un evento a todos los dispositivos en el canal de comunicacion, lo que puede desencadenar acciones especificas en los receptores.
Recibir Evento por Difusion
communication.onReceivedEventBroadcastWithEvent("evacuar", function(emisor) {
basic.showIcon(IconNames.Skull)
})
Ejecuta acciones en respuesta a la recepcion de un evento especifico enviado por cualquier dispositivo en modo de difusion.
Recibir Evento por Difusion con Emisor Especifico
communication.onReceivedEventBroadcastFromWithEvent("Bob", "evacuar", function() {
basic.showIcon(IconNames.Skull)
})
Ejecuta acciones en respuesta a la recepcion de un evento especifico enviado por un emisor especifico en modo de difusion.
Proximidad
Encontrar Dispositivo Mas Cercano
let dispositivoCercano = communication.findClosestDevice()
basic.showString(dispositivoCercano)
Este bloque devuelve el nombre del dispositivo mas cercano basado en la intensidad de la senal de radio recibida.
Encontrar Dispositivo Mas Cercano en un Grupo
let dispositivoCercanoGrupo = communication.findClosestDeviceInGroup("Exploradores")
basic.showString(dispositivoCercanoGrupo)
Similar al bloque anterior, pero restringe la busqueda al grupo especificado, devolviendo el dispositivo mas cercano dentro de ese grupo.
Metadatos (utilizados para busqueda, renderizado)
- for PXT/microbit