© 2025 Roberto Cortés — Contenido original bajo licencia.
Imágenes y logotipos son propiedad de sus respectivos titulares.

En MakeCode, los bloques de programación son una forma visual e intuitiva de programar sin necesidad de escribir código. Están diseñados para que personas sin experiencia previa —como estudiantes o principiantes— puedan crear programas fácilmente, simplemente encajando piezas como si fueran un puzle.
Los bloques son representaciones gráficas de instrucciones de programación. Cada bloque representa una acción, condición, evento o estructura lógica. Están agrupados por categorías y tienen formas que encajan entre sí solo cuando tienen sentido lógico.
Estos bloques están diseñados para enseñar: pensamiento computacional, lógica condicional (si, entonces...), repeticiones (bucles), eventos (botones, sensores), variables, funciones y estructuras de datos básicas (listas, entradas numéricas, etc.).
¿Por qué se usan bloques de programación en educación?
Tipos de bloques




PULSA SOBRE CADA CATEGORÍA PARA VER SU CONTENIDO:

Ejecuta instrucciones una sola vez cuando la micro:bit se enciende o se reinicia.
Es el bloque de inicio del programa. Todo lo que se coloca dentro se ejecuta en orden, solo una vez, antes de cualquier otro evento o bucle.

Ejecuta continuamente las instrucciones que contiene, en bucle infinito.
Es el bucle principal del programa. Todo lo que se coloque dentro se repite sin detenerse mientras la micro:bit esté encendida.

Muestra un texto en la pantalla LED de la micro:bit, letra por letra.
Coge una cadena de texto (string) y la desplaza de derecha a izquierda por la matriz de LEDs.

Muestra un número en la pantalla LED de la micro:bit.
Convierte el número a texto y lo desplaza (si es de dos o más cifras) en la matriz de LEDs, de derecha a izquierda, dígito por dígito.Los números decimales deben escribirse utilizando punto (.) como separador decimal, no coma.

Muestra una flecha en la pantalla LED de la micro:bit apuntando en una dirección específica.
Activa un patrón de LEDs que representa una flecha en una de ocho direcciones posibles: Norte, Noroeste, Este, Sureste, Sur, Suroeste, Oeste y Noroeste. La dirección se elige desde el botón desplegable.
![]()
Muestra un icono predefinido en la pantalla LED de la micro:bit.
Enciende un patrón fijo de LEDs según el icono seleccionado: corazón, cara feliz, nota musical, etc., que se elige desde el botón desplegable.

Permite crear y mostrar un dibujo personalizado en la pantalla LED de la micro:bit.
Pulsa con el ratón sobre cada LED para encenderlo o apagarlo y formar una imagen específica, que se muestra inmediatamente al ejecutar este bloque.

Detiene la ejecución del programa durante el tiempo indicado, en milisegundos.
Sirve para controlar los intervalos entre acciones, por ejemplo, al mostrar imágenes o textos.

Apaga todos los LEDs de la micro:bit y deja la pantalla vacía.
Se usa para limpiar la imagen o texto anterior antes de mostrar otro o al finalizar una secuencia.

Ejecuta las instrucciones que contiene cuando se pulsa el botón A de la micro:bit.
También se puede cambiar para que reaccione al botón B o a los dos botones A+B, usando el menú desplegable.

Devuelve "verdadero" si el botón seleccionado (A, B o A+B) está siendo presionado en ese momento.
Se usa dentro de bloques condicionales (si... entonces) o en expresiones lógicas para tomar decisiones según el estado del botón.
Aparecerá un botón auxiliar A+B, debajo del botón B.


Ejecuta las instrucciones que contiene cuando se toda el logotipo de la micro:bit. Puedes elegir entre distintas acciones: pulsar, tocar, soltar o mantener pulsado.
Sirve para usar el logotipo como un botón táctil adicional en tus proyectos.

Devuelve verdadero si el logotipo táctil de la micro:bit está siendo tocado en ese momento.
Se usa como condición en estructuras de decisión para ejecutar acciones mientras el logotipo esté activo.

Ejecuta las instrucciones cuando se detecta una conexión eléctrica (como tocar con un cable o el dedo) en el pin seleccionado.
Puedes elegir entre los pines P0, P1 o P2 usando el menú desplegable.

Devuelve "verdadero" si el pin seleccionado (P0, P1 o P2) está en contacto con algo conductor (como un cable, el dedo o un componente).
Se usa en estructuras condicionales para tomar decisiones basadas en entradas físicas externas.

Ejecuta las instrucciones cuando el pin seleccionado (P0, P1 o P2) deja de estar en contacto con algo conductor (como el dedo o un cable).
Permite detectar el momento en se suelta un contacto. Útil para controlar eventos por duración o liberar acciones.
Al pulsar sobre la superficie del pin, más arriba o más abajo, aparecerá un valor que representa el nivel de conductividad, medido entre 0 y 1023.
El valor 0 representa 0V (sin conductividad) y el valor 1023 representa 3,3V (máximo voltaje que puede leer la micro:bit).


Ejecuta las instrucciones que contiene cuando la micro:bit detecta un gesto, como agitar, girar o inclinar.
Puedes elegir el gesto desde el menú desplegable: agitado, logotipo hacia arriba, logotipo hacia abajo, pantalla hacia arriba, pantalla hacia abajo, inclinación hacia la izquierda, inclinación hacia la derecha, caida libre, y las fuerzas de aceleración 3g, 6g y 8g.

Aparecerá un botón auxiliar (shake) encima del botón B para "agitar" la micro:bit.


Devuelve "verdadero" si la micro:bit detecta el gesto seleccionado (agitado, inclinado, caída libre, etc.) en ese momento.
Ideal para usar dentro de estructuras condicionales y crear respuestas personalizadas a movimientos.

Devuelve el valor numérico de la aceleración en miligravedades (mg) en el eje seleccionado: x, y o z.
Se puede usar para medir inclinación, sacudidas o movimientos del dispositivo, útil en juegos, alarmas o control de gestos.

Permite cambiar la sensibilidad máxima del acelerómetro de la micro:bit, eligiendo entre 1g, 2g, 4g o 8g.
Cuanto mayor es el rango, más aceleración puede medir, pero con menor precisión en cambios pequeños.

Devuelve un valor numérico entre 0 (oscuridad total) y 255 (luz intensa), según la cantidad de luz que reciben la micro:bit.
Utiliza los LEDs de la pantalla como fotodetectores, por lo que no es un sensor dedicado, pero permite medir cambios de iluminación.
Aparecerá un control de luz en la esquina superior izquierda. Pulsa y arrastra para cambiar la intensidad.


Devuelve la temperatura del entorno en grados Celsius, estimada a partir del sensor del chip principal.
Es una medida aproximada, ya que el sensor está dentro del microprocesador y puede reflejar también su temperatura interna.
Aparecerá un control de temperatura junto al botón A. Pulsa y arrastra para cambiarla.


Ejecuta las instrucciones contenidas dentro, cuando se detecta un nivel de sonido determinado: alto o silencioso.
Permite reaccionar a ruidos del entorno, como una palmada o una voz, y crear proyectos interactivos basados en sonido.
Los umbrales por defecto son:

Devuelve un número entre 0 y 255 que representa la intensidad del sonido ambiental captado por el micrófono.
Se puede usar para medir volumen y reaccionar a ruidos de distinta intensidad, como aplausos, voces o música.
Aparecerá un control de volumen junto al botón B y un indicador de que el micrófono está encendido. Pulsa y arrastra para cambiarlo.


Permite definir a partir de qué nivel de sonido la micro:bit debe considerar que es "alto" o "silencioso".
Se usa junto con el bloque "al detectar el sonido" para personalizar la sensibilidad del micrófono según el entorno. Los valores posibles van de 0 a 255.

Devuelve el ángulo en grados (de 0º a 360º) que indica la orientación de la micro:bit respecto al Norte magnético.
Requiere calibración previa (la micro:bit lo solicita automáticamente si es necesario). Gira e inclina la placa hasta encender todos los LEDs.
El logotipo de la micro:bit se convertirá en la flecha de una brújula, indicando el valor de giro desde la posición Norte. Arrástra con el ratón para modificarla.


Inicia el proceso de calibración del sensor de brújula (magnético) que consiste en mover la micro:bit para que detecte correctamente el norte magnético. Gira e inclina la placa hasta encender todos los LEDs.
Se usa cuando se necesita una medición precisa de dirección con el bloque "dirección de la brújula (º).

Devuelve el valor de la fuerza del campo magnético medido en microteslas (µT) detectada por la micro:bit en el eje seleccionado (x, y o z).
Sirve para analizar el entorno magnético, detectar imanes o variaciones de campo cercanas.

Devuelve el ángulo de inclinación en grados de la micro:bit en el eje seleccionado: timbre o girar.
Timbre se refiere al movimiento "pitch", es decir, la inclinación con respecto al eje Y.
Girar se refiere al movimiento "roll", es decir, la inclinación con respecto al eje X.

Se usa para detectar cómo está orientado el dispositivo y es útil en juegos, control de movimiento o simulaciones físicas.

Devuelve el tiempo, en milisegundos, transcurrido desde que la micro:bit comenzó a ejecutar el programa.
Se puede usar para medir duraciones, calcular intervalos o controlar eventos que dependen del tiempo.

