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.
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.
InicianteAlterna para código de texto com um clique. O MakeCode converte blocos ↔ JavaScript em tempo real — podes trabalhar nas duas vistas simultaneamente.
IntermédioDisponível no editor alternativo python.microbit.org. Ideal para alunos com experiência em Python. Não disponível no MakeCode padrão.
AvançadoTesta 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íveisAdiciona 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óduloSem instalação necessária. Abre em qualquer computador com Chrome ou Edge. Guarda projetos na nuvem ou em ficheiros .hex locais.
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.
Vai a makecode.microbit.org e clica em Novo Projeto. Dá um nome ao projeto — por exemplo "Kit A 37 — LED".
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).
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.
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.
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.
| Bloco (JavaScript) | Categoria MakeCode | Uso 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 |
Estes padrões aplicam-se a praticamente todos os módulos do Kit A 37. Aprende-os uma vez, usa-os sempre.
// 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)
})
// 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)
})
// 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
})
// 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)
})
showString, showNumber, clearLCD.sonar.ping(Trig, Echo, cm).pins.servoWritePin() integrado — extensão só se precisares de múltiplos servos simultâneos.serial.writeValue() para ver o que o sensor lê de factodigitalReadPin em vez de analogReadPin o resultado é sempre 0 ou 1.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.Editor oficial online — abre directamente no browser.
makecode.microbit.orgDocumentação oficial do micro:bit — hardware, pinos e primeiros passos.
microbit.orgTodos os blocos e funções JavaScript documentados com exemplos.
makecode.microbit.org/referenceLaboratórios de Educação Digital — recursos e documentação oficial do programa.
led.dge.medu.ptBlocos específicos para os 37 módulos — leitura analógica, digital, I²C e série.
Neste siteTodos os 37 módulos com pinagem sugerida e link para o exercício correspondente.
Neste site