对象: PWM
约 1039 字大约 3 分钟
2026-03-18
构建固件和导入到JS
pwm 对象由 gpio 提供:
import { pwm } from 'gpio'简介
PWM 对象
提供脉冲宽度调制(PWM)输出功能,用于控制 LED 亮度、电机速度、舵机角度等。
最大速度模式
高速模式常量,用于 pwm.config() 的 mode 参数。
对象方法
函数 config
原型: config (pin:number, options:object={})
配置指定引脚的 PWM 输出
配置 GPIO 引脚为 PWM 输出模式,支持多种参数配置。
配置选项: { mode: number = 0, // 速度模式:0=低速模式, 1=高速模式 duty: number = 0, // 初始占空比 freq: number = 1000, // 频率(Hz) channel: number = auto, // PWM 通道(自动分配) resolution: number = 10, // 分辨率(位),决定占空比精度 timer: number = 0, // 定时器号 }
示例:
import * as gpio from "gpio"
// 基本配置 - LED 调光
gpio.pwm.config(2, { freq: 1000, duty: 512 })
// 配置舵机(50Hz,1-2ms 脉宽)
gpio.pwm.config(18, {
freq: 50, // 50Hz = 20ms 周期
resolution: 16, // 16位分辨率
duty: 4915 // 1.5ms 脉宽 (居中)
})
// 修改占空比
gpio.pwm.write(2, 256) // 25% 亮度
gpio.pwm.write(2, 768) // 75% 亮度
gpio.pwm.write(2, 1023) // 100% 亮度
// 停止 PWM
gpio.pwm.stop(2)参数:
pin
类型number
参数说明GPIO 引脚号
options
类型object (详见下方类型定义)
默认值{}
参数说明PWM 配置选项
options 类型定义:
{ mode?: number, // 速度模式:0=低速模式, 1=高速模式,默认 0 duty?: number, // 初始占空比,默认 0 freq?: number, // 频率(Hz),默认 1000 channel?: number, // 通道号,自动分配 resolution?: number, // 分辨率(位),默认 10 timer?: number // 定时器号,默认 0 }
异常:
- 引脚未配置为 PWM
- 无可用通道
返回值:
undefined
函数 write
原型: write (pin:number, value:number, update:boolean=true)
写入 PWM 占空比
设置指定引脚的 PWM 占空比值。
示例:
import * as gpio from "gpio"
// 配置 PWM
gpio.pwm.config(2, { resolution: 10 }) // 10位分辨率,范围 0-1023
// 设置不同占空比
gpio.pwm.write(2, 0) // 0% (完全关闭)
gpio.pwm.write(2, 256) // 25%
gpio.pwm.write(2, 512) // 50%
gpio.pwm.write(2, 768) // 75%
gpio.pwm.write(2, 1023) // 100% (完全打开)
// 渐变效果
for (let i = 0; i <= 1023; i += 10) {
gpio.pwm.write(2, i)
process.sleep(10)
}参数:
pin
类型number
参数说明GPIO 引脚号
value
类型number
参数说明占空比值(0 到 2^resolution - 1)
update
类型boolean
默认值true
参数说明是否立即更新硬件
异常:
- 引脚未配置为 PWM
返回值:
undefined
函数 update
原型: update (pin:number)
更新 PWM 输出
手动触发 PWM 占空比更新(通常在批量写入后使用)。
示例:
import * as gpio from "gpio"
// 配置多个 PWM 引脚
gpio.pwm.config(2, { freq: 1000 })
gpio.pwm.config(4, { freq: 1000 })
// 批量写入(不立即更新)
gpio.pwm.write(2, 512, false)
gpio.pwm.write(4, 768, false)
// 同时更新所有通道
gpio.pwm.update(2)
gpio.pwm.update(4)参数:
pin
类型number
参数说明GPIO 引脚号
异常:
- 引脚未配置为 PWM
返回值:
undefined
函数 stop
原型: stop (pin:number)
停止 PWM 输出
停止指定引脚的 PWM 输出并释放通道资源。
示例:
import * as gpio from "gpio"
// 配置并启动 PWM
gpio.pwm.config(2, { freq: 1000, duty: 512 })
// ... 使用 PWM ...
// 停止 PWM
gpio.pwm.stop(2)
// 引脚恢复为普通 GPIO
gpio.setMode(2, "output")
gpio.write(2, 0)参数:
pin
类型number
参数说明GPIO 引脚号
异常:
- 引脚未配置为 PWM
返回值:
undefined
