树莓派上的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的更多相关文章

  1. 树莓派.使用Node.js来制作一个作业检查仪

    先上图 前段时间, 花了点时间给女儿做了个数学习题的小程序 首页 做题界面(题目每次都随机生成, 加减乘除都有) 做题记录 现在问题来了, 怎么才能随时知道作业有没有完成呢? 每次打开做题记录页面刷新 ...

  2. 树莓派与node.js —— onoff、dht

    1. 发光二极管 tm-onoff var Gpio = require('tm-onoff').Gpio, led = new Gpio(17, 'out'), button = new Gpio( ...

  3. 树莓派安装node.js

    因为树莓派是arm架构,node.js上并没有提供arm架构的二进制包下载. 试过使用apt包管理安装和直接node.js源代码编译安装(编译了四五个小时...),都没有成功,报非法指令错误,预计还是 ...

  4. node.js控制请求处理数量

    问题: 现在有一个接口,这个接口用到了无头浏览器,总之是一个比较消耗内存的接口,并发上来后,这个接口会把服务器内存榨干,导致服务器宕机.现在在不加机器的情况下,并发上来后我该怎么做既能处理掉所有请求又 ...

  5. 《Node.js In Action》笔记之流程控制

    转向Javascript后,开始学习了node.js,选择的第一本书是<Node.js in Action> 将近一个月时间,断断续续看完,选几个点做下笔记 1.实现串行化流程控制 var ...

  6. Node.js中Async详解:流程控制

    安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 流程控制: 简化九种常见的流程的处理 集合 ...

  7. [js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义

    一.转义与非转义 jade模板文件代码: doctype html html head meta(charset='utf-8') title jade学习-by ghostwu body h3 转义 ...

  8. 树莓派.安装系统+Node.js+MongoDB系列环境

    1.先去树莓派官网下载最新的ROM https://www.raspberrypi.org/downloads/raspbian/ 这里选的是: RASPBIAN JESSIE WITH DESKTO ...

  9. 使用events.EventEmitter 控制Node.js 程序执行流程

    使用events.EventEmitter 控制Node.js 程序执行流程 标题写的可能也不太对,大家领会精神: Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. ...

随机推荐

  1. JAVA课程设计-计算器(201521123028 李家俊)

    1.团队课程设计博客链接 http://www.cnblogs.com/DevilRay/p/7064482.html 2.个人负责模板或任务说明 主要负责计算器图形界面 包括操作按钮,菜单项以及输出 ...

  2. PHP面向对象简单总结

    类和对象对象:一切东西都可以看做对象,对象是类的实例化.类:类是对象的抽象,用来描述众多对象共有的特征. 定义类 class成员变量 和 成员方法访问修饰符 public共有的 private 私有的 ...

  3. 使用electron将应用程序加入到系统托盘

    博主电脑

  4. Oracle_Sequence如何初始化开始值

    Sequence的start with 值如何确定才能保证生成的主键不会冲突??? 我的项目中最开始数据库表主键的生成策略是 increment,但由于后来采用了集群部署的方式,出现了主键冲突的问题. ...

  5. birt 报表设计总结

    1, 通过sql查询出来的数据,当某个字段没有值时,我们期望显示别的东东 在表格单元格或者网格中选中这个值, 在属性编辑器-->映射--> 在映射表中添加映射条件 映射中当使用 等于 时, ...

  6. 升级与修改Nginx

    自从上次安装了Nginx后,学到了很多新的东西,比如http2.0... 而且还发现nginx还出了新版本,遂决定升级下,还是那个URL,下载最新版. ./configure --user=www - ...

  7. 跨Storyboard调用

    在开发中我们会有这种需求从一个故事板跳到另一个故事板 modal UIStoryboard *secondStoryboard = [UIStoryboard storyboardWithName:@ ...

  8. 翻译连载 | 第 9 章:递归(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  9. ThinkPHP中,display和assign用法详解

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

  10. VC++:创建,调用Win32动态链接库

    VC++:创建,调用Win32动态链接库 概述 DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类.仓库的发展史经历 ...