Este bloque es muy similar al anterior, pero con mayor precisión.
Devuelve el tiempo transcurrido desde que comenzó el programa, en microsegundos (μs).
Se utiliza cuando necesitas medir con alta precisión eventos muy rápidos o calcular tiempos exactos entre acciones.

Reproduce la secuencia [melodía] en un [tempo] concreto medido en bpm, en un [modo] determinado.



Este bloque reproduce un único tono musical con parámetros personalizables.


Reproduce el tono seleccionada de forma continua hasta que se detenga manualmente con otro bloque.
Se usa para alarmas continuas o sonidos que deben mantenerse activos mientras ocurre otra acción.

Hace una pausa de silencio durante el número de pulsos indicado, según el tempo (bpm) actual.
Sirve para separar notas musicales o crear silencios rítmicos dentro de una secuencia.

Devuelve el valor en hercios (Hz) de la nota seleccionada. En este caso devuelve 262.
Puede ser utilizado para consultar la frecuencia de una nota, usarlo en condiciones o mostrarlo por pantalla.

Ajusta el volumen del sonido que produce la micro:bit, en una escala de 0 a 255, siendo 0 silencio total y 127 el volumen medio (valor por defecto).
Este cambio afectará a todos los sonidos siguientes.
Si estás usando un altavoz externo, también podrás ajustar el volumen con el potenciómetro físico, si cuenta con él.

Devuelve el valor actual del volumen configurado en la micro:bit, como un número entre 0 y 255.
Puede ser utilizado para consultar el volumen antes de modificarlo, para usarlo en condiciones o mostrarlo por pantalla o para guardar el volumen actual en una variable antes de hacer cambios temporales y luego restaurarlo.

Detiene inmediatamente cualquier tono o melodía que esté sonando en la micro:bit, sin importar cómo fue iniciado.
Útil cuando quieres silencio inmediato, por ejemplo, al apagar una alarma o detener una secuencia que se estaba reproduciendo en bucle o en segundo plano.

Modifica el tempo actual sumando la cantidad indicada de pulsos por minutos (bpm).
Escribe un valor negativo si quieres reducir el tempo.
Es útil para acelerar o desacelerar la música durante la ejecución. Se aplica a todos los bloques que dependan del tempo.
El límite práctico de tempo suele estar entre 40 y 240 bpm.

Establece el tempo global del programa en pulsos por minuto (bpm). Este tempo determina la duración de los pulsos de otros bloques que dependan del tempo.

Devuelve la unidad de tiempo musical en ms (milisegundos) basada en el tempo (bpm) configurado en el programa. Su duración real depende del tempo:

Devuelve el tempo actual del programa en pulsos por minuto (bpm).

Reproduce una de las melodías integradas en MakeCode de entre una lista desplegable.
No debemos confundir estas melodías con las que vimos en la galería del editor. En este caso se trata de melodías mucho más complejas y no son editables.

Detiene la reproducción de una o varias melodías que estén sonando, según la opción seleccionada: todos, en primer plano o "imagen de fondo" (en segundo plano).

No se pueden reproducir dos melodías a la vez, ni siquiera aunque una esté en primer plano y la otra esté en segundo plano: siempre se detendrá una de las dos para poder reproducir la otra.

Detecta eventos musicales mientras suena una melodía y, cuando se cumple dicho evento, ejecuta la acción que contiene, sincronizada con la música.
Los eventos están divididos en dos: música en primer plano o música de fondo.

Reproduce un efecto de sonido predefinido, diferente de las melodías musicales. Está diseñado para dar respuesta sonora rápida y expresiva (como una risa, un zumbido, una explosión, etc.).

Permite crear y personalizar un efecto sonoro usando una interfaz visual tipo "editor de ondas". Es una herramienta para diseñar sonidos propios, en lugar de elegir solo los predefinidos.
Al pulsar sobre el área gris tenemos acceso a:

Seno: sonido suave.
Cuadrado: sonido más robótico, agudo.
Triángulo: intermedio.
Dientes de sierra: sonido áspero, tipo zumbido.
Ruido: ruido aleatorio, útil para explosiones, viento, etc.



Valor de tipo de sonido que se puede usar dentro de otro bloque.

Permite consultar el estado del sistema de audio de la micro:bit, es decir, saber si algún sonido está activo en ese momento.
Se usa dentro de estructuras condicionales.

Se utiliza para habilitar o deshabilitar el altavoz incorporado en la placa micro:bit.

Si no utilizas este bloque de programación y conectas un altavoz externo a la micro:bit a través del pin P0, los sonidos se reproducirán simultáneamente por el altavoz interno de la placa y por el altavoz externo.
Aparecerá la placa conectada a un conector jack macho.



Sirve para encender un LED en la matriz 5x5 de la micro:bit, en la posición (x,y). Puedes escribir el valor directamente o utilizar la barra de desplazamiento.

Los valores posibles, tanto para x como para y son del 0 al 4. Cada par de valores (x,y) corresponde a un LED de la matriz:


Invierte el estado del LED en la coordenada indicada de la matriz 5x5 de la micro:bit.
Es muy útil para crear parpadeos o efectos de animación y ahorrar código en lugar de comprobar si un LED está encendido o apagado.

Apaga el LED situado en la posición (x,y) de la matriz 5x5 de la micro:bit, sin afectar a los demás LEDs.

Devuelve el valor lógico (verdadero o falso) que indica si el LED en la posición (x,y) está encendido (verdadero) o apagado (falso).
Sirve para comprobar el estado de un LED antes de actuar sobre él.

Dibuja un gráfico de barras vertical en la matriz LED de la micro:bit, en función del valor que le des.
El valor trazar gráfico de barras es el dato que quieres representar (por ejemplo, temperatura, luz, etc.)
El valor hasta es el valor máximo que puede alcanzar, que encenderá todos los LEDs, y que depende del gráfico que deseamos representar:
El botón ➕ da acceso a la opción Escritura Serie, que permite que los datos también se envíen (a través de USB o Bluetooth).
Puedes ver esos datos en la consola de MakeCode como un gráfico en tiempo real o una tabla de datos.
Para ello pulsa, en el simulador, en el botón "Mostrar datos Simulador:

Esto te permite hacer análisis más precisos de los datos, registrarlos a lo largo del tiempo, calcular valores medios, ver el gráfico más detallado que el que permite la pantalla LED (que solo tiene 5 niveles) y exportar o copiar los datos desde el entorno web (en CSV o en TXT).


Sirve para encender un punto específico en la pantalla LED, controlando la posición y el nivel de brillo del LED (donde 0 es apagado y 255 es el máximo brillo).

Devuelve el valor del brillo de un LED específico en la matriz 5x5 situado en la coordenada (x,y).

Devuelve el valor del brillo de todos los LED de la pantalla cuando están encendidos.

Permite modificar el nivel general de intensidad con el que se encienden todos los LED de la pantalla de la micro:bit.

Permite habilitar o deshabilitar por completo la pantalla LED de la micro:bit, sin afectar al estadointerno de los LEDs.

Este bloque no borra ni modifica el estado de los LEDs. Si se activa "falso" y luego se cambia a "verdadero", los LEDs que estaban encendidos volverán a mostrarse con su brillo anterior.

Se utiliza para detener inmediatamente (pero no apagar los LEDs) cualquier animación LED que esté ocurriendo en la pantalla de la micro:bit, excepto que dichas animaciones estén colocadas dentro de bucles "para siempre" u otras estructuras que vuelvan a lanzar la animación constantemente.

Permite cambiar la forma en la que se representan los LEDs encendidos en la micro:bit:

Este bloque no afecta al comportamiento físico de los LEDs en la placa; solo afecta al simulador o a pantallas gráficas compatibles.
En la micro:bit física, la matriz LED siempre es monocroma (solo muestra brillo variable, sin color). Esta opción es útil sobre todo en el simulador de MakeCode, para entender mejor el efecto de trabajar con niveles de brillo.

La placa micro:bit tiene incorporado un módulo de radiofrecuencia que le permite transmitir y recibir datos por ondas de radio, sin necesidad de componentes adicionales.
La micro:bit V2 usa el chip nRF52833, que incluye Bluetooth y radio de 2,4 GHz, para enviar mensajes a otras microbit cercanas.
En condiciones ideales puede alcanzar hasta los 70-100 metros en exteriores y entre 10 y 30 metros en interiores, dependiendo de los obstáculos.

Se utiliza para configurar el grupo de comunicación entre micro:bits que utilizan la funcionalidad de radio.

Debes utilizar este bloque, obligatoriamente, antes de enviar o recibir mensajes por radio.
Asigna un canal de comunicación para que las micro:bit puedan enviarse y recibir mensajes solo entre los dispositivos que pertenencen al mismo grupo.

Estos grupos pueden numerarse desde el 0 al 255. Es como sintonizar una frecuencia de radio: solo los dispositivos en el mismo grupo pueden escucharse entre sí.

Transmite un número a otras placas micro:bit que estén en el mismo grupo de radio.
Aparecerán dos placas: la que emite la señal de radio y la que la recibe.
Cuando se envía un mensaje de radio se ilumina el módulo de radiofrecuencia.


