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就想着玩一玩,没想到挺有意思的.其实树莓派能实现的功能,它大部分也可以,价格比派也便宜不少,舍不得买派的同学可以先买这个开发板玩一玩. 本文主要介绍了 ...
随机推荐
- 释放linux内存中的cache缓存
echo 3 > /proc/sys/vm/drop_caches 记一次 经常用 exp 导出oracle全量数据库,发现linux内存一直在减小没有释放,即使 oracle重启也不行,只有 ...
- IntelliJ:JUnit单元测试
0.参考 在Intellij IDEA中添加JUnit单元测试 - 唐啊唐囧囧 - 博客园 1.引言 JUnit是Java中很出名的一个单元测试,关于JUnit的具体介绍,可以看之前写的编写JUnit ...
- Java:IO流(二)——InputStream/OutputStream具体用法:FileXXXStream、ByteArrayXXXStream
1.说明 InputStream和OutputStream是Java标准库中最基本的IO流,它们都位于java.io包中,该包提供了所有同步IO的功能. 2.模块:java.io.InputStrea ...
- c/c++中sort函数用法
转载自博主:九江镇中https://www.cnblogs.com/jjzzx/ c++标准库里的排序函数的使用方法 I)Sort函数包含在头文件为#include<algorithm>的 ...
- 开机弹出一下Visual Studio Just-In-Time对话框的问题
开机弹出一下Visual Studio Just-In-Time对话框 开机弹出一下Visual studio just-in-time对话框,出现一下问题,且点击确定后又弹出第二个对话框, 解决方法 ...
- Comparator.comparing排序使用示例
Comparator.comparing排序使用示例 目录 Comparator.comparing排序使用示例 背景 实体类 示例一 示例二 背景 以前常用的排序方式是通过实现Comparator接 ...
- pandas 中dataframe的操作
先用pandas生成数据, import numpy as npimport pandas as pddf= pd.DataFrame(np.arange(30).reshape(6,5),colum ...
- vue 组件间的几种通信方式
Props配置 原理:通过props配置,进行父子组件间的通信,跨父子通信需要其他组件进行过渡. 使用: 传递方在标签中添加传递内容 <Son :newName="name" ...
- Java基础——StringBuilder的添加与反转方法
StringBuilder添加与反转方法 方法 返回对象 public StringBuilder append(任意类型) 添加任意参数数据,并返回对象本身,注意:返回的是对象本身,则调用过appe ...
- 内网渗透----Linux信息收集整理
一.基础信息收集 1.查看系统类型 cat /etc/issue cat /etc/*-release cat /etc/lsb-release cat /etc/redhat-release 2.内 ...