Início› MakeCode
PR.FT4_10 · Kit A 37 · micro:bit

💻 MakeCode
Guia Completo

Tudo o que precisas para programar o micro:bit com os 37 módulos do Kit A 37 — do primeiro projeto aos blocos avançados, extensões, JavaScript e depuração.

🧩 O que é o MakeCode?

Visão geral
🧱

Programação por Blocos

Interface de arrastar e largar baseada em Scratch. Ideal para iniciantes — cada bloco corresponde a uma instrução e o erro de sintaxe é impossível.

Iniciante
📜

JavaScript / TypeScript

Alterna para código de texto com um clique. O MakeCode converte blocos ↔ JavaScript em tempo real — podes trabalhar nas duas vistas simultaneamente.

Intermédio
🐍

MicroPython

Disponível no editor alternativo python.microbit.org. Ideal para alunos com experiência em Python. Não disponível no MakeCode padrão.

Avançado
📱

Simulador Integrado

Testa o código sem hardware — o simulador do MakeCode mostra a matriz de LEDs, botões e sensores do micro:bit em tempo real no browser.

Todos os níveis
🔗

Extensões / Pacotes

Adiciona suporte a módulos externos como o display 1602 I²C, servos avançados, HC-SR04 (sonar) e muito mais — em Extensões no menu.

Por módulo
☁️

Funciona no Browser

Sem instalação necessária. Abre em qualquer computador com Chrome ou Edge. Guarda projetos na nuvem ou em ficheiros .hex locais.

Online

🖥️ Modos de Programação

Blocos · JavaScript · Python
🧱 Blocos — recomendado
📜 JavaScript / TypeScript
🐍 MicroPython (editor separado)

Os exemplos neste site usam JavaScript para facilitar a leitura em texto — mas cada excerto corresponde directamente a blocos no MakeCode. Alterna para a vista de blocos com o botão no canto superior esquerdo do editor.

💡
Dica de pedagogia: Começa sempre em blocos com os alunos iniciantes. Quando o programa funcionar, alterna para JavaScript para mostrar como o código de texto corresponde aos blocos — é a ponte mais natural entre programação visual e textual.

🚀 Primeiro Programa Passo a Passo

Do zero ao micro:bit em 5 minutos
1

Abrir o MakeCode

Vai a makecode.microbit.org e clica em Novo Projeto. Dá um nome ao projeto — por exemplo "Kit A 37 — LED".

2

Ligar o micro:bit ao computador

Usa o cabo microUSB incluído. O micro:bit aparece como uma drive USB chamada MICROBIT. No Chrome/Edge clica em Ligar dispositivo para usar WebUSB (upload directo sem arrastar ficheiros).

3

Escrever o código

No bloco ao iniciar, adiciona os blocos que precisas. Para ler um sensor digital em P0: vai a Avançado → Pinos → ler pino digital P0.

4

Fazer upload

Clica em Transferir (botão roxo). Com WebUSB o upload é imediato. Sem WebUSB, arrasta o ficheiro .hex para a drive MICROBIT — o LED laranja pisca durante o upload.

5

Testar e depurar

Usa o Monitor Série no MakeCode (ícone 🔌) para ver os valores dos sensores em tempo real. Adiciona serial.writeValue("sensor", valor) ao código para monitorizar qualquer pino.

⚡ Blocos Essenciais para o Kit A 37

