Hallo miteinander.
Vorweg. Enigmalight ist klasse! Dank dem tollen Plugin und vielen begeisterten Nutzern bzw. Interessenten war es mir möglich innerhalb von "gerade mal" 5 Tagen ein funktionsfähiges System aufzusetzen.
Hierfür musste ich aber viel, viel ausprobieren und googlen. Ich war schon kurz davor aufzugeben. Zu Beginn falsche LEDs gekauft etc.
Aber genug davon, ich habe noch ein kleines Problem bei dem mir die Community evtl. weiterhelfen kann.
Zunächst zu meinem Setup:
Ich nutze Enigmalight (b12) mit einem Xtrend ET9200 + Arduino + WS2812 LEDs (92 Stück).
Die Verkabelung habe ich von dem Tutorial von Tweaking4All übernommen. Also Data mit dem programmierten Port des Arduino verbunden. Und ein 5V 2A Netzteil mit dem 5V bzw. GND Kabel verbunden. Außerdem führt eine Abzweigung von GND zum Arduino.
Folgendes Script läuft auf dem Arduino:
#include <FastLED.h>
#define NUM_LEDS 156
#define DATA_PIN 6
#define SERIALRATE 500000
#define BLACK_THRESHOLD 20
#define BLACK CRGB(0,0,0)
#define CALIBRATION_TEMPERATURE TypicalLEDStrip // Color correction
#define MAX_BRIGHTNESS 255 // 0-255
CRGB incomes[NUM_LEDS];
CRGB leds[NUM_LEDS];
// Boblight Config Prefix
static const uint8_t prefix[] = {0x41, 0x64, 0x61, 0x00, 0x18, 0x4D};
void setup()
{
delay(1000);
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setTemperature( CALIBRATION_TEMPERATURE );
FastLED.setBrightness( MAX_BRIGHTNESS );
Serial.begin(SERIALRATE);
}
void loop()
{
for(byte p = 0; p < sizeof prefix; ++p)
{
waitLoop:
while (!Serial.available());
if(prefix[p] == Serial.read()) continue;
p = 0;
goto waitLoop;
}
Serial.readBytes((char*)incomes, NUM_LEDS*3);
for( int i = 0; i < NUM_LEDS; i++)
{
CRGB *led = leds+i;
CRGB *income = incomes+i;
if( (*income).getAverageLight() < BLACK_THRESHOLD )
{
*led = BLACK;
}
else
{
//(*led).nscale8_video(127); // 50% from previous
//(*income).nscale8_video(127); // 50% from current
//(*led) += (*income);
(*led) = (*income);
}
}
FastLED.show();
// Drain the serial buffer (fixes flickering issue)
while(Serial.available()>0){ Serial.read(); }
}
Alles anzeigen
Zunächst habe ich das auf Tweaking4All aufgeführte Skript t4a_boblight.ino verwendet. Dies hat jedoch zu einem starken Flackern der LEDs geführt.
In den Kommentaren zu dem Tutorial konnte ich nun dieses Skript finden, welches soweit auch gut läuft.
Ich musste allerdings zwei Zeilen auskommentieren, da diese zu einer Fehlermeldung führten:
#define CALIBRATION_TEMPERATURE TypicalLEDStrip // Color correction
FastLED.setTemperature( CALIBRATION_TEMPERATURE );
So weit so gut. Alles funktioniert, die Farben sind wunderbar kräftig, die LEDs leuchten in der richtigen Reihenfolge, die enigmalight.conf funktioniert.
Nun aber folgendes Problem. Die LEDs leuchten zu "hart" auf, also die Übergänge zwischen Farben sind extrem abgehackt. Stelle ich die Min-Helligkeit auf einen höheren Wert sind die LEDs ja standardmäßig weiß. Dadurch fällt das nicht so sehr auf. Jedoch ist das nicht Sinn der Übung.
Hat sonst noch jemand das gleiche Problem oder konnte das Problem lösen?
Grüße