Envia un texto y un número juntos por radio a otras micro:bit que estén en el mismo grupo de radio.

La extensión máxima del texto es de 8 caracteres.

Envía un mensaje de texto a otras micro:bit que estén en el mismo grupo de radio.

En este caso, la longitud máxima del texto es de 19 caracteres.

Se usa para recibir números enviados por radio desde otra micro:bit. Es parte del sistema de comunicación inalámbrica entre micro:bits.
La variable "receivedNumber" es automática: no necesitas definirla. Se activa solo si se recibe un número y ejecuta el programa que contenga este bloque en su interior.

Se activa cuando otra micro:bit envia un par texto-número.
Este bloque permite diferenciar entre distintos tipos de datos que llegan, lo cual es muy útil en sistemas donde una misma micro:bit receptora escucha múltiples tipos de mensajes (temperatura, luz, botón, etc.).

Se activa cuando otra micro:bit envía una cadena de texto.
"receivedString" es una variable que contiene el texto recibido (hasta 19 caracteres).
Este bloque es ideal para enviar mensajes breves como órdenes, alertas o respuestas cortas entre micro:bits.

Devuelve la intensidad de la señal de radio del último mensaje recibido, medida en dBm (decibelios-milivatio).
Este valor es un número negativo que varía entre -128 y -28. Cuanto más cercano es a 0, mejor es la señal.
Sirve para estimar la distancia entre micro:bits, crear un sistema de detección por proximidad, mostrar barras de intensidad de señal, etc.

Permite ajustar la intensidad con la que la micro:bit envía señales de radio. El número controla el alcance y la fuerza de la señal emitida.
El rago de valores que puede aceptar va desde del 0 (mínimo) hasta el 7 (máximo):
El alcance real depende del entorno: paredes, interferencias, dispositivos cercanos...
Sirve para ahorrar energía si los dispositivos están cerca, para limitar el alcance de la comunicación, para evitar interferencias con otros grupos de micro:bits o para diseñar proyectos donde el alcance tenga un significado (por ejemplo en juegos de proximidad, zonas seguras, etc.).

Permite decidir si el número de serie de la placa micro:bit se incluye automáticamente en los paquetes de radio enviados.
Incluir el número de serie permite:
- Identificar quién envió el mensaje (útiles en redes con múltiples dispositivos).
- Filtrar mensajes por micro:bit específica (por ejemplo, solo responder a mensajes de una placa concreta).
- Hacer sistemas con autenticación básica.

Permite modificar el canal de comunicación dentro del rango de frecuencias que utiliza la micro:bit para enviar y recibir mensajes por radio.
Este bloque cambia el canal de frecuencia usado por el protocolo de radio de la micro:bit. Aunque todos los dispositivos estén en el mismo grupo de radio, si están en diferentes bandas, no se podrán comunicar entre ellos.
El número de banda puede variar de 0 a 83. Cada número representa un canal dentro del espectro de 2,4 GHz. La banda por defecto es 7.
Conviene usar este bloque:
- cuando hay muchas micro:bits comunicándose al mismo tiempo y necesitas evitar interferencias.
- si necesitas dividir grupos en diferentes canales sin cambiar el número de grupo.
- para evitar conflictos en entornos densos (como aulas o cursos de formación).

Sirve para compartir eventos del sistema a través de radio, como si varias placas micro:bit estuvieran sincronizadas.
Cuando una acción local ocurre (por ejemplo, al pulsar al botón A), la micro:bit:

Las placas que reciben el evento local de la primera placa deben tener configurado el bloque de control con esa misma configuración:

Dentro se incluirá el programa que se ejecutará cuando la primera placa envíe el evento por radio.

Es una estructura de bucle que se utiliza para ejecutar una acción varias veces. El número indica cuántas veces se repetirá el código que coloques dentro.

Es una estructura de bucle condicional, también llamada bucle WHILE en otros lenguajes de programación.
Ejecuta de forma repetida el programa que contiene mientras la condición sea verdadera. Cuando la condición se vuelva falsa, el bucle se detiene.

Este bloque representa un bucle FOR (para) en programación.
Repite el código que contiene el número de veces indicado (siendo 0 la primer repetición) usando una variable como índice:

Es un bucle para recorrer listas, también conocido como FOR-EACH o "para cada elemento".
Va recorriendo uno a uno todos los elementos de la lista llamda "list". En cada repetición:
Es útil para:
- mostrar datos almacenados
- sumar, contar o procesar elementos
- buscar un valor específico
- hacer animaciones

Sirve para ejecutar una acción repetidamente cada cierto intervalo de tiempo, sin bloquear el resto del programa. Ejecuta el código que pongas dentro cada cierta cantidad de milisegundos.

La diferencia entre este bloque y el bloque "para siempre"

es que "para siempre" bloquea el resto de la programación y este bloque no. Además, El bloque "para siempre" no permite controlar la frecuencia (se repite lo más rápido posible), mientras que este bloque se repite en un intervalo de tiempo definido.
Este bloque es ideal para:
- efectos visuales periódicos
- revisión de sensores e intervalos
- animaciones suaves sin bloquear el sistema
- sincronización con tareas externas

Se utiliza para interrumpir la ejecución de un bucle desde dentro del mismo. Cuando el programa ejecuta este bloque:

Cuando se ejecuta este bloque dentro de un bucle, salta al siguiente paso del bucle y no hace lo que está debajo de él en ese momento.
Es decir, cuando estás dentro de un bucle puedes tener varias instrucciones seguidas. Si pones este bloque, lo que esté debajo no se ejecuta en esa repetición y el bucle salta al siguiente ciclo.
Veamos un ejemplo para entenderlo mejor:


Es un bloque condicional que sirve para que el programa tome decisiones:
Si pulsas sobre el botón ➕ se convierte en el bloque siguiente (si...si no).

Este bloque equivale al bloque anterior si pulsamos sobre el botón ➕ . Sirve para que la micro:bit ejecute un programa si se cumple la condición (si) y otro programa distinto si no se cumple (si no).
Si pulsas el botón ➕ puedes definir nuevas condiciones consecutivas:

Es un bloque de comparación que sirve para establecer una condición.
Tiene dos entradas numéricas y, entre ellas podemos establecer diferentes operadores:
= → igual a
≠ → distinto de
< → menor que
> → mayor que
≤ → menor o igual que
≥ → mayor o igual que

Este bloque es igual que el anterior, pero en lugar de comparar números compara textos.

Esta comparación distingue entre mayúsculas y minúsculas.
También tiene en cuenta los espacios.

Este bloque es un conector lógico que se usa para combinar dos condiciones. En el centro del bloque puedes elegir entre tres operadores lógicos:

Este bloque se utiliza cuando quieres que algo ocurra solo si una condición no se cumple, es decir, usa este bloque cuando quieras detectar lo contrario de una condición.

Este bloque devuelve un valor fijo (verdadero o falso) de tipo lógico.

Sirve para definir una nueva variable personalizada dentro de tu programa.
Una variable es como una caja con un nombre, que puede gardar información que cambia durante la ejecución del programa (números, texto, valores lógicos...).
Al pulsar este botón se abre una ventana emergente donde puedes escribir el nombre que quieras para la variable. Por ejemplo, "contador".

Una vez creada, aparecen nuevos bloques de programación:

Sirve para asignar un valor inicial o nuevo a la variable que acabas de crear (contador). En este caso le estás dando el valor 0.
Este valor también puede ser un texto (cadena de caracteres o string), pero para eso necesitas un bloque Avanzado de tipo Texto.

Este bloque sirve para modificar el valor actual de una variable (en este caso, la variable contador) sumándole un valor determinado (en este caso le suma 1).
Si el valor es negativo (-1, por ejemplo), el bloque restará en vez de sumar.
Este comportamiento te permite usar el mismo bloque tanto para aumentar como para disminuir valores, dependiendo de si el número es positivo o negativo.
Si estás trabajando con texto, se sustituirá el valor inicial de la variabla por el texto que definas aquí.

Se utiliza para realizar operaciones matemáticas:
+ suma
- resta
× multiplica
÷ divide
** exponente

Se utiliza para introducir valores numéricos directamente, tando positivos como negativos.

Calcula el resto que queda de dividir un número entre otro. Es muy útil, por ejemplo, para saber si un número es par o impar (si el resto es 0 es par).

Compara dos valores y permite elegir entre:

Sirve para obtener el valor absoluto de un número, es decir su distancia al cero, sin importar si es positivo o negativo.
Es útil cuando quieres asegurarte de que un número sea positivo.

Permite aplicar distintas funciones sobre un número:

Sirve redondear un número decimal a un número entero.

Sirve para generar un número aleatorio dentro de un rango determinado. Se usa para crear situaciones impredecibles o juegos.

Sirve para asegurar que el valor de un número no sea ni mayor ni menor que otros dos números dados.
Si el valor probado está dentro de estos dos números, devuelve el mismo valor. Si es mayor o menor devuelve el valor máximo o mínimo del intervalo.
Se usa para evitar que ciertos valores se salgan de un rango lógico; para controlar sensores que a veces dan datos fuera de lo esperado y para mantener viables dentro de un margen seguro.

