PIXHAWK DIY LED扩展板
板载的状态LED灯,因为各种灰机的外壳有可能会被挡住看不到状态。那么我们也是可以用arduino板子来扩展实现外置,其实就是用328P芯片来实现。
这程序支持WS2812B的全彩LED灯。
默认的信号控制引脚是A1(15),LED数量是8个,你可以根据你的实际情况修改。

代码使用了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扩展板的更多相关文章
- 自制廉价的LED+LCD型投影仪
文档标识符:PROJECTOR_T-D-P6 作者:DLHC 最后修改日期:2020.7.30 本文链接:https://www.cnblogs.com/DLHC-TECH/p/PROJECTOR_T ...
- DIY远程控制开关(tiny6410+LED+yeelink+curl)
上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...
- DIY PIXHAWK APM等飞控用的PPM转接板
需要的硬件 一块arduino pro mini(推荐这个,比较小,当然如果你没有USB转转口的烧写工具买个ardunio nano板也是不错的,直接用USB线连接电脑就可以,用nano板要注意.它的 ...
- DIY PIXHAWK APM等飞控用的声纳
代码: SR04 + ApmSonar.ino 打包下载 注意,使用到了SR04的类库. ApmSonar.ino // sr04 to apm I2c sonar // by panxu mail: ...
- DIY FSK RFID Reader
This page describes the construction of an RFID reader using only an Arduino (Nano 3.0 was tested, b ...
- DIY智能家居——零基础入门篇
概要 本文主要根据笔者从零开始接触硬件,以小白视角开启IoT探索,根据相关资料DIY一个温湿度传感器.后经过探索发现新大陆--Home Assistant&Homebridge,最终实现了一个 ...
- TurnipBit之DIY无线遥控智能小车
一.准备工作 TurnipBit 开发板 2块 TurnipBit 扩展板 1块 数据线 1条 智能小车器件 1套 电机驱动模块(L298N) 1个 在线可视化编程 点击进入 二.思路设计 2 ...
- MicroPython教程之TPYBoard开发板DIY红外寻迹小车
智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...
- TurnipBit口袋编程计算机:和孩子一起DIY许愿的流星
听说对着流星许愿,许的愿望都会实现,虽然不知道这个说法是不是真的,但是流星还是很好看的,为了能一直看到流星,今天就自己做一个流星保存下来,想什么时候看,就什么时候看. 首先需要想象一下流星是什么样子的 ...
随机推荐
- Gym100947E || codeforces 559c 组合数取模
E - Qwerty78 Trip Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u S ...
- OpenGL光照和颜色
OpenGL光照和颜色 转自:http://www.cnblogs.com/kekec/archive/2011/08/16/2140789.html OpenGL场景中模型颜色的产生,大致为如下的流 ...
- springboot 的dataSource 一些配置
参考: https://segmentfault.com/a/1190000004316491
- onselectstart="return false"
以前在做图片滚动时,在双击左右箭头,快速切换图片滚动时,会选择附近区域的文字,感觉不是很好,今天在查资料时,讲到了这个问题, 试了一下,不错,解决了问题. IE及Chrome下的方法一样,对相应的元素 ...
- #20145205 《Java程序设计》第10周学习总结
教材学习内容总结 教材学习内容总结 Java的网络编程 •网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. •java.net包中J2SE的API包含有类和接口,它们提供低 ...
- PostGr-SQL 基本概念
http://wenjiesu.iteye.com/blog/801129 [什么是schema?] 究竟什么是schema?这个问题困扰了我很久. 我们只讨论数据库中的schema,而不讨论XML中 ...
- 关于string.format() 转
string.format()函数用来生成具有特定格式的字符串,这个函数有两个参数,第一个参数为格式化串:由指示符和控制格式的字符组成.第二个参数是对应格式中每个代号的各种数据. 格式字符串可能包含以 ...
- spring接收json格式的多个对象参数(变通法)
两种方法 方法1 如果使用spring mvc同客户端通信,完全使用json数据格式,需要如下定义一个RequestMapping @Controller public class TestContr ...
- iscoll制作顶部可以左右滑动的tab
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 线程中调用python win32com
在python的线程中,调用win32com.client.Dispatch 调用windows下基于COM组件的应用接口, 需要在调用win32com.client.Dispatch前,调用pyth ...