在《(六)树莓派3B+ node-rpio库的使用–点亮LED》中使用的GPIO的输出功能,点亮一个LED。这次实验的button按钮的操作。
LED正极接排针的第40引脚;
button按钮接排针的第38引脚。
var rpio = require('rpio');
var led_pin = 40; // 定义 排针的第40引脚接LED正极
var button_pin = 38; // 定义 排针的第38引脚接按钮
rpio.open(led_pin, rpio.OUTPUT,rpio.LOW);
rpio.open(button_pin, rpio.INPUT, rpio.PULL_UP); // 上拉 输入
// 检测按钮 按下
function buttonPressed() {
while(1){
if (rpio.read(button_pin) == rpio.LOW) { // 检测到 低电平
rpio.msleep(20); // 按钮销抖
if (rpio.read(button_pin) == rpio.LOW) {
rpio.write(led_pin, rpio.HIGH); // 点亮LED
}
} else {
rpio.write(led_pin, rpio.LOW); // 按钮熄灭
}
}
}
buttonPressed();
LED的那个引脚的设置就没什么好说的了。这里介绍一下按钮的引脚为什么设置成上拉输入。设置成上拉输入,引脚上就加了一个上拉电阻,那么引脚就默认是高电平,当再去读取这个引脚的时候,就可以检测到低电平了。下面是BCM2835的GPIO逻辑图。
代码里面有按键销抖操作,关于按键销抖可以看百度百科的解释。
按键销抖有软件和硬件两种方式去解决,这里采用的软件销抖。