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

前段时间集团举行前端IOT比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。

先介绍一些树莓派的入门教程

阮一峰的树莓派入门

微雪电子-树莓派硬件中文官网

ssh链接树莓派

ssh [email protected](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 i2c, 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.cnblogs.com/10manongit/p/12219834.html

时间: 2024-10-08 06:06:01

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

[MSP430DriverLib-1]使用库开发并点亮第一个LED灯

???? MSP430DriverLib库下载地址:http://www.ti.com/tool/MSPDRIVERLIB ???? 下载后进入driverlib文件夹,选择对应的型号,这里我选择的是MSP430F5xx_6xx,进入后将里面的文件都复制到你的msp430工程目录下即可.这里我将要复制的文件都放在DriverLib文件夹里. ???? 这里我用的是TI的MSP430F5529 LaunchPad Evaluation Kit的板子.首先我们来点亮第一个LED,以下为源代码: #i

2016.12.12 点亮第一个LED灯

一.keil编译程标准流程 注意事项: 1.建立的 工程 和 .c文件 文件名一样. 二.LED模块图 三.点亮第一个LED灯代码:    

使用keil SDK方式点亮mini2440的led灯

最近在使用mini2440做开发,网上很多教程和实际操作不太一致,导致入门花费时间长.经过整理,目前mini2440点亮led灯方法有,keil mdk,linux环境编译,使用minitools下载即可. mini2440分为nor flash和nand flash两种,一般小于4k程序可以直接运行,大于4K的程序需要预先加载引导程序,从存储位置拷贝至内存中.下面来说说mini2440究竟是如何点亮led灯的. 方法一:使用keil mdk的方式,首先下载MDK,使keil包含s3c2440这

Ardunio控制RGB的LED灯显示彩虹渐变色.

由于我使用的是共阴极的RGB LED,如果你的是共阳极的,接线的时候要注意一下. 其他没什么不同 //定义RGB色彩的输出I/O int redPin = 11; int greenPin = 10; int bluePin = 9; //标记颜色变化的方式,增加值还是减小值 bool redBool =false; bool greenBool=true; bool blueBool=false; //颜色值,初始化为0,127,255 int redVal =0; int greenVal=

第七章主要讲的是控制发光二极管的驱动程序,用来控制开发板上的4个led灯

首先讲了led驱动的实现原理,linux驱动并不是直接向硬件的内存中写数据,而是与本机的i/o内存进行交互,每一个连接linux的硬件在i/o内存中都会有映射首地址. 编写驱动程序,先创建led驱动的设备文件: 1.使用cdev_init函数初始化cdev 描述设备文件需要一个cdev的结构体,cdev的大多是成员变量并不需要我们去初始化,只要调用cdev_init函数就可以初始化大部分cdev的成员变量 2.指定设备号 Linux 的设备的文件号分为 主设备号和此设备号,设备号有两种指定方法:

第8课 点亮第一个LED灯

8.1 点亮LED 硬件连接图, 由硬件图可知,当175引脚GPIO[0]输出为0时,LED点亮,当GPIO[0]输出为1时,LED就熄灭,GPIO寄存器的基地址为0x8000d000,下图为用到的几个寄存器的偏移地址 首先,选中GPIO引脚, *((unsigned short *)(0x8000d000+0x00)) = 0x5555; *((unsigned short *)(0x8000d000+0x04)) = 0x5555; 然后,GPIO[0]作为输出,其余的引脚置为输入. *((

BlinkLED 点亮第一个LED灯(C#)

界面: <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBox Name="infoText" Text="Ready" FontSize="50" HorizontalAlignment="Center" VerticalAlignment="Center&q

BlinkLED 点亮第一个LED灯

import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(25,GPIO.OUT) while True: GPIO.output(25,GPIO.HIGH) time.sleep(0.5) GPIO.output(25,GPIO.LOW) time.sleep(0.5)

GPIO接口及点亮第一个LED灯

一.GIPIO介绍 General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C.SMBus或SPI接口简化了I/O口的扩展.当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能. 1.GPIO的优点 低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA). 集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作.