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许愿的流星
听说对着流星许愿,许的愿望都会实现,虽然不知道这个说法是不是真的,但是流星还是很好看的,为了能一直看到流星,今天就自己做一个流星保存下来,想什么时候看,就什么时候看. 首先需要想象一下流星是什么样子的 ...
随机推荐
- web请求的拦截与处理
1,特定请求的拦截:spring或struct2的拦截器,指定拦截模式和处理的servlet: 2,非特定的恶意非法请求,web.xml的error-page元素可以接受tomcat返回的错误代码,并 ...
- python 获取日期
转载 原文:python 获取日期 作者:m4774411wang python 获取日期我们需要用到time模块,比如time.strftime方法 time.strftime('%Y-%m-% ...
- 10月wish me luck
10/13 明天开始的三天 就要跟历史地理化学说拜拜了 以诚待之 好运 10/20 P三角形计数:一看就是叉积.因为去年迪子讲过.但是我已经忘记了.所以重新写了一遍.把所有的点有序化,将三角形面积转化 ...
- 虚拟主机Dede程序安装
1. 在网上下载最新版本DedeCMS 2. 将Dede程序通过FTP上传到主机上的htdocs目录. 3. 在主机控制台将程序解压到根目录. 4. 将解压后的 upload 目录下的文件全部移动到 ...
- 洛谷 P1529 回家 Bessie Come Home Label:Dijkstra最短路 && 乱搞
题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛). 在挤奶 ...
- Python In Action:二、 最小的GUI程序:麻雀虽小,五脏俱全
Python in Action第二个例子,倒是很简单,却是最基本的GUI程序框架,里面有最基本的实现GUI流程 import wx class MyApp(wx.App): def OnInit(s ...
- JavaScript、全选反选-课堂笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Windows 7无法卸载及安装IE11的解决方法
1. 清空 C:\Windows\TEMP\ 中的所有内容 2. 以管理员身份运行命令行,在命令中行输入下面的代码: FORFILES /P %WINDIR%\servicing\Packages ...
- KnockoutJS:
一.ko对象 js对象的改变都会导致viewmodel的变化,但view不一定变化 往ko对象里面push,viewmodel的变化,引起view的变化. 往js对象里面push,model的变化引起 ...
- PHP 使用 debug_print_backtrace() 或 debug_backtrace() 打印栈轨迹
<?php /* 使用debug_print_backtrace() 或 debug_backtrace() 打印栈轨迹 */ function fun1() { print "Hel ...