Sirve para convertir un número de un rango original a otro rango nuevo manteniendo la proporción. Es lo que se llama una "regla de tres" automática o "mapear un valor".
Se usa para convertir valores de sensores (como, por ejemplo el del potenciómetro, que da valores de 0 a 1023) a escalas más pequeñas.

Sive para generar un valor aleatorio entre verdadero y falso.
Si utiliza cuando quieres que algo suceda con una probabilidad del 50%.
Este bloque te permite definir tu propia función personalizada, que luego puedes reutilizar varias veces dentro de tu programa.
Una función es un conjunto de instrucciones que se agrupan bajo un nombre. Puedes ejecutar esa secuencia de instrucciones simplemente llamando al nombre de la función, en lugar de escribir todo el código repetidamente.

Al hacer clic en este bloque se abre el editor de funciones. También aparece el editor si clicas con el botón derecho del ratón sobre un bloque de función y eliges "Editar función".

Aquí puedes:


Una función y un parámetro no pueden tener el mismo nombre.
Tampoco pueden tener el mismo nombre dos funciones distintas.

Cuando pulses el botón A, la micro:bit mostrará "Hola" en su pantalla LED.
Al pulsar la flecha hacia abajo que aparece en el bloque de función se activa el modo "compacto", es decir, se ocultan los bloques que componen la función.

Dentro de la categoría Funciones verás que aparece otro bloque:

Este bloque sirve para que una función pueda dar un resultado: la función realiza cálculos o acciones internas y entrega un resultado que puedes usar en otra parte del programa.



Veamos ahora otro ejemplo con dos parámetros.



Sirve para crear una lista (o matriz) de valores y guardarla en una variable. En la imagen aparecen solo dos valores (0 y 1) pero puedes añadir más valores pulsando el botón ➕ o eliminarlos con el botón ➖.

Sirve para crear una matriz (lista) de texto y guardarla en una variable. En la imagen aparecen los valores "a", "b" y "c", pero puedes escribir palabras completas e incluso frases (cadenas de texto).
Como en el caso anterior, puedes usar los botones ➕ y ➖ para crear o eliminar elementos de la lista.
Este tipo de listas son útiles si quieres:

Sirve para crear una lista (matriz) que comienza sin elementos. Es decir, se crea vacía para que luego tú puedas añadirle elementos uno a uno con otros bloques.
En el siguiente ejemplo, al iniciar, partimos de una lista vacía (lista de texto). Al pulsar el botón A, añadimos "Hola" a la lista. Al pulsar el botón B, añadimos "mundo" a la lista. Al agitar la micro:bit se muestran en pantalla todos los elementos de la lista.


Sirve para obtener cuántos elementos hay en una lista. Devuelve un número.

Sirve para acceder a un elemento concreto de una lista. El bloque devuelve el valor que está en una posición específica de la lista que elijas.

Recuerda que:

Se utiliza para eliminar un elemento de una lista. Elimina el valor que se encuentra en la posición indicada.

Sirve para sacar el último elemento de una lista. Al mismo tiempo puedes usar ese valor, por ejemplo, para mostrarlo en pantalla, guardarlo en una variables, etc.

Funciona exactamente igual que el bloque anterior pero, en vez del último valor, obtiene y elimina el primero de la lista.

Selecciona un elemento al azar de la lista, sin eliminarlo, para que puedas mostrarlo en pantalla, almacenarlo en una variable, etc.
Es útil para hacer sorteos, juegos o generar comportamientos impredecibles y creativos en tus programas.

Su función es modificar un elemento de la lista existente, reemplazándolo por un nuevo valor.
Cambia el valor situado en la posición marcada por el valor que definas a continuación (hueco), que puede ser un número, texto, imagen, sprite...).

Se utiliza para agregar un nuevo elemento al final de una lista existente. Lo hemos visto en un ejemplo anterior.
Añade el valor que indiques (número, texto, imagen, sprite, etc.) al final de una lista previamente creada. No reemplaza ningún valor, simplemente extiende la longitud de la lista en un valor.

Se usa para quitar el último elemento que contiene una lista.
Elimina el último valor añadido a una lista, modificando directamente su contenido y reduciendo su longitud en uno. En este caso, dicho valor no se obtiene, por lo que no puede ser utilizado en otra parte del programa.
Si la lista está vacía, usar este bloque no genera error, pero no realiza ninguna acción.

Funciona igual que el bloque anterior pero, en este caso, elimina el primer elemento que contiene una lista.
El resto de los elementos se desplazarán una posición hacia delante.

Sirve para agregar un nuevo elemento al inicio de una lista. Agrega el valor que le indiques, desplazando todos los elementos existentes una posición hacia atrás.

Funciona exactamente igual que el anterior, pero con la diferencia de que ese bloque es del tipo valor (para ser usado dentro de otro bloque) y este es un bloque del tipo instrucción que puedes colocar directamente dentro del flujo de tu programa.

Inserta un valor en una posición específica de una lista. Si la posición indicada es mayor que la longitud actual, lo agrega al final.

Este bloque sirve para eliminar un elemento de una lista en una posición específica.

Busca un valor en una lista y devuelve el número de índice (la posición) de la primera coincidencia que encuentre.
Si el valor no está en la lista, el bloque devuelve -1. Solo encuentra la primera aparición del valor. Si hay valores repetidos, los siguientes no aparecen.

Invierte el orden de los elementos en una lista. Es decir, el primer elemento pasa a ser el último, el segundo pasa al penúltimo, etc. y el último pasa a ser el primero.
No devuelve los valores de una nueva lista; cambia la que ya existe.
Sirve para trabajar con datos en orden inverso, por ejemplo, si quieres recorrer una lista desde el final hacia el principio.

Este bloque representa una cadena de texto vacía, es decir, un texto que no contiene ningún caracter.

Sirve para calcular la longitud de una cadena de texto. Devuelve un número que representa la cantidad de caracteres en una cadena de texto.

Su función es unir (concatenar) cadenas de texto. Toma dos o más fragmentos de texto y los combina en uno solo, siguiendo el orden en que están colocados.
Puedes usar el botón ➕ para añadir más textos a unir.

No incluye automáticamente espacios. Si los quieres, debes escribirlos tú.

Sirve para convertir un texto numérico en un número real que puedes usar para hacer cálculos.
Cuando un número aparece escrito dentro de una cadena de texto, la micro:bit lo trata como texto y no puede operar matemáticamente con él.
Este bloque lo convierte en un número real para que puedas hacer operaciones matemáticas.
Si la cadena de texto no contiene ningún número, devuelve "?".
Es úti para convertir potencias de base 10 donde los caracteres numéricos después de la "e" son un exponente de 10 (2e4, por ejemplo que equivale a 20000).

Divide un texto en partes más pequeñas, usando el separador que tú elijas. En programación, a esta acción se le llama "split", y el resultado es una lista (matriz) de textos.
Si el separador que indicamos no aparece en el texto, no se divide nada. El resultado siempre es una lista.


Verifica si una parte de texto (llamada subcadena) está contenida dentro de otra. Devuelve "verdadero" o "falso".
Sirve para buscar palabras clave en mensajes; para comprobar si un texto tiene cierta letra o número o para establecer condiciones (por ejemplo, si un texto incluye "error", mostrar una alerta).
En este ejemplo:

devolverá "falso", porque "Hola mundo" no contiene "lo".

Devuelve la posición (índice) del primer carácter donde aparece una subcadena dentro de un texto.
Los índices, comienzan por 0, es decir, el primer carácter del texto está en la posición 0.
Si la cadena no existe en el texto, el bloque devuelve -1.
En este ejemplo:

devolverá el valor 5, que es donde empieza la subcadena "mu"
H o l a m u n d o
0 1 2 3 4 5 6 7 8 9

Este bloque devuelve "verdadero" si el texto está vacío (es decir, no contiene ningún carácter, ni siquiera un espacio).
Devuelve "falso" si contiene cualquier cosa.

Extrae una subcadena (una parte del texto original) desde una posición inicial (from) y con una longitud de caracteres determinada (length).
Recuerda que la posición empieza a contar desde 0.
Si pides más caracteres de los que hay, el bloque no falla ni da error; simplemente devuelve los que existan.
Si comienzas en una posición mayor que la longitud del texto, el resultado será una cadena vacía.

Este bloque compara dos textos y devuelve un número que indica su relación lexicográfica, es decir, basada en el orden alfabético del código Unicode de los caracteres.
En programación, el orden alfabético se hace usando los códigos numéricos que tiene cada letra en el sistema llamado Unicode.
Por ejemplo:
Si los dos textos que compara son iguales, devuelve 0; si el primer texto va antes que el segundo, devuelve un número negativo y si es el segundo texto el que va antes, devuelve un número positivo.

Al ordenarse mediante su código Unicode, las mayúsculas aparecen antes que las minúsculas, por lo que la "A" aparece antes que la "a".
Al mismo tiempo, los caracteres con tilde aparecen al final, así como la letra ñ, por lo que NO ordenará adecuadamente algunas palabras en castellano, como por ejemplo "caña" y "cara", indicando que "cara" va antes, lo que es incorrecto.
Consulta aquí el alfabeto Unicode completo:

