模块: GPIO
约 1411 字大约 5 分钟
2026-03-18
构建固件和导入到JS
gpio是一个内置 module,构建固件时不需要在 C++ 中 use 引入。
在JS中导入 gpio module:
import * as gpio from 'gpio'import gpio模块函数
函数 setMode
原型: setMode (pin:number, mode:string)
设置 GPIO 引脚的模式。
参数:
pin
类型number
参数说明引脚号
mode
类型string
参数说明引脚模式,支持 input|output|output-od|input-output|input-output-od
返回值:
类型undefined
函数 pull
原型: pull (pin:number, mode:string)
配置 GPIO 引脚的上拉或下拉模式。
参数:
pin
类型number
参数说明引脚号
mode
类型string
参数说明拉力模式,支持 up|down|updown|floating
返回值:
类型undefined
函数 write
原型: write (pin:number, value:number)
写入 GPIO 引脚电平。
参数:
pin
类型number
参数说明引脚号
value
类型number
参数说明输出电平,0 或 1
返回值:
类型boolean
说明设置成功返回 true,否则返回 false
函数 read
原型: read (pin:number)
读取 GPIO 引脚当前电平。
参数:
pin
类型number
参数说明引脚号
返回值:
类型number
说明当前电平值,0 或 1
函数 resetPin
原型: resetPin (pin:number)
重置 GPIO 引脚到默认状态。
参数:
pin
类型number
参数说明GPIO 引脚编号
返回值:
类型undefined
函数 watch
原型: watch (pin:number, edge:"rising"|"falling"|"both", callback:function)
监听引脚电平变化
注册一个回调函数,当指定引脚的电平发生变化时触发。
示例:
import * as gpio from "gpio"
// 监听上升沿(低电平变高电平)
gpio.watch(0, "rising", (pin, level) => {
console.log(`Pin ${pin} rising, level: ${level}`)
})
// 监听下降沿(高电平变低电平)
gpio.watch(0, "falling", (pin, level) => {
console.log(`Pin ${pin} falling, level: ${level}`)
})
// 监听双边沿(任何变化)
gpio.watch(0, "both", (pin, level) => {
console.log(`Pin ${pin} changed to ${level}`)
})
// 按钮检测示例
gpio.setMode(0, "input_pullup")
gpio.watch(0, "falling", () => {
console.log("Button pressed!")
})参数:
pin
类型number
参数说明GPIO 引脚号
edge
类型"rising", "falling", "both"
参数说明触发的边沿类型
callback
类型function
参数说明变化时调用的回调函数,参数为 (pin, level)
异常:
- 无效的边沿类型
- 回调不是函数
返回值:
undefined
函数 unwatch
原型: unwatch (pin:number, edge:"rising"|"falling"|"both", callback:function)
取消引脚电平变化监听
移除指定引脚和边沿类型的回调函数。
示例:
import * as gpio from "gpio"
function onRising(pin, level) {
console.log("Rising!")
}
// 注册监听
gpio.watch(0, "rising", onRising)
// 取消监听
gpio.unwatch(0, "rising", onRising)参数:
pin
类型number
参数说明GPIO 引脚号
edge
类型"rising", "falling", "both"
参数说明取消的边沿类型
callback
类型function
参数说明要移除的回调函数
异常:
- 无效的边沿类型
- 回调不是函数
返回值:
undefined
函数 blink
原型: blink (pin:number, time:number=1000)
GPIO 闪烁
使指定引脚持续高低电平切换(闪烁)。
示例:
import * as gpio from "gpio"
// LED 每秒闪烁一次(周期 2 秒)
const timerId = gpio.blink(2, 1000)
// 5 秒后停止闪烁
setTimeout(() => {
clearInterval(timerId)
gpio.write(2, 0) // 关闭 LED
}, 5000)
// 快速闪烁(100ms 周期)
gpio.blink(2, 100)参数:
pin
类型number
参数说明引脚序号
time
类型number
默认值1000
参数说明间隔时间(毫秒),闪烁的半周期
返回值:
类型number
说明定时器 id,可使用 clearInterval() 停止闪烁
