60/Meter gehen und werden unterstützt. Ich habe selbst nur 30/Meter und kann leider keine Erfahrungen teilen. Hätte ich das zu schwache Netzteil (welches nur 30/meter ermöglicht) nicht schon gehabt, wäre ich auf 60/Meter gegangen. Wichtig ist, dass Du RGBNW für (natur/neutral weiß) nimmst.
habe die Unterhaltung erst jetzt gesehen. Freut mich, wenn Euch die Idee mit den iPhone Kurzbefehlen gefällt. Ist wohl so ne blindes Huhn Sache :D. Wie gesagt, ich bin noch totaler Linux Noob und kann Euch bei den Kommandos nicht helfen. Bei mir ist das auch immer mit gaaanz viel google + Trial&Error verbunden, wenn ich im CLI unterwegs bin. Danke @pclin
ich habe jetzt nochmal mit dem Wemos D1 Mini getestet und dort sind die Farben korrekt, nachdem ich den 4. Kanal getickt habe. Ich werde den Arduino dann einfach durch das Wemos ersetzen. Hatt dann auch den Vorteil, dass ich die Kommende Zweite Instanz identisch habe und es per WLED steuern kann, ohne den HTPC an haben zu müssen.
Danke Dir und nichts für Ungut!! Danke für Deine Unterstützung @TPmodding !!
Hi @TPmodding - vielen Dank. Keine Ahnung wie ich so auf der Leitung sitzen konnte.
Es scheint aber, dass nur ein RGB und kein RGBW Signal verarbeitet wird. Bei Grün zeigt er mir Grün, Blau, Rot abwechselnd. Ich habe Hyperion.ng komplett gelöscht und neu installiert um auszuschließen, dass noch alte Konfigurationen da sind.
ich habe 2* 5 Meter SK6812 LEDs bestellt und wollte sie diese Woche in Betrieb nehmen. Beide Rollen verhalten sich aber sehr komisch und ich nehme an, dass ich etwas falsch eingerichtet habe.
Ich möchte die LEDs mit einem Arduino Uno betreiben und habe den Sketch wie folgt angepasst und aufgespielt. Ich war eigentlich frohen Mutes es hinzubekommen, aber jetzt hänge ich doch wieder
Code
#include "FastLED.h"
#define ANALOG_MODE_AVERAGE 0
#define ANALOG_MODE_LAST_LED 1
/**************************************
S E T U P
set following values to your needs
**************************************/
#define INITIAL_LED_TEST_ENABLED true
#define INITIAL_LED_TEST_BRIGHTNESS 32 // 0..255
#define INITIAL_LED_TEST_TIME_MS 500 // 10..
// Number of leds in your strip. set to "1" and ANALOG_OUTPUT_ENABLED to "true" to activate analog only
// As of 26/1/2017:
// 582 leaves ZERO bytes free and this
// 410 is ok
// tested with 500 leds and is fine (despite the warning)
#define MAX_LEDS 108
// type of your led controller, possible values, see below
#define LED_TYPE SK6812
// 3 wire (pwm): NEOPIXEL BTM1829 TM1812 TM1809 TM1804 TM1803 UCS1903 UCS1903B UCS1904 UCS2903 WS2812 WS2852
// S2812B SK6812 SK6822 APA106 PL9823 WS2811 WS2813 APA104 WS2811_40 GW6205 GW6205_40 LPD1886 LPD1886_8BIT
// 4 wire (spi): LPD8806 WS2801 WS2803 SM16716 P9813 APA102 SK9822 DOTSTAR
// For 3 wire led stripes line Neopixel/Ws2812, which have a data line, ground, and power, you just need to define DATA_PIN.
// For led chipsets that are SPI based (four wires - data, clock, ground, and power), both defines DATA_PIN and CLOCK_PIN are needed
// DATA_PIN, or DATA_PIN, CLOCK_PIN
#define LED_PINS 6 // 3 wire leds
//#define LED_PINS 6, 13 // 4 wire leds
#define COLOR_ORDER RGB // colororder of the stripe, set RGB in hyperion
#define OFF_TIMEOUT 15000 // ms to switch off after no data was received, set 0 to deactivate
// analog rgb uni color led stripe - using of hyperion smoothing is recommended
// ATTENTION this pin config is default for atmega328 based arduinos, others might work to
// if you have flickering analog leds this might be caused by unsynced pwm signals
// try other pins is more or less the only thing that helps
#define ANALOG_OUTPUT_ENABLED false
#define ANALOG_MODE ANALOG_MODE_LAST_LED // use ANALOG_MODE_AVERAGE or ANALOG_MODE_LAST_LED
#define ANALOG_GROUND_PIN 8 // additional ground pin to make wiring a bit easier
#define ANALOG_RED_PIN 9
#define ANALOG_GREEN_PIN 10
#define ANALOG_BLUE_PIN 11
// overall color adjustments
#define ANALOG_BRIGHTNESS_RED 255 // maximum brightness for analog 0-255
#define ANALOG_BRIGHTNESS_GREEN 255 // maximum brightness for analog 0-255
#define ANALOG_BRIGHTNESS_BLUE 255 // maximum brightness for analog 0-255
#define BRIGHTNESS 255 // maximum brightness 0-255
#define DITHER_MODE BINARY_DITHER // BINARY_DITHER or DISABLE_DITHER
#define COLOR_TEMPERATURE CRGB(255,255,255) // RGB value describing the color temperature
#define COLOR_CORRECTION TypicalLEDStrip // predefined fastled color correction
//#define COLOR_CORRECTION CRGB(255,255,255) // or RGB value describing the color correction
// Baudrate, higher rate allows faster refresh rate and more LEDs
//#define serialRate 460800 // use 115200 for ftdi based boards
#define serialRate 115200 // use 115200 for ftdi based boards
//#define serialRate 500000 // use 115200 for ftdi based boards
/**************************************
A D A L I G H T C O D E
no user changes needed
**************************************/
// Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data
uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;
unsigned long endTime;
// Define the array of leds
CRGB leds[MAX_LEDS];
// set rgb to analog led stripe
void showAnalogRGB(const CRGB& led) {
if (ANALOG_OUTPUT_ENABLED) {
byte r = map(led.r, 0,255,0,ANALOG_BRIGHTNESS_RED);
byte g = map(led.g, 0,255,0,ANALOG_BRIGHTNESS_GREEN);
byte b = map(led.b, 0,255,0,ANALOG_BRIGHTNESS_BLUE);
analogWrite(ANALOG_RED_PIN , r);
analogWrite(ANALOG_GREEN_PIN, g);
analogWrite(ANALOG_BLUE_PIN , b);
}
}
// set color to all leds
void showColor(const CRGB& led) {
#if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
LEDS.showColor(led);
#endif
showAnalogRGB(led);
}
// switch of digital and analog leds
void switchOff() {
#if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
memset(leds, 0, MAX_LEDS * sizeof(struct CRGB));
FastLED.show();
#endif
showAnalogRGB(leds[0]);
}
// function to check if serial data is available
// if timeout occured leds switch of, if configured
bool checkIncommingData() {
boolean dataAvailable = true;
while (!Serial.available()) {
if ( OFF_TIMEOUT > 0 && endTime < millis()) {
switchOff();
dataAvailable = false;
endTime = millis() + OFF_TIMEOUT;
}
}
return dataAvailable;
}
// main function that setups and runs the code
void setup() {
Serial.begin(serialRate);
// analog output
if (ANALOG_OUTPUT_ENABLED) {
// additional ground pin to make wiring a bit easier
pinMode(ANALOG_GROUND_PIN, OUTPUT);
digitalWrite(ANALOG_GROUND_PIN, LOW);
pinMode(ANALOG_BLUE_PIN , OUTPUT);
pinMode(ANALOG_RED_PIN , OUTPUT);
pinMode(ANALOG_GREEN_PIN, OUTPUT);
}
int ledCount = MAX_LEDS;
if (ANALOG_MODE == ANALOG_MODE_LAST_LED) {
ledCount--;
}
#if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
FastLED.addLeds<LED_TYPE, LED_PINS, COLOR_ORDER>(leds, ledCount);
#endif
// color adjustments
FastLED.setBrightness ( BRIGHTNESS );
FastLED.setTemperature( COLOR_TEMPERATURE );
FastLED.setCorrection ( COLOR_CORRECTION );
FastLED.setDither ( DITHER_MODE );
// initial RGB flash
#if INITIAL_LED_TEST_ENABLED == true
for (int v=0;v<INITIAL_LED_TEST_BRIGHTNESS;v++)
{
showColor(CRGB(v,v,v));
delay(INITIAL_LED_TEST_TIME_MS/2/INITIAL_LED_TEST_BRIGHTNESS);
}
for (int v=0;v<INITIAL_LED_TEST_BRIGHTNESS;v++)
{
showColor(CRGB(v,v,v));
delay(INITIAL_LED_TEST_TIME_MS/2/INITIAL_LED_TEST_BRIGHTNESS);
}
#endif
showColor(CRGB(0, 0, 0));
Serial.print("Ada\n"); // Send "Magic Word" string to host
boolean transmissionSuccess;
unsigned long sum_r, sum_g, sum_b;
// loop() is avoided as even that small bit of function overhead
// has a measurable impact on this code's overall throughput.
for(;;) {
// wait for first byte of Magic Word
for (i = 0; i < sizeof prefix; ++i) {
// If next byte is not in Magic Word, the start over
if (!checkIncommingData() || prefix[i] != Serial.read()) {
i = 0;
}
}
// Hi, Lo, Checksum
if (!checkIncommingData()) continue;
hi = Serial.read();
if (!checkIncommingData()) continue;
lo = Serial.read();
if (!checkIncommingData()) continue;
chk = Serial.read();
// if checksum does not match go back to wait
if (chk != (hi ^ lo ^ 0x55)) continue;
memset(leds, 0, MAX_LEDS * sizeof(struct CRGB));
transmissionSuccess = true;
sum_r = 0;
sum_g = 0;
sum_b = 0;
int num_leds = min ( MAX_LEDS, (hi<<8) + lo + 1 );
// read the transmission data and set LED values
for (int idx = 0; idx < num_leds; idx++) {
byte r, g, b;
if (!checkIncommingData()) {
transmissionSuccess = false;
break;
}
r = Serial.read();
if (!checkIncommingData()) {
transmissionSuccess = false;
break;
}
g = Serial.read();
if (!checkIncommingData()) {
transmissionSuccess = false;
break;
}
b = Serial.read();
leds[idx].r = r;
leds[idx].g = g;
leds[idx].b = b;
#if ANALOG_OUTPUT_ENABLED == true && ANALOG_MODE == ANALOG_MODE_AVERAGE
sum_r += r;
sum_g += g;
sum_b += b;
#endif
}
// shows new values
if (transmissionSuccess) {
endTime = millis() + OFF_TIMEOUT;
#if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
FastLED.show();
#endif
#if ANALOG_OUTPUT_ENABLED == true
#if ANALOG_MODE == ANALOG_MODE_LAST_LED
showAnalogRGB(leds[MAX_LEDS-1]);
#else
showAnalogRGB(CRGB(sum_r/MAX_LEDS, sum_g/MAX_LEDS, sum_b/MAX_LEDS));
#endif
#endif
}
}
} // end of setup
void loop() {
// Not used. See note in setup() function.
}
Alles anzeigen
Ich kann die LEDs bedingt steuern - bspw. die Helligkeit in der App verändern. Sie blinken aber unkontrolliert und bunt. Auch wenn kein Signal anliegt.
Bei einer Kette, habe ich bereits die erste LED getrennt und die nächste gelötet, um auch das auszuschließen. Ich glaube, dass ich die Lötstellen gar nicht sooo schlecht hingekommen habe.
Muss ich irgendwo die vierte, weiße, LED konfigurieren? Ich habe zumindest keine Einstellung dafür gefunden.
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
So the content is playing though the RPi (LibreELEC+Kodi) which is connected through an AVR...? This would work and you won't need anything else.. In case you want the content is playing from any other set top box, you will need a HDMI splitter and external grabber. At least from my understanding. But I can't help you in that regard, I'm afraid.
hi @medic459 if you only want to have the lights working for Kodi content, you need LEDs and a proper power supply. This obviously neither includes the TV signal coming from the internal tuner, nor any other external source. If you want to have the lights shining for regular TV signal, you need TVheadend in addition. You can configure within Hyperion which grabber should be used. You would use the internal (Kodi) grabber in your case.
I also use a very simple config (x86 HTPC with LibreELEC (Kodi grabber) + Arduino UNO + WS2801 LEDs + PSU). I have chosen the 4-wire WS2801 as I always used these, thanks to the nice community here, I would use sk6812 neutral white nowadays. They have a fourth neutral white LED which lead to proper colors. My 55" used 4,x meters of LEDs (total 110 @ 30/meter).
@pclin HyperionControl schaue ich mir dann an, wenn die zweite Instanz passt Danke für den Hinweis !
Ich hab Dir mal Screenshots angehängt, wie ich die Kurzbefehle bei mir eingerichtet habe. Weil ich ein noob bin, hatte ich mir die Befehle zusammengegoogelt Aber Hauptsache es funzt. Die Kommandos sind Dir ja bestens bekannt, schätze ich.
Bei manchen Inhalten möchte ich kein Hyperion und so kann ich es einfach aus/an schalten
ich habe nun soweit das Wemos D1 Mini board und die alten WS2801 LEDs vorbereitet und es funktioniert soweit sehr gut.
Wie bringe ich das ganze aber zur zweiten Instanz in Hyperion (Classic). Mir fehlt hier irgendwie der Zusammenhang. Ich würde gerne alle 50 LEDs als zweite Instanz unter meinem kommenden Lowboard montieren und nur den unteren Bildrand abbilden. In Hypercon muss ich wahrscheinlich UDP auswählen und die IP angeben, oder? Aber wie kann ich die Farben kalibrieren? ich kann ja nicht per SSH auf das Wemos zugreifen?
Die Farbkalibrierung könnte ich auch aus der alten Konfigurationsdatei (anbei) herausnehmen, die LED Anordnung natürlich nicht.
Soll ich das ganze lieber gleich auf Hyperion.ng aufbauen? Meine Hauptinstallation basiert noch auf Classic, ich habe aber Alpha 6 auf einer zweiten USB-Stick-Installation am laufen.
I finally managed to run Hyperion.NG Alpha6 in a test setup. Hyperion runs on LibreELEC with Adalight (Arduino Uno R3) and WS2801 LEDs.
Very pleasing GUI btw - NICE JOB!!
I tried to transfer the color calibration information from my Hyperion Classic config which did not work out. And as the wizard wasn't working (could not klick on continue under MacOS), I re-calibrated manually with the pictures of this thread: https://hyperion-project.org/wiki/Farbkalibrierung. It seems however, that NG does handle the calibration a kind of different, doesn't it? At least the gamma values start from a lower point. With Hyperion Cclassic the colors fit a lot better with 30% desaturation. May I ask the more experienced guys here how to handle this in NG? Are you decreasing the RGB color values for all colors to get the same result?
Thank you
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen.Weitere InformationenSchließen