板载的状态LED灯,因为各种灰机的外壳有可能会被挡住看不到状态。那么我们也是可以用arduino板子来扩展实现外置,其实就是用328P芯片来实现。

这程序支持WS2812B的全彩LED灯。

默认的信号控制引脚是A1(15),LED数量是8个,你可以根据你的实际情况修改。

带FastLed类库的包下载

代码使用了FastLed的第三方类库可以自己下载

代码如下:

#include <Wire.h>
#include "FastLED.h" #define NUM_LEDS 8 // Data pin that led data will be written out over
#define DATA_PIN 15
// Clock pin only needed for SPI based chipsets when not using hardware SPI
//#define CLOCK_PIN 8 long lasttimeLED = ;
#define delayLED 10 //ms
long lasttimeCYC = ;
#define delayCYC 50 //ms CRGB leds[NUM_LEDS];
bool thergbled[] = {, , };
bool changeflag = false;
bool i2cflag = false;
#define downrate 1 void setup() {
Wire.begin(0x55); // join i2c bus with address
Wire.onReceive(receiveEvent); // register event
// Serial.begin(9600); // start serial for output
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS); // init LED
} void loop() { LED();
CYC(); } void LED() {
if ((millis() - lasttimeLED) > delayLED) {
lasttimeLED = millis();
// for (int i = 0; i < 8; i++) {
// leds[i] = CRGB(255 * thergbled[2], 255 * thergbled[1], 255 * thergbled[0]);
// }
if(i2cflag) {
leds[] = CRGB( * thergbled[], * thergbled[], * thergbled[]);
FastLED.show();
i2cflag = false;
changeflag = false; // skip CYC change since already update in this loop
}
else if(changeflag) {
FastLED.show();
changeflag = false;
}
}
} void CYC() {
if ((millis() - lasttimeCYC) > delayCYC) {
lasttimeCYC = millis();
for(int i=(NUM_LEDS-);i>=;i--) {
leds[i] = CRGB(leds[i-].r *downrate , leds[i-].g *downrate, leds[i-].b *downrate );
// leds[i+1] = leds[i];
}
changeflag = true;
}
} // function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany) { while ( Wire.available() >= ) { // loop through all but the last
int ledreg = Wire.read(); // receive byte as a regid
int ledval = Wire.read(); // receive byte as a ledcolorsonoff
// Serial.print(ledreg, HEX); // print the character
// Serial.print(" : "); // print the character
// Serial.println(ledval, HEX); // print the character
switch (ledreg) {
case 0x81:
thergbled[] = ledval; // B
break;
case 0x82:
thergbled[] = ledval; // G
break;
case 0x83:
thergbled[] = ledval; // R
i2cflag = true;
break;
default:
break;
}
}
}

PIXHAWK DIY LED扩展板的更多相关文章

  1. 自制廉价的LED+LCD型投影仪

    文档标识符:PROJECTOR_T-D-P6 作者:DLHC 最后修改日期:2020.7.30 本文链接:https://www.cnblogs.com/DLHC-TECH/p/PROJECTOR_T ...

  2. DIY远程控制开关(tiny6410+LED+yeelink+curl)

    上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...

  3. DIY PIXHAWK APM等飞控用的PPM转接板

    需要的硬件 一块arduino pro mini(推荐这个,比较小,当然如果你没有USB转转口的烧写工具买个ardunio nano板也是不错的,直接用USB线连接电脑就可以,用nano板要注意.它的 ...

  4. DIY PIXHAWK APM等飞控用的声纳

    代码: SR04 + ApmSonar.ino 打包下载 注意,使用到了SR04的类库. ApmSonar.ino // sr04 to apm I2c sonar // by panxu mail: ...

  5. DIY FSK RFID Reader

    This page describes the construction of an RFID reader using only an Arduino (Nano 3.0 was tested, b ...

  6. DIY智能家居——零基础入门篇

    概要 本文主要根据笔者从零开始接触硬件,以小白视角开启IoT探索,根据相关资料DIY一个温湿度传感器.后经过探索发现新大陆--Home Assistant&Homebridge,最终实现了一个 ...

  7. TurnipBit之DIY无线遥控智能小车

    一.准备工作 TurnipBit 开发板 2块 TurnipBit 扩展板 1块 数据线 1条 智能小车器件 1套 电机驱动模块(L298N) 1个 在线可视化编程 点击进入   二.思路设计   2 ...

  8. MicroPython教程之TPYBoard开发板DIY红外寻迹小车

    智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...

  9. TurnipBit口袋编程计算机:和孩子一起DIY许愿的流星

    听说对着流星许愿,许的愿望都会实现,虽然不知道这个说法是不是真的,但是流星还是很好看的,为了能一直看到流星,今天就自己做一个流星保存下来,想什么时候看,就什么时候看. 首先需要想象一下流星是什么样子的 ...

随机推荐

  1. ASP.NET 你必须知道的EF知识和经验

    原文:http://www.cnblogs.com/zhaopei/p/5721789.html

  2. 使用代理和block写一个alertView

    代理: MyAlertView.h: @property (nonatomic,assign)id delegate; @protocol MyAlertViewDelegate <NSObje ...

  3. node.js安装

    Node.js是一个基于Chrome JavaScript运行时建立的一个平台,用来方便地搭建快速的,易于扩展的网络应用Node.js借助事件驱动,非阻塞I/O模型变得轻量和高效,非常适合run ac ...

  4. Python for Infomatics 第12章 网络编程五(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.8 用urllib读取二进 ...

  5. NOI 题库 7084

    7084  迷宫问题 描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, ...

  6. Codeforces Round #107 (Div. 2)

    D题 并查集+组合 #include <iostream> #include <cstdio> #include <cstring> using namespace ...

  7. HTML结构化

    目的:为开发页面时有一套明确的页面结构化实施方案,提高开发效率: HTML结构化指的其实就是使用HTML语义化标签根据web标准书写具有明确结构逻辑的HTML代码的一种思路: 说白了重点就是:页面实际 ...

  8. oracle 数据库 时间差 年数、月数、天数、小时数、分钟数、秒数

    declare l_start date := to_date('2015-04-29 01:02:03', 'yyyy-mm-dd hh24:mi:ss'); l_end date := to_da ...

  9. JavaScript对寄生组合式继承的理解

    有关JavaScript的几种继承方式请移步JavaScript的几种继承方式 原型链的缺陷 SubType.prototype = new SuperType(); 这样做的话,SuperType构 ...

  10. split函数的实现

    split作为字符串分割函数非常有用,但在C++里面没有这个函数.自己实现一个分割函数: 1.遇到多个分隔符连在一起,则不做分割 2.()内的分隔符不起作用 3.如果只有(,没有)不影响分隔符 #in ...