首页 > 代码库 > PIXHAWK DIY LED扩展板
PIXHAWK DIY LED扩展板
板载的状态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 8long lasttimeLED = 0;#define delayLED 10 //mslong lasttimeCYC = 0;#define delayCYC 50 //msCRGB leds[NUM_LEDS];bool thergbled[3] = {0, 0, 0};bool changeflag = false;bool i2cflag = false;#define downrate 1void 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[0] = CRGB(255 * thergbled[2], 255 * thergbled[1], 255 * thergbled[0]); 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-1);i>=1;i--) { leds[i] = CRGB(leds[i-1].r *downrate , leds[i-1].g *downrate, leds[i-1].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() >= 2 ) { // 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[0] = ledval; // B break; case 0x82: thergbled[1] = ledval; // G break; case 0x83: thergbled[2] = ledval; // R i2cflag = true; break; default: break; } }}
PIXHAWK DIY LED扩展板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。