Skip to content

Salida PWM

This content is not available in your language yet.

Un pin digital solo da dos estados: encendido o apagado. PWM permite valores intermedios encendiendo y apagando el pin muy rápido; la proporción de tiempo encendido (el ciclo de trabajo) determina el efecto: brillo de un LED, velocidad de un motor DC, volumen de un zumbador.

board.pinMode(9, board.MODES.PWM);
board.analogWrite(9, 128); // ciclo de trabajo ~50 %

El valor va de 0 a 255:

ValorCiclo de trabajoEfecto
00 % (siempre apagado)apagado / parado
64~25 %tenue / lento
128~50 %medio
192~75 %brillante / rápido
255100 % (siempre encendido)máximo

board.pwmWrite(pin, valor) hace exactamente lo mismo que analogWrite; usa el que prefieras.

Solo los pines con hardware PWM. En placas Arduino clásicas son los marcados con ~ (por ejemplo 3, 5, 6, 9, 10, 11). En un pin sin PWM, analogWrite no atenúa: se comporta como encendido/apagado.

Brillo fijo de un LED:

board.pinMode(9, board.MODES.PWM);
board.analogWrite(9, 200); // bastante brillante

Efecto “respiración” (sube y baja en bucle):

let nivel = 0, paso = 5;
setInterval(() => {
board.analogWrite(9, nivel);
nivel += paso;
if (nivel >= 255 || nivel <= 0) paso = -paso; // rebota en los extremos
}, 30);

Velocidad de un motor DC según una gVar (0–100 %) escrita desde un artefacto:

board.pinMode(5, board.MODES.PWM);
setInterval(() => {
const pct = Math.max(0, Math.min(100, varG.velocidad || 0));
board.analogWrite(5, Math.round((pct / 100) * 255));
}, 100);
  • Para un servo usa Servo, no PWM crudo.
  • PWM no es un voltaje analógico real (es un promedio de pulsos); para eso haría falta un DAC.

Con frvn componentes, new five.Led(9).brightness(128) usa PWM por debajo.