(十)树莓派3B+ node-rpio库的使用--button按钮操作

在《(六)树莓派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逻辑图。
这里写图片描述

按键销抖

这里写图片描述
代码里面有按键销抖操作,关于按键销抖可以看百度百科的解释。
按键销抖有软件和硬件两种方式去解决,这里采用的软件销抖。

实验效果

你可能感兴趣的:(树莓派学习记录)