首页 > 编程语言 >树莓派新手入门教程 - node下使用gpio

树莓派新手入门教程 - node下使用gpio

时间:2023-02-15 12:02:21浏览次数:48  
标签:node 11 树莓 led img js 新手入门 LED rpio


[b]安装 Node[/b]

为了运行 Node 脚本,树莓派必须安装 Node,可以参考[url=http://thisdavej.com/beginners-guide-to-installing-node-js-on-a-raspberry-pi/#install-node]这篇文章[/url]。

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install nodejs


正常情况下,Node 版就已经安装成功了。


$ node -v
v8.1.0



[b]点亮 LED[/b]


树莓派提供了一组对外的 IO 接口,称为 GPIO( 通用 IO 接口,General-purpose input/output)。


[img]http://dl2.iteye.com/upload/attachment/0128/2747/9db6aa2d-0587-3bfb-b144-ead520fdeb85.png[/img]


它的 40 个脚的定义如下图。


[img]http://dl2.iteye.com/upload/attachment/0128/2749/b99f6350-8a0e-39d9-b860-951e70634375.png[/img]


注意,左上角的第1针(3.3V)是一个方块,其他针脚都是圆的。将树莓派翻过来,背后可以看到 GPIO 有一个角是方的,通过这种方法就可以确认哪一个针眼是3.3V。


[img]http://dl2.iteye.com/upload/attachment/0128/2751/08ddb0c7-d395-3228-b141-d965c2bca1ec.jpg[/img]


通过 GPIO ,树莓派可以与其他电子元件连接。下面根据 Jonathan Perkin 的文章,使用树莓派连接 LED 二极管。



这里需要用到面包板。本质上,面包板就是几根导线,上面开了许多可以连到导线的孔。


[img]http://dl2.iteye.com/upload/attachment/0128/2753/5cfd310a-1eec-3325-b7b2-20c1b801b99a.jpg[/img]


+极和-极是两根垂直的导线,标着1、5、10这些数字的行,每一行都是一根水平的导线。导线与导线之间互不连接,另外,面包板的左右两半也是互不连接的。



然后,按照下面的图,将树莓派、面包板、LED 灯、电阻连起来。


[img]http://dl2.iteye.com/upload/attachment/0128/2755/9ed8473f-de94-30df-b07b-5e541c9713cf.jpg[/img]


上图中,红色导线表示电流的正极,从 GPIO 的第1针(3.3V)连到面包板。黑色导线表示电流的负极,从 GPIO 第三排的第6针(ground)连到面包板。它们连到面包板的哪个眼并不重要,但必须保证能组成一个完整的电路(上图的箭头流向)。注意,LED 二极管也有正负极,长脚表示正极,短脚表示负极。电阻没有正负极。



连接完成后,打开树莓派的电源,LED 应该就会亮起来了。



[b]LED 控制脚本[/b]


下面,我们使用 Node 脚本控制 LED。



首先,将正极的导线从1号针脚(3.3V)拔出,插到第6排的11号针脚(上图的 GPIO 17)。这个针脚的电流是脚本可以控制的。



然后,在树莓派上新建一个实验目录,并安装控制 GPIO 的 Node 模块rpio。。


$ mkdir led-demo && cd led-demo
$ npm init -y
$ npm install -S rpio


接着,新建一个脚本led-on.js。


// led-on.js
var rpio = require('rpio');

// 打开 11 号针脚(GPIO17) 作为输出
rpio.open(11, rpio.OUTPUT);

// 指定 11 号针脚输出电流(HIGH)
rpio.write(11, rpio.HIGH);


运行这个脚本,应该就会看到 LED 灯泡变亮了。


$ node led-on.js


再新建一个led-off.js脚本,只要改一行(完整代码看[url=https://github.com/ruanyf/rpio-led-demo/blob/master/led-off.js]这里[/url])。


// led-off.js
//...

// 指定 11 号针脚停止输出电流(LOW)
rpio.write(11, rpio.LOW);


运行这个脚本,LED 灯泡应该就会熄灭了。


$ node led-off.js


有了这两个脚本,让 LED 闪烁就轻而易举了。新建一个led-blink.js脚本。


// led-blink.js
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);

function blink() {
rpio.write(11, rpio.HIGH);
setTimeout(function ledoff() {
rpio.write(11, rpio.LOW);
}, 50);
}

setInterval(blink, 100);


上面的脚本让 LED 每秒闪烁10次。


$ node led-blink.js


[b]HTTP 服务器[/b]


通过控制 LED 可以做很多事,比如架设一个 HTTP 服务器,每当有人访问,LED 就闪烁一下。



首先,在刚才的目录里面装一个服务器模块。


$ npm install -S server


然后,新建一个脚本server.js(完整代码看[url=https://github.com/ruanyf/rpio-led-demo/blob/master/serve.js]这里[/url])。


// server.js
var server = require('server');
var { get } = server.router;

// ...

server({ port: 8080 }, [
get('/' , ctx => {
console.log('a request is coming...');
blink();
}),
]);

console.log('server starts on 8080 port');


运行这个脚本。


$ node server.js


然后,再打开一个命令行终端,访问8080端口,LED 就会闪一下。


$ curl http://localhost:8080

标签:node,11,树莓,led,img,js,新手入门,LED,rpio
From: https://blog.51cto.com/u_15955464/6059086

相关文章

  • CentOS7中通过二进制文件与配置环境变量的方式安装Node
    场景Node官网下载地址:​​Download|Node.js​​下载64位二进制文件。注:博客:​​BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_博客-C#,SpringBoot,架构之路领域博主​​关注......
  • CentOS7中通过npm的方式安装Node-RED
    场景Node-RED简介与Windows上安装、启动和运行示例:​​Node-RED简介与Windows上安装、启动和运行示例_BADAO_LIUMANG_QIZHI的博客上面是在Windows上安装node-red,如果要在Ce......
  • CentOS7中后台运行Node-RED(关闭窗口也能访问服务)
    场景CentOS7中通过npm的方式安装Node-RED:​​CentOS7中通过npm的方式安装Node-RED-霸道流氓​​CentOS7中通过npm的方式安装Node-RED_BADAO_LIUMANG_QIZHI的博客​上面运......
  • CentOS7中使用PM2设置Node-RED开机自启动
    场景CentOS7中后台运行Node-RED(关闭窗口也能访问服务):​​CentOS7中后台运行Node-RED(关闭窗口也能访问服务)_BADAO_LIUMANG_QIZHI的博客在上面设置Node-RED后台启动后怎样......
  • CentOS7中使用编译github源码方式离线安装Node-RED
    场景Windows上编译github源码方式运行Node-RED,以及离线迁移安装Node-RED:​​Windows上编译github源码方式运行Node-RED,以及离线迁移安装Node-RED_BADAO_LIUMANG_QIZHI的博......
  • node版本更换出现The "from" argument must be of type string. Received undefined;E
    使用--force或--legacy-peer-deps可解决这种情况。--force会无视冲突,并强制获取远端npm库资源,当有资源冲突时覆盖掉原先的版本。--legacy-peer-deps标志是在v7中引入的,......
  • node.js 定时任务/重复任务
    文章目录​​git​​​​参数​​​​定时任务​​​​每天0点执行一次数据统计任务​​​​每半个小时执行一次数据统计任务​​​​重复任务​​​​指定执行时间氛围​​......
  • node.js 发送邮件
    constnodemailer=require("nodemailer");lettransporter=null;asyncfunctioncreateMailServer(){transporter=nodemailer.createTransport({host:"......
  • node增删改查
    文章目录​​INSERT​​​​SELECT​​​​DELETE​​​​UPDATE​​INSERTconstapp=express();app.use(express.json());//forparsingapplication/jsonapp.use(expr......
  • node mysql 增删改查 demo
    前端原生jsJquery后端Node数据库MySQL​​​http://hongbin.xyz:8080/​​​​github仓库​​​​演示视频地址​​node增删改查TODO:删除用户数据库需要触发器将......