Pinos · Música · Série
Bloco (JavaScript)Categoria MakeCodeUso no Kit A 37
pins.digitalReadPin(DigitalPin.P0) Avançado → Pinos Botão, PIR, tilt, colisão, rastreio, IV obstáculos, Hall, continuidade
pins.digitalWritePin(DigitalPin.P1, 1) Avançado → Pinos LED branco, LED vermelho, semáforo, campainha digital, relé
pins.analogReadPin(AnalogPin.P0) Avançado → Pinos LDR, LM35, temperatura, humidade, gás, álcool, som, UV, rotação, joystick
pins.analogWritePin(AnalogPin.P1, 512) Avançado → Pinos LED 3W (brilho), LED RGB (3 canais), campainha passiva (frequência)
pins.servoWritePin(AnalogPin.P0, 90) Avançado → Pinos Micro servo — valor de 0° a 180°
music.playTone(Note.A4, 500) Música Campainha passiva — tom específico com duração
music.playTone(440, music.beat(BeatFraction.Quarter)) Música Campainha passiva — frequência Hz + duração em batidas
serial.writeValue("sensor", valor) Avançado → Serial Depuração — mostra valor no Monitor Série e gráfico temporal
Math.map(v, 0, 1023, 0, 100) Matemática Converter 0–1023 para qualquer escala — percentagem, temperatura, graus…
input.runningTime() Entrada Temporizador sem bloquear o loop — equivalente a millis() no Arduino
⚠️
Pinos analógicos (ADC) no micro:bit: Apenas P0, P1, P2 suportam leitura analógica completa de 10 bits (0–1023). Os pinos P3, P4, P10 têm ADC mas estão ligados à matriz de LEDs — interferem com o display. Para sensores analógicos usa sempre P0, P1 ou P2.

📐 Padrões de Código Recorrentes

Templates prontos a usar

Estes padrões aplicam-se a praticamente todos os módulos do Kit A 37. Aprende-os uma vez, usa-os sempre.

padrao_sensor_digital.js — Sensor digital com ação
// Padrão universal: sensor digital → ação
// Substitui: SENSOR_PIN, SAIDA_PIN e as ações
const SENSOR_PIN = DigitalPin.P0  // Ex: PIR, botão, colisão
const SAIDA_PIN  = DigitalPin.P1  // Ex: LED, campainha digital
const LIMIAR_ATIVO = 1            // 1 = activo-HIGH · 0 = activo-LOW

basic.forever(function () {
    let leitura = pins.digitalReadPin(SENSOR_PIN)

    if (leitura == LIMIAR_ATIVO) {
        pins.digitalWritePin(SAIDA_PIN, 1)   // Liga saída
        basic.showIcon(IconNames.Yes)
    } else {
        pins.digitalWritePin(SAIDA_PIN, 0)   // Desliga saída
        basic.clearScreen()
    }
    basic.pause(100)
})
padrao_sensor_analogico.js — Sensor analógico com threshold e mapeamento
// Padrão universal: sensor analógico → mapeamento + threshold
const SENSOR_ANA  = AnalogPin.P0   // Sempre P0, P1 ou P2
const LED_SAIDA   = DigitalPin.P1
const LIMIAR      = 600            // Ajusta ao sensor e ambiente

basic.forever(function () {
    let raw = pins.analogReadPin(SENSOR_ANA)           // 0–1023
    let pct = Math.map(raw, 0, 1023, 0, 100)           // → percentagem

    serial.writeValue("sensor", raw)                   // Depuração
    led.plotBarGraph(raw, 1023)                         // Visualização

    if (raw > LIMIAR) {
        pins.digitalWritePin(LED_SAIDA, 1)
    } else {
        pins.digitalWritePin(LED_SAIDA, 0)
    }
    basic.pause(200)
})
padrao_temporizador.js — Ação por tempo sem bloquear (millis equivalent)
// Temporizar sem usar delay() — permite que outras coisas corram
let ultimaAccao = 0
const INTERVALO = 5000   // 5 segundos

basic.forever(function () {
    // Outra lógica pode correr aqui sem ser bloqueada
    let sensor = pins.digitalReadPin(DigitalPin.P0)

    // Executa apenas quando o intervalo passou
    if (input.runningTime() - ultimaAccao > INTERVALO) {
        ultimaAccao = input.runningTime()
        serial.writeLine("Tick — sensor: " + sensor)
    }

    basic.pause(20)   // Pequeno delay para não saturar o CPU
})
padrao_borda.js — Detectar mudança de estado (borda ascendente/descendente)
// Detectar transição LOW→HIGH (borda ascendente)
// Ideal para contar eventos, botões, PIR, interruptor fotográfico
let estadoAnterior = 0
let contador = 0

basic.forever(function () {
    let estadoAtual = pins.digitalReadPin(DigitalPin.P0)

    // Borda ascendente: passou de 0 para 1
    if (estadoAtual == 1 && estadoAnterior == 0) {
        contador++
        basic.showNumber(contador)
        serial.writeValue("count", contador)
    }

    estadoAnterior = estadoAtual
    basic.pause(20)
})