Sirve para obtener un carácter individual de una cadena de texto a partir de su posición. ¡Recuerda que la numeración de las posiciones comienza por 0!

Sirve para obtener el valor numérico Unicode (código de carácter) del símbolo que está en una posición específica dentro de un texto.

Sirve para transformar un número en una cadena de texto.
En programación, un número y un texto que representa un número no son lo mismo:
Este bolque convierte el número 123 en el texto "123".

Sirve para obtener el carácter correspondiente a un código Unicode.
La categoría Juego permite crear pequeños videojuegos usando la pantalla LED de 5x5 de la micro:bit.
Incluye bloques para:
Todo está pensado para que puedas programar videojuegos simples directamente en la micro:bit.
Un Sprite es un objeto o personaje que aparece en la pantalla de la micro:bit. Puedes pensar en un sprite como:
Tecnicamente, un sprite es un punto luminoso que puede tener:

![]()
Este bloque crea un sprite y lo coloca en la pantalla LED de la micro:bit en la posición x = 2, y = 2.


Elimina completamente un sprite que hayas creado.

Es una pregunta lógica: verifica si un sprite ya ha sido eliminado. Devuelve "verdadero" si el sprite fue eliminado y "falso" si el sprite todavía existe en el juego.

Mueve el sprite hacia adelante en la dirección en la que esté orientado, avanzando la cantidad de pasos indicada.
En este caso no está definida ninguna dirección por lo que toma la orientación 0º y avanzará hacia la derecha en el eje x.
Si el valor es negativo (-1) el sprite se moverá en dirección opuesta: en este caso se moverá un paso hacia la iquierda en el eje x.

Permite girar un sprite una cierta cantidad de grados en una dirección determinada (derecha o izquierda).
La orientación por defecto de la micro:bit es de 90º, es decir, mirando hacia la derecha, por lo que un giro de 180º (ya sea a la derecha o a la izquierda) lo orientará hacia la izquierda.
Dependiendo de si giramos a la derecha o a la izquierda, el giro de 90º puede colocarlo hacia abajo o hacia arriba, respectivamente.


La orientación por defecto de un sprite es apuntando hacia la derecha, pero esta dirección es interpretada por la micro:bit como 90º y no como 0º.
Esto es así porque micro:bit usa un sistema de referencia circular de programación y no un eje cartesiano tradicional. Este sistema define:
Además el ángulo crece en sentido horario (como las agujas del reloj) y no como en trigonometría estándar.

Este bloque sirve para establecer directamente la posición de un sprite en el eje X o Y de la cuadrícula de LEDs.
Como ves en el desplegable, también puedes:

Este bloque se usa para mover manualmente un sprite modificando su posición en el eje X (horizontal, izquierda-derecha) o Y (vertical, arriba-abajo).
El número indica cuántas posiciones quieres mover el sprite. Recuerda que los números positivos indican derecha/abajo y que los números negativos indican izquierda/arriba
Como ves en el desplegable, también puedes:

Este bloque sirve para obtener la posición actual de un sprite, ya sea en el eje X o en el eje Y, así como obtener su ángulo de movimiento, su brillo y la velocidad de su parpadeo.
Este bloque es especialmente útil, por ejemplo, si quires:

En este bloque debes especificar el nombre de dos sprites. Devuelve true (verdadero) si el sprite de la izquierda está tocando el sprite de la derecha. Si no lo está devuelve false (falso).
Este bloque es útil para detectar colisiones entre sprites, como cuando un jugador toca un enemigo o recoge un objeto.
En el contexto de la matriz de LEDs de la micro:bit, un sprite "toca" a otro si ocupan la misma coordenada en la pantalla (es decir, están en la misma posición X,Y).

Devuelve true (verdadero) si el sprite está en una de las casillas del borde de la pantalla LED. Devuelve false (falso) si está en una casilla inerna.
Este bloque es útil para detectar si un sprite ha llegado al borde de la pantalla, lo que puede ser importante para implementar rebotes o límites en el movimiento.
En la micro:bit, las casillas del borde son las que tienen coordenadas X o Y igual a 0 o 4.


Detecta si el sprite está tocando cualquiera de los bordes de la pantalla LED de la micro:bit. Si es así, invierte la dirección del sprite automáticamente, simulando un rebote. No necesitas hacer ningún cálculo de giro o posición: este bloque lo hace por ti.
Este bloque es útil para crear juegos donde los sprites rebotan en los bordes de la pantalla, como pelotas o proyectiles.

Se utiliza para gestionar un contador de vidas en los juegos. Al usar este bloque puedes definir cuántas vidas tiene el jugador al comenzar (u otro momento del juego).
El valor de vidas por defecto es 3, pero puedes cambiarlo a cualquier número entero positivo.
Si se pierde una vida se muestra una X que parpadea dos veces en la pantalla LED.

Si las vidas llegan a cero:


Este bloque sirve para restar una cantidad determinada de vidas al jugador en un juego. El valor introducido se resta del total de vidas actuales.
Si el valor es mayor que las vidas actuales, se restan todas las vidas y se muestra el mensaje de "Game Over".
Si el valor es negativo, se suman vidas al jugador.

Sirve para añadir vidas al jugador durante el juego, que se sumarán a las vidas que ya tenga.
Si el valor es negativo, se restan vidas al jugador.

Este bloque sirve para definir manualmente el valor de la putuación del juego. Es decir, reemplaza la puntuación actual con el número que tú decidas.
Por defecto, la puntuación comienza en 0, pero puedes utilizar este bloque al comenzar un juego (para dar una puntuación que va disminuyendo) o cuando quieres reiniciar la puntuación a 0.

Sirve para sumar un número específico a la puntuación del jugador mientras se ejecuta el juego.
Si el número es negativo, se resta de la puntuación actual.

La puntuación puede llegar a números negativos. A diferencia de las vidas, que detienen el juego al llegar a 0, la puntuación no detiene nada y puede seguir disminuyendo indefinidamente.

Sirve para iniciar un temporizador en cuenta regresiva, donde el tiempo se indica en milisegundos (ms).
Aparecerá una breve animación en la pantalla LED que avisa del inicio de la cuenta atrás. Al finalizar esta animación comenzará a contar el tiempo internamente, en segundo plano, y podrás iniciar o continuar el juego o programa que estabas ejecutando.
Pasado el tiempo marcado, el juego se dará por finalizado y se mostrará el mensaje "Game Over" y los puntos conseguidos "Score".

Devuelve el valor actual de la puntuación del juego. Se usa dentro de otros bloques para consultar cuantos puntos lleva acumulados el jugador.

Este bloque termina el juego inmediatamente cuando se ejecuta y ocurre lo mismo que hemos visto cuando las vidas llegan a cero, por ejemplo.

Te permite saber si el juego ha finalizado, sea por la causa que sea.
Este bloque es útil porque te permite: controlar eventos posteriores al fin del juego; evitar que ciertas acciones se repitan si el juego ya terminó o crear comportamientos condicionales, como reiniciar, mostrar mensajes, o guardar puntuaciones.

Se utiliza para comprobar si el juego está actualmente en pausa.
Cuando el juego está pausado, se detiene momentáneamente su ejecución:
Este bloque es útil para saber si el juego está en pausa antes de ejecutar ciertas acciones; evitar que los jugadores muevan sprites mientras el juego no está activo o usarlo como condición para controlar el flujo del juego.

De forma similar al bloque anterior, comprueba si el juego sigue activo.
Este bloque se puede usar, por ejemplo, para evitar mover un sprite si el juego ya ha terminado; detener acciones en bucle o mostrar un mensaje solo si el juego sigue en marcha.

Sirve para reanudar la ejecución del juego después de haber sido pausado.

Este bloque suspende temporalmente la ejecución del juego
No debes confundir este bloque con el bloque "pausa (ms)" de la categoría Básico, que detiene solo un hilo concreto de ejecución, pero no el resto del programa.


Pausar y reanudar no detiene el tiempo del cronómetro ni reinicia variables.
Esta categoría sirve para crear, manipular y mostrar imágenes personalizadas en la matriz de 5x5 LEDs de la micro:bit.
Una imagen es un conjunto de LEDs encendidos o apagados que forman un dibujo simple en la matriz. Puedes mostrar imágenes o mostrar animaciones (secuencias animadas), estableciendo la duración entre imágenes en milisegundos.
![]()
Este bloque sirve para insertar una imagen predefinida en tu programa para la micro:bit. Proporciona una forma fácil y rápida de usar símbolos ya creados sin tener que dibujarlos tú manualmente.

Sirve para dibujar una imágen personalizada de 5x5 LEDs, que luego puedes mostrar o usar en animaciones.

Permite crear imágenes de tamaño 5x10, es decir, más anchas que el área de visualización de la micro:bit.
Este tipo de imagen se usa principalmente para efectos de desplazamiento o scroll.

Este bloque se utiliza para mostrar imágenes personalizadas o predefinidas en la pantalla de LEDs de la micro:bit.
Al arrastrar este bloque a tu programa, puedes elegir entre:



Para crear una animación será necesario crear varias imágenes.

