Node.js 树莓派 GPIO - 闪烁 LED
使用GPIO输出
在本节中,我们将使用树莓派及其GPIO来使LED闪烁。
我们将使用Node.js和onoff模块来控制GPIO。
为了让LED灯亮起来,我们将一个GPIO引脚用作“输出”,并创建一个脚本使其打开和关闭(闪烁)。
我们需要什么?
在本节中,我们将创建一个简单的示例,在其中控制LED灯。
为此,您需要
单击上面列表中的链接以获取不同组件的描述。
注意: 您需要的电阻可能与我们使用的不同,具体取决于您使用的LED类型。大多数小型LED只需要一个小的电阻,大约200-500欧姆。使用什么确切的值通常并不重要,但是电阻值越小,LED就会越亮。
构建电路
现在是时候在我们的面包板上构建电路了。
如果您是电子学新手,建议您关闭树莓派的电源。并使用防静电垫或接地带,以免损坏它。
使用以下命令正确关闭树莓派
pi@w3demopi:~ $ sudo shutdown -h now
树莓派上的LED停止闪烁后,拔下树莓派的电源插头(或关闭其连接的电源线)。
如果在未正确关闭的情况下直接拔下电源,可能会导致内存卡损坏。
查看上面电路的示意图。
- 在树莓派上,将第一根跳线的母端连接到 接地。您可以使用任何 GND 引脚。在本例中,我们使用了物理引脚9(GND,第5行,左列)
- 在面包板上,将第一根跳线的公端连接到右侧的 接地总线 列。面包板的整列都已连接,因此哪一行都可以。在本例中,我们将其连接到第1行
- 在树莓派上,将第二根跳线电缆的母端连接到 GPIO 引脚。在本例中,我们使用了物理引脚7(GPIO 4,第4行,左列)
- 在面包板上,将第二根跳线的公端连接到您选择的绑点行。在本例中,我们将其连接到第5行,A列
- 在面包板上,将电阻的一端连接到右侧的 接地总线 列。面包板的整列都已连接,因此哪一行都可以。在本例中,我们将其连接到第5行
- 在面包板上,将电阻的另一端连接到您选择的右侧绑点行。在本例中,我们使用了第5行,J列
- 在面包板上,将LED的阴极(最短的引脚)连接到您将电阻从 GND 连接到的同一绑点行。在本例中,我们使用了第5行,F列
- 在面包板上,将LED的阳极(最长的引脚)连接到您将跳线从 GPIO 引脚连接到的同一绑点行。在本例中,我们使用了第5行,E列
您的电路现在应该已完成,并且您的连接应该与上面的插图非常相似。
现在是时候启动树莓派并编写Node.js脚本与它进行交互了。
树莓派和Node.js闪烁LED脚本
现在我们已经完成所有设置,可以编写一个脚本来打开和关闭LED。
首先,创建一个目录来存放我们的Node.js脚本
pi@w3demopi:~ $ mkdir nodetest
进入我们新创建的目录
pi@w3demopi:~ $ cd nodetest
现在,我们将使用Nano编辑器创建一个名为"blink.js
"的新文件
pi@w3demopi:~ $ nano blink.js
该文件现在已打开,可以使用内置的Nano编辑器进行编辑。
编写或粘贴以下代码
blink.js
var Gpio = require('onoff').Gpio; //包含onoff与GPIO交互
var LED = new Gpio(4, 'out'); //使用GPIO引脚4,并指定它是输出
var blinkInterval = setInterval(blinkLED, 250); //每250毫秒运行一次blinkLED函数
function blinkLED() { //开始闪烁的函数
if (LED.readSync() === 0) { //检查引脚状态,如果状态为0(或关闭)
LED.writeSync(1); //将引脚状态设置为1(打开LED)
} else {
LED.writeSync(0); //将引脚状态设置为0(关闭LED)
}
}
function endBlink() { //停止闪烁的函数
clearInterval(blinkInterval); //停止闪烁间隔
LED.writeSync(0); //关闭LED
LED.unexport(); //取消导出GPIO以释放资源
}
setTimeout(endBlink, 5000); //5秒后停止闪烁
按"Ctrl+x
"保存代码。用"y
"确认,并用"Enter
"确认名称。
运行代码
pi@w3demopi:~ $ node blink.js
现在LED应该闪烁5秒钟(10次),然后再次关闭!