Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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停止闪烁后,拔下树莓派的电源插头(或关闭其连接的电源线)。

如果在未正确关闭的情况下直接拔下电源,可能会导致内存卡损坏。

Raspberry Pi 3 with Breadboard. Simple LED circuit

查看上面电路的示意图。

  1. 在树莓派上,将第一根跳线的母端连接到 接地。您可以使用任何 GND 引脚。在本例中,我们使用了物理引脚9(GND,第5行,左列)
  2. 在面包板上,将第一根跳线的公端连接到右侧的 接地总线 列。面包板的整列都已连接,因此哪一行都可以。在本例中,我们将其连接到第1行
  3. 在树莓派上,将第二根跳线电缆的母端连接到 GPIO 引脚。在本例中,我们使用了物理引脚7(GPIO 4,第4行,左列)
  4. 在面包板上,将第二根跳线的公端连接到您选择的绑点行。在本例中,我们将其连接到第5行,A列
  5. 在面包板上,将电阻的一端连接到右侧的 接地总线 列。面包板的整列都已连接,因此哪一行都可以。在本例中,我们将其连接到第5行
  6. 在面包板上,将电阻的另一端连接到您选择的右侧绑点行。在本例中,我们使用了第5行,J列
  7. 在面包板上,将LED的阴极(最短的引脚)连接到您将电阻从 GND 连接到的同一绑点行。在本例中,我们使用了第5行,F列
  8. 在面包板上,将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次),然后再次关闭!


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.