Intervalo de: sirve para indicar el LED en el que se empieza a mostrar la imagen en la matriz (contado de izquierda a derecha y comenzando por 0). Es especialmente útil cuando trabajamos con imágenes grandes, para crear animaciones.
Ten en cuenta que una imagen, por lo general, es un cuadro de 5x5 LEDs. Una imagen grande (de 5x10) puede contener dos imágenes (frames).
E intervalo de (ms): (al pulsar el botón ➕) sirve para indicar el tiempo en milisegundos en que el programa tarda en pasar de un frame o otro.

Con el valor del intervalo también puedes hacer que una imagen cruce la matriz de izquierda a derecha o de derecha a izquierda.










El bloque también te permite establecer la duración de la imagen en milisegundos, lo que determina cuánto tiempo se mostrará antes de pasar a la siguiente imagen o acción.
Si no se especifica una duración, la imagen se mostrará indefinidamente hasta que se ejecute otra acción que cambie la pantalla.
Este bloque es útil para mostrar mensajes, animaciones o cualquier imagen que quieras que aparezca en la pantalla de la micro:bit.

Sirve para desplazar una imagen grande en la pantalla de la micro:bit, lo cual es muy útil para mostrar contenido que no cabe completamente en los 5x5 LEDs de la pantalla.
El valor de desplazamiento es el número de columnas que se desplazan en cada paso y el intervalo es el tiempo (en milisegundos) entre cada paso.
Podemos utilizar el mismo ejemplo de la flecha que vimos antes desplazarse, pero utilizando este bloque:


Devuelve el número que representa internamente la imagen de la flecha.
Este número corresponde a la representación binaria de la imagen en el sistema de la micro:bit. Es un valor técnico usado internamente por MakeCode para referirse a la imagen de esa flecha.
Este bloque es útil si quieres usar la flecha en un programa sin tener que crearla manualmente o si necesitas referenciarla en cálculos o comparaciones.
Ten en cuenta que este bloque no muestra la flecha en la pantalla, sino que devuelve su valor numérico.


Sirve para mostrar una flecha (apuntando en una de las 8 direcciones posibles) en la pantalla LED de la micro:bit.
Esta categoría contiene bloques para interactuar con los pines de la micro:bit, que son puntos de conexión física que permiten enviar o recibir señales eléctricas.
Los pines se utilizan para conectar la micro:bit a otros dispositivos, como sensores, motores, luces o cualquier otro componente electrónico.
Los pines de la micro:bit se dividen en dos tipos:
En la micro:bit, los pines digitales se numeran del 0 al 16, y los pines analógicos son los pines 0, 1 y 2. Además, la micro:bit tiene un pin de alimentación (3V) y un pin de tierra (GND).
Los pines analógicos también son, a la vez, digitales. Visualmente, en la micro:bit, podemos distinguirlos de la siguiente manera:



Los bloques de esta categoría te permiten:
Los bloques de pines son muy útiles para proyectos de electrónica y robótica, ya que te permiten interactuar con el mundo físico y crear dispositivos que respondan a eventos del entorno.

Lee la tensión eléctrica en el pin digital seleccionado y devuelve 1 o 0. El desplegable muestra los pines P0 a P16.
Puedes hacer la prueba en el simulador o físicamente con la micro:bit utilizando las pilas como fuente de energía (ya que la corriente suministrada por USB no es ni estable ni suficiente). Toma especial cuidado a la hora de hacer buen contacto con los cocodrilos:



NUNCA conectes el pin 3V con el pin GND, porque esto haría cortocircuito y puedes dañar la placa.

Sirve para leer un valor analógico del pin seleccionado.
El valor devuelto es un número entre 0 y 1023, que representa la tensión eléctrica en el pin analógico seleccionado.
Si utilizamos el ejemplo anterior con este bloque obtendremos diferentes resultados:

Se usa para establecer un nivel (valor) lógico digital de un pin.
Permite enviar uno de estos dos valores a un pin:
Este bloque te permite activar o desactivar dispositivos electrónicos conectados al pin seleccionado, por ejemplo: encender o apagar un LED; activar un zumbador o controlar un motor.
Consulta el Apéndice 1 antes de conectar un dispositivo a un pin digital.


Sirve para realizar una salida PWM (modulación por ancho de pulso) en el pin indicado. Aunque se llama "escritura analógica", en realidad lo que hace la micro:bit es simular un voltaje variable.
El valor que se puede escribir es un número entre 0 y 1023, que representa el voltaje aplicado al pin (P0, P1, P3, P4 o P10). Este valor se traduce en un voltaje real entre 0V y 3,3V.
Este bloque es útil para controlar dispositivos que requieren una señal variable, como:
Por ejemplo, si escribes un valor de 512, el pin recibirá un voltaje de aproximadamente 1,65V (la mitad de 3,3V). Si escribes 0, el pin estará a 0V, y si escribes 1023, estará a 3,3V.
Ten en cuenta que este bloque no se puede usar con pines digitales, ya que estos solo aceptan valores 0 o 1.
Si quieres controlar un LED con brillo variable, puedes usar este bloque para enviar un valor entre 0 y 1023 al pin conectado al LED. Por ejemplo, si envías un valor de 512, el LED se encenderá a la mitad de su brillo máximo.

Este bloque sirve para convertir un valor de un rango numérico a otro rango diferente de forma proporcional
Por ejemplo, si tienes un valor entre 0 y 1023 (como el que devuelve el bloque "lectura analógica") y quieres convertirlo a un rango entre 0 y 255 (como el que se usa para controlar el brillo de un LED), puedes usar este bloque.
El bloque te permite especificar el rango de entrada (en este caso, 0 a 1023) y el rango de salida (en este caso, 0 a 255). Luego, toma un valor de entrada y lo convierte al rango de salida.
Por ejemplo, si le pasas un valor de 512, el bloque calculará el valor proporcional en el rango de salida. En este caso, 512 en el rango de 0 a 1023 se convierte a aproximadamente 127 en el rango de 0 a 255.

Este bloque es útil cuando necesitas ajustar valores de un rango a otro, como al controlar el brillo de un LED, la velocidad de un motor o cualquier otro dispositivo que requiera una escala diferente.
En el caso de la micro:bit, este bloque se usa principalmente para convertir valores analógicos leídos por los pines en un rango adecuado para controlar dispositivos como LEDs o motores.

Se utiliza para configurar el periodo del ciclo PWM (modulación por ancho de pulso) que se genera en un pin analógico, como el P0.
El periodo es el tiempo total que tarda en completarse un ciclo de encendido y apagado del pin. Este bloque te permite establecer la duración de ese ciclo en milisegundos.
Por ejemplo, si estableces el periodo en 20 milisegundos, el pin P0 generará una señal PWM que se encenderá y apagará en ciclos de 20 milisegundos. Esto es útil para controlar la velocidad de un motor o el brillo de un LED.
El periodo afecta la frecuencia de la señal PWM. Una frecuencia más alta significa que el pin se encenderá y apagará más rápido, lo que puede ser útil para controlar dispositivos que responden a señales rápidas.
Este bloque es especialmente útil cuando se trabaja con dispositivos que requieren un control preciso de la señal PWM, como servos o motores de corriente continua.
Ten en cuenta que este bloque solo se puede usar con pines analógicos (P0, P1, P2, P3, P4 y P10) y no con pines digitales.

Su función es configurar un pin determinado para emitir sonido. Esto es especialmente útil si estás usando un zumbador o altavoz externo conoectado a uno de los pines de la micro:bit.
El bloque te permite seleccionar el pin que se utilizará para emitir sonido. Los pines disponibles son P0, P1, P2, P3, P4 y P10.
Una vez que configuras el pin, puedes usar otros bloques para reproducir sonidos o tonos a través de ese pin. Por ejemplo, puedes usar el bloque "escribir tono analógico" para reproducir un tono específico en el pin configurado.
Este bloque es útil cuando quieres controlar el sonido de manera más precisa o cuando necesitas usar un pin específico para emitir sonido en lugar de utilizar el pin predeterminado.
Ten en cuenta que este bloque no reproduce sonidos por sí mismo, sino que configura el pin para que pueda emitir sonido cuando se utilicen otros bloques relacionados con el audio.

Sirve para activar o desactivar la salida de sonido por el pin de audio que hayas configurado previamente.
Cuando se activa (verdadero), el pin de audio emitirá sonido cuando se utilicen bloques relacionados con el audio, como "escribir tono analógico" o "reproducir sonido".
Cuando se desactiva (falso), el pin de audio no emitirá sonido, incluso si se utilizan bloques de audio. Esto es útil si quieres silenciar el sonido temporalmente sin tener que reconfigurar el pin.

Sirve para controlar un servo motor conectándolo a un pin de la placa micro:bit, indicando el ángulo de rotación al que quieres mover el eje del servo.
Un servo motor es un dispositivo que puede girar su eje a un ángulo específico, generalmente entre 0 y 180 grados. Se utiliza en robótica y proyectos de electrónica para controlar el movimiento de objetos o mecanismos.
El bloque te permite seleccionar el pin al que está conectado el servo (P0, P1, P2, P3, P4 o P10) y especificar el ángulo de rotación en grados (de 0 a 180).
Ten en cuenta que el servo debe estar conectado correctamente al pin seleccionado y que el pin debe estar configurado para emitir señales PWM (modulación por ancho de pulso) para que el servo funcione correctamente.
Además, asegúrate de que el servo esté alimentado adecuadamente, ya que algunos servos requieren más corriente de la que la micro:bit puede proporcionar directamente (5V). En ese caso, es recomendable usar una fuente de alimentación externa para el servo.
Un servo motor típico tiene 3 cables: uno para la señal de control (naranja) conectado al pin seleccionado; otro (rojo) para la alimentación (3V) y otro (negro o marrón) para tierra (GND).

