树莓派.使用Node.js控制GPIO
树莓派上的40个GPIO是最好玩的东西
它们可以被C,/C++, Python, Java等语言直接控制
现在就来看看怎么用Node.js做到同样的事情
在试验之前, 请先安装好Node.js, 具体可以移步到: <树莓派.安装系统+Node.js+MongoDB系列环境>
1.准备试验文件夹
mkdir /home/pi/Documents/test-gpio-demo/
2.创建文件package.json
{
"name": "test-gpio-demo",
"version": "0.0.1",
"dependencies":{
"rpio2":"0.4.1"
}
}
3.创建主文件blank.js
//blink.js
const Gpio = require('/home/pi/Documents/test-gpio/node_modules/rpio2/lib/index.js').Gpio;
var led = new Gpio(); //创建 P36 引脚 led.open(Gpio.OUTPUT, Gpio.LOW); //设置为 OUTPUT、默认低电平 for(var i = ; i < ; i++){
led.toggle(); //切换 led 的电平状态
led.sleep(); //等待 500ms
} led.close();
4.硬件电路连接

第36脚(GPIO16) 经过一个电阻(220欧或1K都可以),再接到LED的正级
LED负级接到第34脚(GND)
5.试运行
node /home/pi/Documents/test-gpio-demo/blank.js
闪灯效果:
亮灯

灭灯:

试验成功!
===============================分隔线=========================
rpio2常规用法: Synchronously
const Gpio = require('./lib/index.js').Gpio;
const gpio = new Gpio();
gpio.open(Gpio.OUTPUT);
for(var i = ; i < ; i++){
gpio.toggle();
gpio.sleep();
}
gpio.close();
Asynchronously
const Gpio = require('../lib/index.js').Gpio;
const gpio = new Gpio();
gpio.open(Gpio.OUTPUT);
void function loop(){
Promise.resolve(gpio.toggle())
.then(gpio.sleep.bind(null, , true))
.then(loop)
}();
process.on("SIGINT", function(){
gpio.close();
console.log('shutdown!');
process.exit();
});
Toggle with button
const Gpio = require('../lib/index.js').Gpio;
const button = new Gpio();
const output = new Gpio();
button.open(Gpio.INPUT);
output.open(Gpio.OUTPUT, Gpio.LOW);
//button down
button.on('rising', function(){
output.toggle();
});
process.on("SIGINT", function(){
button.close();
output.close();
console.log('shutdown!');
process.exit();
});
树莓派.使用Node.js控制GPIO的更多相关文章
- 树莓派.使用Node.js来制作一个作业检查仪
先上图 前段时间, 花了点时间给女儿做了个数学习题的小程序 首页 做题界面(题目每次都随机生成, 加减乘除都有) 做题记录 现在问题来了, 怎么才能随时知道作业有没有完成呢? 每次打开做题记录页面刷新 ...
- 树莓派与node.js —— onoff、dht
1. 发光二极管 tm-onoff var Gpio = require('tm-onoff').Gpio, led = new Gpio(17, 'out'), button = new Gpio( ...
- 树莓派安装node.js
因为树莓派是arm架构,node.js上并没有提供arm架构的二进制包下载. 试过使用apt包管理安装和直接node.js源代码编译安装(编译了四五个小时...),都没有成功,报非法指令错误,预计还是 ...
- node.js控制请求处理数量
问题: 现在有一个接口,这个接口用到了无头浏览器,总之是一个比较消耗内存的接口,并发上来后,这个接口会把服务器内存榨干,导致服务器宕机.现在在不加机器的情况下,并发上来后我该怎么做既能处理掉所有请求又 ...
- 《Node.js In Action》笔记之流程控制
转向Javascript后,开始学习了node.js,选择的第一本书是<Node.js in Action> 将近一个月时间,断断续续看完,选几个点做下笔记 1.实现串行化流程控制 var ...
- Node.js中Async详解:流程控制
安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 流程控制: 简化九种常见的流程的处理 集合 ...
- [js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义
一.转义与非转义 jade模板文件代码: doctype html html head meta(charset='utf-8') title jade学习-by ghostwu body h3 转义 ...
- 树莓派.安装系统+Node.js+MongoDB系列环境
1.先去树莓派官网下载最新的ROM https://www.raspberrypi.org/downloads/raspbian/ 这里选的是: RASPBIAN JESSIE WITH DESKTO ...
- 使用events.EventEmitter 控制Node.js 程序执行流程
使用events.EventEmitter 控制Node.js 程序执行流程 标题写的可能也不太对,大家领会精神: Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. ...
随机推荐
- Java实现Map集合二级联动
Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息时, ...
- Eclipse读取含有extjs的项目文件时卡死或者编写ExtJS时卡
新建一个Eclipse或MyEclipse项目时,关掉验证. 项目右键-->Properties-->Builders--> 不勾选(JavaScript Validator.Val ...
- Spring-Hibernate-web的延迟加载方案
1,现象与问题 /** * 由于Hibernate存在延迟加载问题,当Dao事务提交之后,session就关闭: * 此时如果到显示层就没有办法获取对象,使用openSessionInViewer是解 ...
- Spring-Struts2-基本集成
步骤: 1,导入struts2的相关jar包(检查是否有冲突的包,即同一个包有不同的几个版本存在) 2,导入struts2和spring的整合包 struts2-spring-plugin-2.3.4 ...
- Linux Ubuntu从零开始部署web环境及项目 -----部署项目 (三)
上一篇讲了如何在linux搭建web环境,这边将如何部署项目. 1,打包项目包 2,上传项目包 将.war项目包通过xftp上传到tomcat目录wabapps目录下 3,启动项目 通过xshell命 ...
- node.js的generic-pool与mysql结合,mysql连接池
var generic_pool = require('generic-pool'); var pool = generic_pool.Pool({ name: 'mysql', ma ...
- python之gui-tkinter可视化编辑界面 自动生成代码
首先提供资源链接 http://pan.baidu.com/s/1kVLOrIn#list/path=%2F
- AnsiString和String的区别、使用
16.C/C++语言在CB中的一些特定用法 2)AnsiString是从Delphi中引进来的吗? 答:CB的核心组件VCL是用Object Pascal语言写出的,所以CB的VCL组件的属性有很多都 ...
- Cow Exhibition 变种背包
Cow Exhibition Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- SQL Server Compact/SQLite Toolbox 使用
最近一个嵌入式的数据库用的SqlCe 需要导入到Sqlite, 网上查到了这个工具--SQL Server Compact/SQLite Toolbox.但是在使用的时候遇到了一点小曲折,记录下来给需 ...