🔌 Extensões para o Kit A 37

Avançado → Extensões → pesquisa o nome
ℹ️
Para instalar uma extensão: no MakeCode clica em Avançado → Extensões e pesquisa o nome abaixo. A extensão fica disponível como nova categoria de blocos no menu lateral.
lcd1602 / LCD1602 I2C
Suporte ao display 1602 com interface I²C. Blocos showString, showNumber, clearLCD.
Módulo 31 — Display 1602
sonar / hc-sr04
Medição de distância com o sensor ultrassónico HC-SR04. Bloco sonar.ping(Trig, Echo, cm).
Módulo 33 — HC-SR04
servo
Controlo avançado de servos. O MakeCode já tem pins.servoWritePin() integrado — extensão só se precisares de múltiplos servos simultâneos.
Módulo 35 — Micro Servo
neopixel
Fitas de LEDs endereçáveis WS2812B. Não incluído no Kit A 37 mas útil para projetos de expansão.
Projetos de expansão
radio / bluetooth
Comunicação sem fios entre micro:bits (rádio interno). Útil para projetos multi-dispositivo e robótica com telecomando.
Projetos multi-micro:bit
datalogger
Regista dados de sensores na memória flash do micro:bit V2 e exporta como CSV — perfeito para a Estação Meteorológica.
Projetos de registo de dados

⌨️ Atalhos e Dicas de Produtividade

MakeCode web
Ctrl + Z Desfazer última acção
Ctrl + S Guardar projeto no browser
Ctrl + D Duplicar bloco seleccionado
Del Apagar bloco seleccionado (ou arrastar para lixo)
Ctrl + Shift + B Alternar entre Blocos e JavaScript
Ctrl + Enter Compilar e transferir para o micro:bit
F5 Reiniciar o simulador
Ctrl + Shift + S Abrir Monitor Série
💡
Guardar localmente: Usa Ficheiro → Guardar como .hex para guardar o projeto num ficheiro que inclui o código e pode ser reaberto no MakeCode. Para partilhar um projeto com alunos, usa o botão Partilhar que gera um link permanente.

🔍 Depuração de Problemas

Quando o módulo não funciona
Módulo não responde
1. Verifica se o GND está ligado · 2. Confirma que o pino no código corresponde ao pino físico · 3. Usa serial.writeValue() para ver o que o sensor lê de facto
Sensor analógico lê sempre 0 ou 1023
Estás a usar um pino que não suporta ADC. Muda para P0, P1 ou P2. Se usares digitalReadPin em vez de analogReadPin o resultado é sempre 0 ou 1.
Display 1602 não mostra nada
Tenta o endereço 0x3F (= decimal 63) em vez de 0x27 (= 39). Confirma que a extensão lcd1602 está instalada e que os pinos SCL/SDA estão em P19/P20.
micro:bit reinicia ao ligar servo ou motor
Corrente insuficiente via USB. Usa o suporte de baterias AA incluído no kit para alimentar a montagem. O USB só serve para programar.
Upload falha com erro de transferência
Desactiva a conexão WebUSB, usa o método de arrastar o ficheiro .hex para a drive MICROBIT. Se a drive não aparecer, verifica o cabo (alguns cabos microUSB são apenas de carga, sem dados).

📚 Recursos e Documentação

Links úteis
💻

MakeCode

Editor oficial online — abre directamente no browser.

makecode.microbit.org
📖

Guia micro:bit

Documentação oficial do micro:bit — hardware, pinos e primeiros passos.

microbit.org
🗂️

Referência da API

Todos os blocos e funções JavaScript documentados com exemplos.

makecode.microbit.org/reference
🏫

LED Portugal

Laboratórios de Educação Digital — recursos e documentação oficial do programa.

led.dge.medu.pt
📡

MakeCode para Sensores

Blocos específicos para os 37 módulos — leitura analógica, digital, I²C e série.

Neste site
📦

Catálogo de Módulos

Todos os 37 módulos com pinagem sugerida e link para o exercício correspondente.

Neste site
PR.FT4_10 · Kit A 37 · Início · makecode.microbit.org · led.dge.medu.pt