Cuando conectas un servomotor a la micro:bit y usas este bloque, el servomotor solicitará una intensidad de corriente al pin de la micro:bit. Sin embargo, la micro:bit solo puede suministrar una cantidad limitada de corriente (recomendado máximo 5 mA por pin, hasta 15 mA en picos). Muchos servomotores estándar requieren más corriente (habitualmente entre 100 mA y 250 mA) para funcionar correctamente.


Si conectas el servomotor directamente a la micro:bit, es posible que no funcione bien, que se reinicie la placa o que se dañe el pin. Para evitarlo, usa siempre una fuente de alimentación externa para alimentar el servomotor (por ejemplo, un portapilas de 3V o 4,5V) y conecta solo la señal (cable de control) al pin de la micro:bit. Une las tierras (GND) de la fuente externa y la micro:bit.
Consulta el manual de tu servomotor para conocer el voltaje y la corriente recomendados.

Sirve para controlar directamente la posición angular del servomotor mediante la duración del pulso en microseguntos (μs)
El bloque te permite especificar el pin al que está conectado el servomotor (P0, P1, P2, P3, P4 o P10) y la duración del pulso en microsegundos.
Este bloque es útil cuando necesitas un control preciso de la posición del servomotor, ya que te permite especificar la duración exacta del pulso para lograr la posición deseada.
Ten en cuenta que la duración del pulso debe estar dentro de un rango específico para que el servomotor funcione correctamente. Consulta la documentación del servomotor para conocer los valores recomendados.
Este bloque no funciona con cualquier servomotor; solo con servos tipo hobby que aceptan control de pulsos PWM. Asegúrate de que el servomotor que estás utilizando sea compatible con este tipo de control.
En estos servomotores, la duración del pulso determina la posición del eje. Por ejemplo, un pulso de 1000 μs puede mover el servomotor a 0 grados, mientras que un pulso de 2000 μs puede moverlo a 180 grados. Los valores intermedios moverán el servomotor a posiciones angulares intermedias.

Este bloque devuelve una referencia al pin digital seleccionado. No realiza una acción por sí mismo, sino que se utiliza como entrada (parámetro) en otros bloques que controlan este pin.
Por ejemplo, puedes usar este bloque como entrada en bloques que configuran el pin como entrada o salida, o en bloques que leen o escriben valores en el pin.

Devuelve una referencia al pin seleccionado para operaciones analógicas, tando de lectura (entrada) como de escritura (salida PWM). Como en el bloque anterior, por sí solo no hace nada, pero se usa como parámetro en otros bloques.

Este bloque configura el estado de una resistencia interna (subir, bajar o ninguna) en un pin digital de entrada de la micro:bit.
Cuando se configura una resistencia de subir (pull-up), el pin se mantiene en un estado alto (HIGH) cuando no hay conexión externa. Esto es útil para evitar lecturas erróneas cuando el pin no está conectado a nada.
Cuando se configura una resistencia de bajar (pull-down), el pin se mantiene en un estado bajo (LOW) cuando no hay conexión externa. Esto es útil para evitar lecturas erróneas cuando el pin no está conectado a nada.
Si no se configura ninguna resistencia, el pin puede flotar, lo que significa que su estado puede ser incierto y variar según las interferencias externas.
Este bloque es útil cuando se trabaja con botones, interruptores o sensores que necesitan un estado definido cuando no están conectados a nada. Al configurar una resistencia de subida o bajada, se garantiza que el pin tenga un estado predecible.
Por ejemplo, si estás usando un botón conectado al pin P0, puedes configurar una resistencia de subida para asegurarte de que el pin P0 esté en estado alto (HIGH) cuando el botón no esté presionado. De esta manera, cuando presiones el botón, el pin cambiará a estado bajo (LOW), lo que te permitirá detectar la acción del botón.
Ten en cuenta que este bloque solo se puede usar con pines digitales de entrada y no afecta a los pines de salida.
En la micro:bit, los pines digitales P0, P1, P2, P3, P4, P10 y P16 tienen resistencias internas que se pueden configurar con este bloque.

Este bloque genera una señal PWM de una frecuencia determinada (Hz) durante un tiempo dado en milisegundos, en un pin de salida. El resultado es un tono acústico que puede reproducirse en un zumbador o un altavoz conectado a la micro:bit.
A diferencia de los bloques de música, que usan notas, este bloque trabaja con frecuencias numéricas precisas, lo que te permite tocar sonidos personalizados, simular instrumentos o crear efectos de sonido específicos.

Este bloque configura un pin digital para que actúe como fuente de eventos automáticos, según el tipo de interacción eléctrica o física que elijas. Una vez activado, el pin podrá generar eventos que se capturan mediante otros bloques.
Esto permite que el programa reaccione automáticamente a cambios en el estado del pin, como cuando se presiona un botón, se detecta un cambio de voltaje o se recibe una señal externa.
Los tipos de eventos que puedes configurar son:
Este bloque es útil para crear programas que respondan a eventos físicos, como botones, sensores o dispositivos externos conectados a la micro:bit:

Este bloque se utiliza para establecer un tono analógico en un pin de salida, lo que permite generar sonidos o tonos específicos.
Por defecto, la micro:bit usa el pin P0 como salida de audio, pero puedes cambiarlo con este bloque para dirigir el sonido a cualquier otro pin compatible.

NeoPixel es una tecnología de iluminación LED que permite controlar individualmente cada LED en una tira o matriz de LEDs. Este bloque te permite establecer el ancho de la matriz de NeoPixel, es decir, cuántos LEDs hay en la tira o matriz.
El ancho se define como el número de LEDs que componen la matriz. Por ejemplo, si tienes una tira de 30 LEDs, el ancho sería 30. Este bloque es esencial para configurar correctamente la matriz de LEDs y asegurarte de que los colores y efectos se muestren correctamente.
El bloque te permite especificar el ancho de la matriz de NeoPixel, que es el número total de LEDs que componen la matriz. Por ejemplo, si tienes una matriz de 8x8 LEDs, el ancho sería 64 (8 filas por 8 columnas).
Este bloque es útil cuando trabajas con tiras o matrices de LEDs NeoPixel, ya que te permite definir cuántos LEDs hay en la matriz y cómo se comportarán al aplicar colores o efectos.
Al establecer el ancho de la matriz, puedes controlar la cantidad de LEDs que se utilizarán en tus programas y asegurarte de que los colores y efectos se muestren correctamente.
Este bloque no se puede usar de forma aislada, sino que se utiliza junto con otros bloques de la extensión de NeoPixel para controlar los LEDs de la matriz.
Consulta la sección de "Extensiones" para más información sobre cómo usar NeoPixel con la micro:bit.

Este bloque ejecuta el código que pongas dentro de él cuando el pin P0 (o el pin digital seleccionado) detecta un pulso de entrada, es decir, cuando su estado cambia a "alta" o "baja" tensión, dependiendo de lo que elijas en el menú.
Es un manejador de eventos digitales que te permite responder a cambios en el estado del pin, como cuando se presiona un botón o se activa un sensor.
El bloque tiene dos opciones en el menú desplegable:
Este bloque es útil para crear programas que respondan a eventos físicos, como botones, sensores o dispositivos externos conectados a la micro:bit.

Este bloque devuelve la duración en microsegundos (µs) del último pulso detectado en un pin digital, utilizando el evento "alta" o "baja".
Es útil para medir el tiempo que un pin digital ha estado en un estado alto (HIGH) o bajo (LOW) después de que se haya detectado un cambio de estado.

Este bloque mide la duración, en microsegundos (µs) de un pulso digital detectado en el pin indicado (por ejemplo, P0) que tenga el estado "alta" o "baja". En otras palabras, espera a que el pin cambie al estado indicado, cronometra cuanto tiempo permanece en ese estado y luego devuelve el valor en microsegundos.
Es útil para medir la duración de señales digitales, como las generadas por sensores o dispositivos externos conectados a la micro:bit.

