资讯专栏INFORMATION COLUMN

nodejs和树莓派开发以及点亮RGB的LED灯代码

liuchengxu / 1501人阅读

摘要:前段时间集团举行前端比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。一个链接控制硬件的基础库,比如控制串口,和链接串口的设备进行通信等,他有很多版本,树莓派的版本见这里安装有点,麻烦。

前段时间集团举行前端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
}

更多内容详见我的博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/51006.html

相关文章

  • 树莓扩展板 sense HAT 相关接口

    摘要:表示磁场强度的值浮动轴的。操纵杆操纵事件描述操纵杆事件的元组。在发生事件之前阻止执行,然后返回一个表示发生的事件的。相关资料博客原文原文树莓派的一个入门项目来自官方的简介 从官方给的 api 文档中硬翻的... LED 模型 set_rotation 设置翻转角度 这个函数可以设置 led 的旋转角度 参数 类型 可选参数 描述 r Integer 0,90,180,270...

    王伟廷 评论0 收藏0
  • 第一课:超级hello Arduino.使用多种知识串联一个入门小项目,很适合初学第一课哟.

    摘要:开关旋钮电位器的实验视频已经购买开发版的同学开始上课来一场紧张刺激的之旅吧前言开发工具的下载安装使用都很简单我这里就不赘述了附上官方的说明跟着步骤来十分钟搞定相关连接下载官方为什么成为开发函数 ...

    philadelphia 评论0 收藏0
  • 单片机驱动能力对点亮LED影响

    摘要:可是在现实操作过程中总有一种方式出现问题,这就不得不提到现实情况下单片机的驱动能力对实验结果的影响。但是在现实中由于单片机驱动能力的影响往往第一种是无法点亮灯的。 一、LED灯与单片机的连接方式          在proteus仿真中,无论LED灯是负极连接IO端口,正极通过电阻连接VCC...

    learning 评论0 收藏0
  • 如何利用单片机控制一颗LED 闪烁

    摘要:点亮一颗灯是我们学习单片机入门的开始,今天目标的是利用单片机控制灯闪烁,下图是仿真电路图,图中单片机左边为系统的时钟电路和复位电路,右边是灯电路。包含头文件定义引脚,用来连接灯延时函数,实现对灯的亮灭延时控制点亮灯延时熄灭灯延时     点亮一颗LED灯是我们学习单片机入门的开始,今天目标的...

    LucasTwilight 评论0 收藏0
  • Ruff 1.2 | 使用JavaScript 快速开发智能硬件应用

    摘要:以为这样就又结束了当然不一个专为硬件开发而设计的运行时,开发者可使用快速开发智能硬件应用。为开发者提供统一的硬件资源的抽象,帮助开发者便捷管理。同时为不同板卡初始化项目,支持为不同的板卡进行硬件布局。 Ruff 开发套件到手,兴奋地打开盒子,跟着文档用 Ruff 点亮了一盏灯,蜂鸣器、LCD 、LED 、声音、光照、温湿度传感器,红外接收发送。 玩完这些模块就结束了?Ruff 还可以怎...

    printempw 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<