nodejs和树莓派开发以及点亮RGB的LED灯代码
前段时间集团举行前端IOT比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。
先介绍一些树莓派的入门教程
ssh链接树莓派
ssh pi@dd.dd.dd.dd(ip)
密码:raspberry
设置显示设备
推荐选购3.5吋或者5吋的HDMI显示设备,我第一次买的3.2吋的串口显示器,占用了我20个串口的针脚。
设备链接见这里
使用3.5吋显示器
cd /boot/LCD-show/
./LCD35-show
使用HDMI输出
cd /boot/LCD-show/
./LCD-hdmi
设置旋转屏幕
设置显示方向
安装完触摸驱动后,可以通过运行以下命令修改屏幕旋转方向。
旋转0度:
cd /boot/LCD-show/
./LCD35-show 0
旋转90度:
cd /boot/LCD-show/
./LCD35-show 90
旋转180度:
cd /boot/LCD-show/
./LCD35-show 180
旋转270度:
cd /boot/LCD-show/
./LCD35-show 270
声音设置为非HDMI输出
Bash
sudo amixer cset numid=3 1
需要注意的是如果你是浏览器播放声音。。拔掉显示器后貌似浏览器就进入后台模式不播放声音了。
介绍一些相关的nodejs的库
https://github.com/rwaldron/j...
一个适配各种板子的串口的基础库,当你需要点亮LED小灯泡的时候需要用到它
Raspi-io
Raspi-io is a Firmata API compatible library for Raspbian running on the Raspberry Pi that can be used as an I/O plugin with Johnny-Five.
和上面一个库搭配使用。
rpio
https://github.com/jperkin/no...
This is a high performance node.js addon which provides access to the Raspberry Pi GPIO interface, supporting regular GPIO as well as i²c, PWM, and SPI.
一个控制打开某个串口针脚的基础库。
serialport
https://github.com/EmergingTe...
一个链接控制硬件的基础库,比如控制USB串口,和链接USB串口的设备进行通信等,他有很多版本,树莓派的版本见这里
https://www.npmjs.com/package...
安装有点,麻烦。我折腾了3小时、、、、
点亮一个LED灯
LED灯分为简单的两个针脚的二极管灯,点亮见前面阮一峰博客,下面重点介绍一下RGB的LED灯
如上所示。这样的灯点亮的教程比较少。
第一步选择对应的串口针脚,首先不要把插针脚2,即:+5V口那个。
我插了两个分别是RGB为:[29,31,33],[36,38,40]
代码如下
var five = require("johnny-five");
var Raspi = require('raspi-io')
var rpio = require('rpio');
var isLED1On=false;
var isLED2On=false;
var LED = {
LED1:null,
LED2:null,
init(LED1=[29,31,33],LED2=[36,38,40]){
var board = new five.Board({
io:new Raspi({enableSoftPwm:true})
});
this.LED1=LED1;
this.LED2=LED2
board.on('ready',function(){
return new Promise(function(resolve,reject){
var led1 = new five.Led.RGB({
pins: {
red: `P1-${LED1[0]}`,
green: `P1-${LED1[1]}`,
blue:`P1-${LED1[2]}`,
}
})
var led2 = new five.Led.RGB({
pins: {
red: `P1-${LED2[0]}`,
green: `P1-${LED2[1]}`,
blue:`P1-${LED2[2]}`,
}
})
// 打开 11 号针脚(GPIO17) 作为输出
rpio.open(LED1[0], rpio.OUTPUT);
rpio.open(LED1[1], rpio.OUTPUT);
rpio.open(LED1[2], rpio.OUTPUT);
rpio.open(LED2[0], rpio.OUTPUT);
rpio.open(LED2[1], rpio.OUTPUT);
rpio.open(LED2[2], rpio.OUTPUT);
rpio.open(LED1[0], rpio.HIGH);
rpio.open(LED1[1], rpio.HIGH);
rpio.open(LED1[2], rpio.HIGH);
resolve(board);
})
})
},
openLED1(){
console.log('led1'+JSON.stringify(this))
rpio.write(this.LED1[0], rpio.HIGH);
rpio.write(this.LED1[1], rpio.HIGH);
rpio.write(this.LED1[2], rpio.HIGH);
isLED1On=true;
},
openLED2(){
rpio.write(this.LED2[0], rpio.HIGH);
rpio.write(this.LED2[1], rpio.HIGH);
rpio.write(this.LED2[2], rpio.HIGH);
isLED2On=true;
},
closeLED1(){
console.log('led1'+JSON.stringify(this))
rpio.write(this.LED1[0], rpio.LOW);
rpio.write(this.LED1[1], rpio.LOW);
rpio.write(this.LED1[2], rpio.LOW);
isLED1On=false;
},
closeLED2(){
rpio.write(this.LED2[0], rpio.LOW);
rpio.write(this.LED2[1], rpio.LOW);
rpio.write(this.LED2[2], rpio.LOW);
isLED2On=false;
},
flashLED1(){
if(isLED1On){
return;
}
var self = this;
self.openLED1();
setTimeout(function () {
self.closeLED1();
},3000);
},
flashLED2(){
if(isLED2On){
return;
}
var self = this;
self.openLED2();
setTimeout(function () {
self.closeLED2()
},3000);
},
}
module.exports={
led:LED
}
更多内容详见我的博客
nodejs和树莓派开发以及点亮RGB的LED灯代码的更多相关文章
- 树莓派GPIO控制RGB彩色LED灯
树莓派GPIO通过PWM来控制RGB彩色LED灯,可以显示任何我们想要的颜色. RGB模块简介 这个RGB彩色LED里其实有3个灯,分别是红灯.绿灯和蓝灯.控制这三个灯分别发出不同强度的光,混合起来就 ...
- Ardunio控制RGB的LED灯显示彩虹渐变色.
由于我使用的是共阴极的RGB LED,如果你的是共阳极的,接线的时候要注意一下. 其他没什么不同 //定义RGB色彩的输出I/O ; ; ; //标记颜色变化的方式,增加值还是减小值 bool red ...
- 01 Arduino-点亮一盏LED灯
01 硬件连接 图片比较丑 特别说明:一般默认为二极管灯的压降是 2V 均值电流为15ma,所以如果接在5V的电源上面,串联接的电阻值为200欧姆左右,可做适当调整 切记不允许把LED灯直接并联在5 ...
- 点亮第一个LED灯
1.代码: #include <reg52.h> //<reg51.h> 包含52单片机寄存器库sbit led = P1^0; //只有地址可以被8整除的 才可以用s ...
- 树莓派 使用python来操作GPIO 控制LED灯
一.创建python驱动和控制GPIO 先新建一个文件夹用于放置脚本 mkdir python_gpio 进入文件夹内新建一个gpio_blink.py的脚本 cd python_gpio touch ...
- 74HC595点亮8个LED灯
一.原理介绍 595有两个寄存器,都是8位的,如下所示: 595是串入并出带有锁存功能移位寄存器,它的使用方法简单: - - 在正常使用时 /SCLR接高电平,/G接低电平. - - 从SER每输 ...
- 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯
1 前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...
- 嵌入式linux——点亮led灯(二)
刚才在jz2440板子上写了一个点亮中间led的程序,前前后后十几分钟才好.最终代码 本节内容: 1. 汇编点灯 2. C点灯 3. 参数选择点灯 4. 按键点灯 1. 汇编点灯 .text .glo ...
- NodeMCU手把手入门:配置NodeMCU ESP8266开发板环境及点亮LED灯
之前一直在玩树莓派,最近实验室买了些NodeMCU就想着玩一玩,没想到挺有意思的.其实树莓派能实现的功能,它大部分也可以,价格比派也便宜不少,舍不得买派的同学可以先买这个开发板玩一玩. 本文主要介绍了 ...
随机推荐
- Go基础知识梳理(二)
Go基础知识梳理(二) 简单函数的定义 //有参数有返回值 func sum(a int, b int) int { return a + b } //无返回值 func sum(a int, b i ...
- FaE:基于符号知识的适应性和可解释的神经记忆
原创作者 | 朱林 论文解读: Facts as Experts: Adaptable and Interpretable Neural Memory over Symbolic Knowledge ...
- Spring源码解析之八finishBeanFactoryInitialization方法即初始化单例bean
Spring源码解析之八finishBeanFactoryInitialization方法即初始化单例bean 七千字长文深刻解读,Spirng中是如何初始化单例bean的,和面试中最常问的Sprin ...
- web -- ssrf
web学习之SSRF 最开始玩ctf接触的就是web但是随着开始逐渐专注于pwn,在加之web的知识体系本来就繁杂,所以准备写一期关于web大体的知识 day1 SSRF SSRF(Server-Si ...
- 浅浅的聊一下 WebSocket
第一次看到 ws:// 和 wss:// 时候,感觉好高级啊,还有这种协议. Websocket 历史 WebSocket是在2008年6月诞生的1.经由IEFT标准化后,2009年chrome 4第 ...
- centeros7 定时任务
crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...
- 常用的公共 DNS 服务器 IP 地址
转载自:小哈龙 2019-04-12 09:34:42 公共 DNS 服务器 IP 地址 名称 DNS 服务器 IP 地址 阿里 AliDNS 223.5.5.5 223.6.6.6 CNNIC SD ...
- 程序语言与编程实践2-> 蓝桥杯C/C++备赛记录1 | 入门了解与首周训练
寒假前班主任帮我们报了名,是得好好准备准备.作为一个CSer,coding能力一定不能太弱.我反思,好久没写C/C++代码了,净是些随手写的python脚本,刚开始上手题目bug一大堆. 由于也不是啥 ...
- 为什么 TCP 链接需要三次握手,两次不可以么,为什么?
两次握手 三次握手
- ES学习总结
1.创建索引 put localhost:9200/person 2.添加数据 put localhost:9200/person/_doc/1 { "first_name" : ...