Nesta página Como funciona Montagem Ler valor analógico Mapear valores Controlar brilho do LED

🎛️ Como Funciona um Potenciómetro?

Um potenciómetro é uma resistência variável com três terminais. Os dois terminais externos ligam-se à alimentação (3V e GND) e o terminal central (cursor) fornece uma tensão proporcional à posição do eixo — de 0V a 3.3V.

Resistência
10 KΩ
Valor total (ponta a ponta)
Tensão saída
0–3.3V
No cursor (pino central)
ADC micro:bit
10 bit
Resolução 0–1023
Tipo
Linear
Variação proporcional

🔌 Montagem

3V→ Terminal esquerdo do potenciómetro
P1→ Terminal central (cursor) do potenciómetro
GND→ Terminal direito do potenciómetro

📊 Ler Valor Analógico

ler_potenciometro.js
// Ler potenciómetro em P1 — valor 0 a 1023
basic.forever(function () {
    let valor = pins.analogReadPin(AnalogPin.P1)
    basic.showNumber(valor)
    serial.writeValue("pot", valor)
    basic.pause(200)
})

🗺️ Mapear Valores

O valor bruto (0–1023) raramente é o que queremos. A função Math.map() converte proporcionalmente de uma escala para outra.

mapear_valores.js
basic.forever(function () {
    let raw = pins.analogReadPin(AnalogPin.P1)

    // Mapear para percentagem 0-100%
    let percentagem = Math.map(raw, 0, 1023, 0, 100)

    // Mapear para ângulo 0-180°
    let angulo = Math.map(raw, 0, 1023, 0, 180)

    // Mapear para temperatura simulada 15-35°C
    let temp_sim = Math.map(raw, 0, 1023, 15, 35)

    serial.writeValue("pct", percentagem)
    basic.pause(100)
})

💡 Controlar Brilho do LED

potenciometro_led.js
// Potenciómetro em P1 controla brilho do LED em P0
// LED com resistência 47Ω em P0

basic.forever(function () {
    let pot = pins.analogReadPin(AnalogPin.P1)
    // O valor analógico do micro:bit já é 0-1023
    // analogWritePin também usa 0-1023
    pins.analogWritePin(AnalogPin.P0, pot)

    // Mostrar barra de brilho na matriz LED
    let nivel = Math.map(pot, 0, 1023, 0, 4)
    for (let x = 0; x <= 4; x++) {
        for (let y = 0; y <= 4; y++) {
            led.plotBrightness(x, y, x <= nivel ? 255 : 0)
        }
    }
    basic.pause(50)
})

🏆 Para ir mais longe