dxPwm
1. 概述
此模块是 dejaOS 官方系统模块库的一部分,用于 PWM(脉冲宽度调制)控制功能。 它包含全面的 PWM 控制功能:
- PWM 通道初始化和管理
- 功率级别控制(0-100 范围)
- 具有可自定义参数的蜂鸣声生成
- 针对不同场景的预定义蜂鸣模式(按键、成功、失败、警告)
- 跨线程 PWM 控制支持
在部分设备上,PWM 输出会接到 LED 而非蜂鸣器:此时 setPower 表现为调节灯光亮度(占空比),pwm.beep() 则表现为按次数与间隔 闪烁(volume 可理解为闪烁时的亮度)。通道索引需与硬件原理图一致;未显式传通道时,多数接口默认使用通道 0。
2. 文件
- dxPwm.js
- libvbar-b-dxpwm.so
- 确保这 2 个文件包含在您项目根目录下的 dxmodules 子目录中
3. 依赖项
- 无
4. 兼容设备
兼容所有运行 dejaOS v2.0+ 且具有 PWM 硬件支持的设备。
5. 使用方法
基本用法
import pwm from "../dxmodules/dxPwm_new.js";
import logger from "../dxmodules/dxLogger.js";
import std from "../dxmodules/dxStd.js";
import * as os from "os";
// 初始化 PWM 通道
pwm.init(); // 通道 0
// 设置功率级别
let power = 0;
pwm.setPower(power);
os.sleep(500);
power = 50;
pwm.setPower(power);
os.sleep(300);
power = 0;
pwm.setPower(power);
os.sleep(500);
// 生成简单蜂鸣
pwm.beep({
delay: 50,
interval: 50,
count: 2,
});
// 使用预定义蜂鸣模式
pwm.pressBeep(); // 按键短蜂鸣
pwm.successBeep(); // 成功双短蜂鸣
pwm.failBeep(); // 失败长蜂鸣
pwm.warningBeep(); // 标准警告蜂鸣
PWM 驱动 LED(亮度与闪烁)
下列示例假设通道 0 为白光 LED、通道 1 为另一路(例如近红外),仅演示白光通道;多路时需对每个用到的通道分别 init。
import pwm from "../dxmodules/dxPwm_new.js";
import logger from "../dxmodules/dxLogger.js";
import * as os from "os";
// 通道号与硬件一致;init / setPower / beep 不传第二参数时,默认通道为 0
const CHANNEL_WHITE = 0;
const CHANNEL_NIR = 1; // 本示例未使用,多路灯时按通道分别初始化与调用
// 初始化该路 PWM(使用该通道前必须先 init)
let resp = pwm.init(CHANNEL_WHITE);
logger.info("PWM 初始化: " + resp);
// --- 恒亮:setPower(0–100) 调节占空比,接 LED 时即为亮度(0 熄灭,100 最亮)---
let power = 0;
pwm.setPower(power, CHANNEL_WHITE);
os.sleep(500);
power = 10; // 示例:较低亮度,可按观感与硬件调整
pwm.setPower(power, CHANNEL_WHITE);
os.sleep(2000);
power = 0;
pwm.setPower(power, CHANNEL_WHITE);
os.sleep(500);
// --- 闪烁:beep 在接蜂鸣器时发声;接 LED 时表现为“亮–暗–亮”的闪烁节奏 ---
// time:单次点亮时长(ms);interval:两次点亮之间的间隔(ms);count:闪烁次数;volume:闪烁时的等效亮度(0–100)
logger.info("双短闪演示(节奏类似两次短蜂鸣)");
pwm.beep(
{
time: 50,
interval: 50,
count: 2,
volume: 80,
},
CHANNEL_WHITE
);
6. API 参考
pwm.init(channel)
初始化指定的 PWM 通道。必须在该通道的任何其他 PWM 操作之前调用。
参数:
channel(number): 要初始化的 PWM 通道号,默认 0
返回值: object - 初始化结果对象
注意: 在使用指定通道的任何其他 PWM 函数之前必须调用此函数。
pwm.deinit(channel)
释放并清理指定的 PWM 通道。
参数:
channel(number): 要反初始化的 PWM 通道号,默认 0
返回值: boolean - 如果反初始化成功则为 true,否则为 false
抛出: 如果通道参数无效则抛出 Error