Hi,
hab mal bissle was gebastelt damit ich nicht noch ne externe Status-LED kaufen muss
Funktioniert im Prinzip wie die Originale nur das man auch ganze Leisten mit ansteuern könnte.
Im Moment hab ich nur 4 LED's dran, die erste verhält sich wie die originale, die anderen 3 sind die erste in die drei farben aufgespittet (also nur Rot, nur Grün und nur Blau).
Desweiteren lassen sich auch normale LED's anklemmen (Einzelne oder eine RGB-LED).
EDIT: kleines update (dimmen bei eingestecktem usb, wie das org.)
hab mal bissle was gebastelt damit ich nicht noch ne externe Status-LED kaufen muss
Funktioniert im Prinzip wie die Originale nur das man auch ganze Leisten mit ansteuern könnte.
Im Moment hab ich nur 4 LED's dran, die erste verhält sich wie die originale, die anderen 3 sind die erste in die drei farben aufgespittet (also nur Rot, nur Grün und nur Blau).
Desweiteren lassen sich auch normale LED's anklemmen (Einzelne oder eine RGB-LED).
PHP:
#include "FastSPI_LED2.h"
#include <Wire.h>
#define NUM_LEDS 4
#define SLAVE_ADDRESS 0x55
struct CRGB {
byte g;
byte r;
byte b;
};
struct CRGB leds[NUM_LEDS];
WS2811Controller800Mhz<12> LED;
const int ledR = 9;
const int ledG = 10;
const int ledB = 11;
const int led13 = 13;
void setup() {
LED.showRGB((byte*)leds, NUM_LEDS);
LED.init();
Wire.begin(SLAVE_ADDRESS);
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
Serial.begin(38400);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
}
void loop() {
delay(500);
}
void requestEvent() {
Wire.write(0);
Wire.write(0);
Wire.write(0);
}
void receiveEvent(int bytes) {
byte data[6];
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
if (data[1]) {
digitalWrite(ledB, HIGH);
digitalWrite(led13, HIGH);
} else {
digitalWrite(ledB, LOW);
digitalWrite(led13, LOW);
}
if (data[3]) {
digitalWrite(ledG, HIGH);
} else {
digitalWrite(ledG, LOW);
}
if (data[5]) {
digitalWrite(ledR, HIGH);
} else {
digitalWrite(ledR, LOW);
}
leds[3].b = data[1] * 17;
leds[2].g = data[3] * 17;
leds[1].r = data[5] * 17;
leds[0].r = leds[1].r;
leds[0].g = leds[2].g;
leds[0].b = leds[3].b;
LED.showRGB((byte*)leds, NUM_LEDS);
Serial.print(data[0]);
Serial.print(" ");
Serial.print(data[1]);
Serial.print(" ");
Serial.print(data[2]);
Serial.print(" ");
Serial.print(data[3]);
Serial.print(" ");
Serial.print(data[4]);
Serial.print(" ");
Serial.println(data[5]);
}
Zuletzt bearbeitet: