Nesta página Como funciona o piezo Montagem Gerar um tom Melodia simples Alertas sonoros

🔔 O Elemento Piezoelétrico

O elemento piezoelétrico gera som quando submetido a uma tensão alternada — vibra mecanicamente na frequência da onda elétrica aplicada. No Kit A é uma campainha passiva (precisa de sinal PWM) ligada ao pino P0.

Pino MakeCode
P0
Buzzer integrado no breakout
Frequência
20Hz–20kHz
Gama audível
Nota A4
440 Hz
Referência afinação
Tipo
Passivo
Precisa sinal PWM externo

🔌 Montagem

O piezo do Kit A já está ligado ao P0 do micro:bit via breakout — não é necessária montagem adicional. Se usares um piezo externo:

P0→ Terminal positivo (+) do piezo
GND→ Terminal negativo (−) do piezo

🎵 Gerar um Tom

tom_simples.js
// Tocar notas individuais no P0
// MakeCode usa frequências em Hz

basic.forever(function () {
    // Tocar nota Dó (C4 = 262 Hz) por 500ms
    music.playTone(262, 500)
    basic.pause(100)

    // Tocar nota Sol (G4 = 392 Hz) por 500ms
    music.playTone(392, 500)
    basic.pause(100)

    // Silêncio 1 segundo
    music.rest(1000)
})

🎶 Melodia Simples

melodia.js
// Tabela de frequências das notas (oitava 4)
// Dó=262, Ré=294, Mi=330, Fá=349, Sol=392, Lá=440, Si=494

let notas = [262, 294, 330, 349, 392, 440, 494, 524]
let duracao = 300

// Escala ascendente e descendente
input.onButtonPressed(Button.A, function () {
    for (let i = 0; i < notas.length; i++) {
        music.playTone(notas[i], duracao)
    }
    for (let i = notas.length - 1; i >= 0; i--) {
        music.playTone(notas[i], duracao)
    }
})

// Parar ao pressionar B
input.onButtonPressed(Button.B, function () {
    music.stopAllSounds()
})

🚨 Alertas Sonoros

alertas.js
// Função de alerta: 3 bips curtos
function alerta_curto() {
    for (let i = 0; i < 3; i++) {
        music.playTone(880, 150)
        basic.pause(100)
    }
}

// Sirene: oscila entre duas frequências
function sirene() {
    for (let rep = 0; rep < 5; rep++) {
        for (let f = 500; f <= 1000; f += 50) {
            music.playTone(f, 20)
        }
        for (let f = 1000; f >= 500; f -= 50) {
            music.playTone(f, 20)
        }
    }
}

// Testar: A = alerta, B = sirene
input.onButtonPressed(Button.A, function () { alerta_curto() })
input.onButtonPressed(Button.B, function () { sirene() })

🏆 Para ir mais longe