Este bloque realiza una lectura de datos a través del bus I2C desde un dispositivo esclavo conectado a la micro:bit.
El bloque te permite especificar la dirección del dispositivo esclavo (un número entre 0 y 127), el registro desde el cual deseas leer los datos (un número entre 0 y 255) y el formato de los datos que esperas recibir (entero de 8 bits, entero de 16 bits o número de punto flotante).
El bloque devuelve el valor leído del dispositivo esclavo en el formato seleccionado. Este valor puede ser un número entero o un número de punto flotante, dependiendo de la opción que hayas elegido.
Este bloque es útil para interactuar con sensores, actuadores u otros dispositivos que utilizan el protocolo I2C para comunicarse con la micro:bit.
Ten en cuenta que para usar este bloque, debes tener conocimientos básicos sobre el protocolo I2C y cómo funcionan los dispositivos esclavos conectados a la micro:bit.
Además, asegúrate de que los dispositivos estén conectados correctamente y que la dirección y el registro que estás utilizando sean los correctos para el dispositivo en cuestión.
¿Qué es I2C y para qué se usa?
I2C (Inter-Integrated Circuit) es un protocolo de comunicación en serie que permite la transferencia de datos entre dispositivos electrónicos. Fue desarrollado por Philips en la década de 1980 y se ha convertido en un estándar ampliamente utilizado en la industria electrónica.
El protocolo I2C utiliza dos líneas de comunicación principales: SDA (Serial Data Line) y SCL (Serial Clock Line). La línea SDA se utiliza para la transferencia de datos, mientras que la línea SCL se utiliza para sincronizar la comunicación entre los dispositivos.
I2C es un protocolo maestro-esclavo, lo que significa que un dispositivo actúa como maestro y controla la comunicación, mientras que los demás dispositivos actúan como esclavos y responden a las solicitudes del maestro. El maestro inicia la comunicación enviando una señal de inicio, seguida de la dirección del dispositivo esclavo con el que desea comunicarse.
Una de las principales ventajas de I2C es su capacidad para conectar múltiples dispositivos en un solo bus de comunicación, lo que reduce la cantidad de cables necesarios y simplifica el diseño del circuito. Además, I2C permite la comunicación bidireccional, lo que significa que los dispositivos pueden enviar y recibir datos.
I2C se utiliza comúnmente en aplicaciones como sensores, memorias EEPROM, pantallas LCD, convertidores analógico-digitales (ADC) y otros dispositivos periféricos. Es especialmente útil en sistemas embebidos y microcontroladores debido a su simplicidad y eficiencia.
La micro:bit actúa como maestro en el bus I2C y puede comunicarse con varios dispositivos esclavos conectados a sus pines P19 (SCL) y P20 (SDA).
Para usar el protocolo I2C con la micro:bit, es importante conocer la dirección del dispositivo esclavo con el que deseas comunicarte, así como los registros específicos que necesitas leer o escribir.
Consulta la documentación del dispositivo esclavo para obtener esta información y asegurarte de que la comunicación I2C funcione correctamente.
Conector I2C para micro:bit (Fuente: https://es.rs-online.com/)
Supongamos que estás usando un sensor de temperatura I2C con una dirección 0x48 (72 decimal), que devuelve la temperatura como un entero de 8 bits en el registro 0x00 (Formato Int8LE). Para leer la temperatura, usarías el bloque de la siguiente manera:
Esto leerá un byte desde el sensor y mostrará la temperatura en la pantalla LED de la micro:bit.

Este es un bloque complementario al anterior: es el bloque de escritura I2C, que permite enviar datos desde la micro:bit hacia un dispositivo esclavo conectado por I2C.
Este bloque escribe un número al bus I2C, enviándolo a una dirección específica de un dispositivo I2C esclavo, en un formato determinado (por ejemplo, 8 bits), con la opción de seguir escribiendo datos (repeated) o no.
El bloque tiene los siguientes parámetros:
Este bloque es útil para controlar dispositivos I2C, como sensores, actuadores u otros periféricos, enviándoles comandos o configuraciones específicas.
Al igual que con el bloque de lectura I2C, es importante conocer la dirección y los registros del dispositivo esclavo con el que estás trabajando para asegurarte de que la comunicación funcione correctamente.

Este bloque configura la frecuencia de reloj (velocidad de transferencia de datos) del bus SPI (Serial Peripheral Interface) en la micro:bit. Es decir: determina a qué velocidad se comunican la micro:bit (maestra) y el dispositivo esclavo SPI.
El bloque te permite seleccionar una frecuencia específica en hercios (Hz) para el reloj SPI. Las opciones disponibles son 125 kHz (125000), 250 kHz (250000), 500 kHz (500000), 1 MHz (1000000), 2 MHz (2000000) y 4 MHz (4000000).
La frecuencia del reloj SPI afecta la velocidad a la que se transfieren los datos entre la micro:bit y el dispositivo esclavo. Una frecuencia más alta permite una transferencia de datos más rápida, pero puede ser menos estable en distancias largas o con cables de mala calidad.
Es importante asegurarse de que la frecuencia seleccionada sea compatible con el dispositivo esclavo SPI que estás utilizando. Consulta la documentación del dispositivo para conocer la frecuencia máxima que puede manejar.
¿Qué es SPI y cuándo se usa?
Es un protocolo de comunicación síncrona que permite una comunicación rápida entre microcontroladores y periféricos.
SPI utiliza un bus de cuatro líneas:
El dispositivo maestro controla la comunicación generando el reloj y seleccionando el dispositivo esclavo con el que desea comunicarse.
Ejemplo de uso de SPI en micro:bit (Fuente: https://www.fredscave.com/)

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx

xxxxxxxxxx
Un diodo LED (Light Emitting Diode) es un componente que convierte energía eléctrica en luz. En proyectos con micro:bit, se conecta a los pines de salida digitales (por ejemplo, P0) para encenderse o apagarse mediante programación. Su conexión correcta incluye una resistencia limitadora, que protege al LED de recibir demasiada corriente.
Características clave:

Si la tensión de alimentación es mayor que la caída de tensión del LED, se debe usar una resistencia limitadora para evitar que el LED se queme.
La micro:bit funciona a 3.3V, por lo que un LED blanco funcionará bien, pero un LED rojo necesitará una resistencia para limitar la corriente y no quemarlo.

Sin embargo hay que tener en cuenta que, según la documentación oficial de la BBC micro:bit v2, la corriente que puede entregar a través de sus pines es de hasta 15mA en momentos puntuales, aunque se recomienda no sobrepasar los 5mA por pin en uso regular y un máximo de 100 mA entre todos los pines.
Si conectas directamente el LED al pin de la micro:bit fuerzas 20mA (o más) en un solo pin sin resistencia limitadora y puedes dañar el pin o acortar la vida útil de la micro:bit.
La resistencia limita tanto el voltaje que llega al LED como la corriente que pasa por el pin y que también llega al LED (intensidad), asegurando que no se excedan los valores recomendados.
La resistencia se conecta entre el pin de la micro:bit y el ánodo del LED. El cátodo del LED se conecta al GND.

La resistencia se calcula con la ley de Ohm:

Donde:
Por ejemplo, para un LED rojo con una caída de tensión de 1.8V y una corriente de 5mA:
R = (3.3V - 1.8V) / 0.005A = 300Ω
En este caso, una resistencia de 330Ω (valor comercial) sería adecuada.
(Vfuente-VLED) nos da el valor de exceso de tensión (voltaje) de la micro:bit sobre el LED.
ILED es la intensidad (amperaje) que le vamos a pedir al pin y que, como ya hemos dicho, debe estar entre 5mA y 10mA para protejer y prolongar la vida útil del pin. Además, este amperaje determinará la luminosidad del diodo.
Si no se usa una resistencia, el LED puede quemarse rápidamente debido a la alta corriente que pasa por él y, además, podemos dañar la micro:bit.
Si se usa una resistencia, el LED funcionará correctamente y la micro:bit durará más tiempo.
En resumen, un diodo LED es un componente esencial en proyectos con micro:bit, ya que permite visualizar el estado de un pin digital. Conectar un LED correctamente implica entender su polaridad, caída de tensión y la importancia de usar una resistencia limitadora para proteger tanto el LED como la micro:bit.
¿Y SI QUIERO MÁS BRILLO EN EL LED?
Acabamos de ver que la micro:bit no debe suministrar más de 5 mA por pin sin sobrecalentarse o dañar componentes. Pero un LED típico necesita entre 10 y 20 mA para brillar correctamente.
Si quieres más brillo en el LED, puedes usar un transistor como interruptor. El transistor actúa como un amplificador de corriente, permitiendo que una pequeña corriente del pin de la micro:bit controle una corriente mayor a través del LED. De este manera protejemos el pin (evitamos dañar la micro:bit por exceso de carga) y podemos dar la máxima intensidad a nuestro diodo LED.

Conecta el pin de la micro:bit a la base del transistor (B) a través de una resistencia (por ejemplo, 1kΩ). El emisor del transistor (E) se conecta a GND y el colector (C) al cátodo del LED. El ánodo del LED se conecta a otra fuente de alimentación (3.3V o 5V) a través de una resistencia limitadora adecuada.
Es decir, además del transistor, utilizamos dos resistencias:

TABLA DE RESISTENCIAS
Las resistencias son componentes electrónicos que limitan el flujo de corriente eléctrica en un circuito. Se utilizan para controlar la cantidad de corriente que pasa por un componente, como un LED, y para dividir voltajes.

En proyectos con micro:bit, las resistencias son esenciales para proteger los componentes y garantizar un funcionamiento adecuado. Aquí hay algunos puntos clave sobre las resistencias:

CÓDIGO DE COLORES PARA RESISTENCIAS
El valor de una resistencia se determina por el color de sus bandas. Cada banda representa un dígito o un multiplicador.
La resistencia se lee de izquierda a derecha, y las primeras dos o tres bandas representan los dígitos significativos, la penúltima banda es el multiplicador y la última banda indica la tolerancia.
Cada color tiene un valor específico:

Para leer el valor de una resistencia: