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许愿的流星
听说对着流星许愿,许的愿望都会实现,虽然不知道这个说法是不是真的,但是流星还是很好看的,为了能一直看到流星,今天就自己做一个流星保存下来,想什么时候看,就什么时候看. 首先需要想象一下流星是什么样子的 ...
随机推荐
- 【转】有关Oracle随机字符串的生成方法及具体应用
Oracle生成随机字符串的方法是通过dbms_random.string实现的. 1.dbms_random.string用法Oracle官方文档参考链接:http://download.oracl ...
- Leetcode Permutations
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...
- Leetcode Valid Number
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- Easyui的Dialog的toolbar的自定义添加
最近一直在写快速定制Web表格,基于Easyui,整个过程使用了大量的Easyui的dialog,每个dialog的代码大部分都雷同,感觉代码出现了很大程度的重复,然后想写一个通用的dialog设置函 ...
- windows环境 andorid JNI开发
1.下载并安装GNUstep 下载地址:http://www.gnustep.org/experience/Windows.html 安装文件 a.GNUstep MSYS System b.GN ...
- Odoo中本日、本月、上月过滤器实现方法
<filter string="今日订单" name="today" invisible="0" domain="[('da ...
- JavaScript之闭包就是个子公司
在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,有 ...
- 微信分享JS函数(原创)[已失效]
//微信内置浏览器分享事件 //来自:http://www.cnblogs.com/cielwater //分享朋友圈事件 //UpdateWeixinJSBridge(CircleModel[Jso ...
- 学习笔记_springmvc返回值、数据写到页面、表单提交、ajax、重定向
数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView("index", map ...
- sun公司的jstl标签库
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...