Hyperion APA102 Arduino
-
Bonjour à tous
J'essaie d'améliorer ma borne récalbox avec la nouvelle fonction intégrée Hyperion mais j'avoue patauger un peu...
J'ai un ruban LED de 5m APA102 avec 4 fils, un arduino UNO et un peu de patience (quoique de moins en moins !)
Comme j'utilise les GPIO de mon Rpi3 pour mes boutons et joysticks, je n'ai pas la possibilité d'utiliser les pin 19 et 23 car prises par les boutons START#1 et UP#2.
J'ai donc décider de brancher un arduino en USB de façons a ce que l'hyperion de la recalbox le pilote par cette interface.
J'ai chargé la librairie fastled 3.1.6 et chargé le programme suivant :
#include "FastLED.h"
// How many leds in your strip?
#define NUM_LEDS 300// For led chips like Neopixels, 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), like the LPD8806 define both DATA_PIN and CLOCK_PIN
#define DATA_PIN 6
#define CLOCK_PIN 13#define COLOR_ORDER RGB
// 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;// Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)
#define serialRate 460800// Define the array of leds
CRGB leds[NUM_LEDS];void setup() {
// Uncomment/edit one of the following lines for your leds arrangement.
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // initial RGB flash LEDS.showColor(CRGB(255, 0, 0)); delay(500); LEDS.showColor(CRGB(0, 255, 0)); delay(500); LEDS.showColor(CRGB(0, 0, 255)); delay(500); LEDS.showColor(CRGB(0, 0, 0)); Serial.begin(serialRate); Serial.print("Ada\n"); // Send "Magic Word" string to host
}
void loop() {
// wait for first byte of Magic Word
for(i = 0; i < sizeof prefix; ++i) {
waitLoop: while (!Serial.available()) ;;
// Check next byte in Magic Word
if(prefix[i] == Serial.read()) continue;
// otherwise, start over
i = 0;
goto waitLoop;
}// Hi, Lo, Checksum
while (!Serial.available()) ;;
hi=Serial.read();
while (!Serial.available()) ;;
lo=Serial.read();
while (!Serial.available()) ;;
chk=Serial.read();// if checksum does not match go back to wait
if (chk != (hi ^ lo ^ 0x55))
{
i=0;
goto waitLoop;
}memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
// read the transmission data and set LED values
for (uint8_t i = 0; i < NUM_LEDS; i++) {
byte r, g, b;
while(!Serial.available());
r = Serial.read();
while(!Serial.available());
g = Serial.read();
while(!Serial.available());
b = Serial.read();
leds[i].r = r;
leds[i].g = g;
leds[i].b = b;
}
// shows new values
FastLED.show();
}
J'ai chargé une conf hypercon en paramétrant ttyUSB0 (port sur lequel l'arduino est reconnu vu dans dmesg)Le problème c'est que mes leds s'allument et changent de couleur de manière aléatoire mais ca n'a pas vraiment de sens...
Est ce que quelque chose saute aux yeux des utilisateurs plus avertis dans ma conf ?
Merci !
-
![Bonjour,
Je me réponds à moi même (vu l'engouement généré par mon post !), j'en ai profité pour apprendre à présenter correctement mon post avec les balises markdown si spécifiques à ce forum
Après avoir testé différents programmes arduino qui faisaient planter le contrôleur du ruban LED, j'ai fini par trouver je crois le bon compromis pour arriver à mes fins ! Cela fait maintenant plusieurs heures de jeux et de film et le ruban répond parfaitement !
La prochaine étape est de remettre la vitre qui cache mon écran en mettant un film translucide pour diffuser la lumière des LED de manière plus harmonieuse. J'ajouterai aussi un fond blanc derrière pour maximiser la réverbération de la lumière... To be continued !
J'ai programmé mon arduino Uno avec le script suivant (dispo ici)
Puis j'ai paramétré Hypérion avec Hypercon à l'aide de ce tutorial. En adaptant les sections en fonction de mon nombre de LED etc... Je vous mets mon fichier en dessous du programme arduino, si ça peut éviter de galérer comme je l'ai fait
Vidéos des tests :
Test 1
https://www.youtube.com/watch?v=rIc5GLOregQTest 2
https://www.youtube.com/watch?v=mNXFrbEYtDYPhotos :
Code Arduino Uno :
#include "FastLED.h" // How many leds in your strip? #define NUM_LEDS 91 // For led chips like Neopixels, 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), like the LPD8806 define both DATA_PIN and CLOCK_PIN #define DATA_PIN 11 #define CLOCK_PIN 13 #define COLOR_ORDER RGB // 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; // Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf) #define serialRate 115200 // Define the array of leds CRGB leds[NUM_LEDS]; void setup() { // Uncomment/edit one of the following lines for your leds arrangement. FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN>(leds, NUM_LEDS); // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // initial RGB flash //LEDS.showColor(CRGB(255, 0, 0)); //delay(500); //LEDS.showColor(CRGB(0, 255, 0)); //delay(500); //LEDS.showColor(CRGB(0, 0, 255)); //delay(500); //LEDS.showColor(CRGB(0, 0, 0)); Serial.begin(serialRate); Serial.print("Ada\n"); // Send "Magic Word" string to host } void loop() { // wait for first byte of Magic Word for(i = 0; i < sizeof prefix; ++i) { waitLoop: while (!Serial.available()) ;; // Check next byte in Magic Word if(prefix[i] == Serial.read()) continue; // otherwise, start over i = 0; goto waitLoop; } // Hi, Lo, Checksum while (!Serial.available()) ;; hi=Serial.read(); while (!Serial.available()) ;; lo=Serial.read(); while (!Serial.available()) ;; chk=Serial.read(); // if checksum does not match go back to wait if (chk != (hi ^ lo ^ 0x55)) { i=0; goto waitLoop; } memset(leds, 0, NUM_LEDS * sizeof(struct CRGB)); // read the transmission data and set LED values for (uint8_t i = 0; i < NUM_LEDS; i++) { byte r, g, b; while(!Serial.available()); r = Serial.read(); while(!Serial.available()); g = Serial.read(); while(!Serial.available()); b = Serial.read(); leds[i].r = r; leds[i].g = g; leds[i].b = b; } // shows new values FastLED.show(); }
Config Hyperion
// Automatically generated configuration file for Hyperion ambilight daemon // Notice: All values are explained with comments at our wiki: wiki.hyperion-project.org (config area) // Generated by: HyperCon (The Hyperion deamon configuration file builder) // Created with HyperCon V1.03.3 (22.10.2017) { // DEVICE CONFIGURATION "device" : { "name" : "MyHyperionConfig", "type" : "adalight", "output" : "/dev/ttyUSB0", "rate" : 115200, "delayAfterConnect" : 0, "colorOrder" : "bgr" }, // COLOR CALIBRATION CONFIG "color" : { "channelAdjustment" : [ { "id" : "default", "leds" : "*", "pureRed" : { "redChannel" : 255, "greenChannel" : 0, "blueChannel" : 0 }, "pureGreen" : { "redChannel" : 0, "greenChannel" : 255, "blueChannel" : 0 }, "pureBlue" : { "redChannel" : 0, "greenChannel" : 0, "blueChannel" : 255 } } ], "temperature" : [ { "id" : "default", "leds" : "*", "correctionValues" : { "red" : 255, "green" : 255, "blue" : 255 } } ], "transform" : [ { "id" : "default", "leds" : "*", "hsl" : { "saturationGain" : 1.0000, "luminanceGain" : 1.0000, "luminanceMinimum" : 0.0000 }, "red" : { "threshold" : 0.0000, "gamma" : 2.5000 }, "green" : { "threshold" : 0.0000, "gamma" : 2.5000 }, "blue" : { "threshold" : 0.0000, "gamma" : 2.5000 } } ], // SMOOTHING CONFIG "smoothing" : { "type" : "linear", "time_ms" : 200, "updateFrequency" : 20.0000, "updateDelay" : 0 } }, // NO V4L2 GRABBER CONFIG // FRAME GRABBER CONFIG "framegrabber" : { "width" : 64, "height" : 64, "frequency_Hz" : 5.0, "priority" : 890 }, // JSON SERVER CONFIG "jsonServer" : { "port" : 19444 }, // PROTO SERVER CONFIG "protoServer" : { "port" : 19445 }, // EFFECT PATH "effects" : { "paths" : [ "/storage/hyperion/effects", "/usr/share/hyperion/effects" ] }, // NO BLACKBORDER CONFIG // NO KODI CHECK CONFIG // NO BOOTEFFECT CONFIG // NO BOBLIGHT SERVER CONFIG // NO JSON/PROTO FORWARD CONFIG // LED CONFIGURATION "leds" : [ { "index" : 0, "hscan" : { "minimum" : 0.4519, "maximum" : 0.5096 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 1, "hscan" : { "minimum" : 0.4135, "maximum" : 0.4712 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 2, "hscan" : { "minimum" : 0.3750, "maximum" : 0.4327 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 3, "hscan" : { "minimum" : 0.3365, "maximum" : 0.3942 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 4, "hscan" : { "minimum" : 0.2981, "maximum" : 0.3558 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 5, "hscan" : { "minimum" : 0.2596, "maximum" : 0.3173 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 6, "hscan" : { "minimum" : 0.2212, "maximum" : 0.2788 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 7, "hscan" : { "minimum" : 0.1827, "maximum" : 0.2404 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 8, "hscan" : { "minimum" : 0.1442, "maximum" : 0.2019 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 9, "hscan" : { "minimum" : 0.1058, "maximum" : 0.1635 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 10, "hscan" : { "minimum" : 0.0673, "maximum" : 0.1250 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 11, "hscan" : { "minimum" : 0.0288, "maximum" : 0.0865 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 12, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0481 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 13, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.9375, "maximum" : 1.0000 } }, { "index" : 14, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.8875, "maximum" : 0.9625 } }, { "index" : 15, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.8375, "maximum" : 0.9125 } }, { "index" : 16, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.7875, "maximum" : 0.8625 } }, { "index" : 17, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.7375, "maximum" : 0.8125 } }, { "index" : 18, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.6875, "maximum" : 0.7625 } }, { "index" : 19, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.6375, "maximum" : 0.7125 } }, { "index" : 20, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.5875, "maximum" : 0.6625 } }, { "index" : 21, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.5375, "maximum" : 0.6125 } }, { "index" : 22, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.4875, "maximum" : 0.5625 } }, { "index" : 23, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.4375, "maximum" : 0.5125 } }, { "index" : 24, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.3875, "maximum" : 0.4625 } }, { "index" : 25, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.3375, "maximum" : 0.4125 } }, { "index" : 26, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.2875, "maximum" : 0.3625 } }, { "index" : 27, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.2375, "maximum" : 0.3125 } }, { "index" : 28, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.1875, "maximum" : 0.2625 } }, { "index" : 29, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.1375, "maximum" : 0.2125 } }, { "index" : 30, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.0875, "maximum" : 0.1625 } }, { "index" : 31, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.0375, "maximum" : 0.1125 } }, { "index" : 32, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0625 } }, { "index" : 33, "hscan" : { "minimum" : 0.0000, "maximum" : 0.0481 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 34, "hscan" : { "minimum" : 0.0288, "maximum" : 0.0865 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 35, "hscan" : { "minimum" : 0.0673, "maximum" : 0.1250 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 36, "hscan" : { "minimum" : 0.1058, "maximum" : 0.1635 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 37, "hscan" : { "minimum" : 0.1442, "maximum" : 0.2019 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 38, "hscan" : { "minimum" : 0.1827, "maximum" : 0.2404 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 39, "hscan" : { "minimum" : 0.2212, "maximum" : 0.2788 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 40, "hscan" : { "minimum" : 0.2596, "maximum" : 0.3173 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 41, "hscan" : { "minimum" : 0.2981, "maximum" : 0.3558 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 42, "hscan" : { "minimum" : 0.3365, "maximum" : 0.3942 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 43, "hscan" : { "minimum" : 0.3750, "maximum" : 0.4327 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 44, "hscan" : { "minimum" : 0.4135, "maximum" : 0.4712 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 45, "hscan" : { "minimum" : 0.4519, "maximum" : 0.5096 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 46, "hscan" : { "minimum" : 0.4904, "maximum" : 0.5481 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 47, "hscan" : { "minimum" : 0.5288, "maximum" : 0.5865 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 48, "hscan" : { "minimum" : 0.5673, "maximum" : 0.6250 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 49, "hscan" : { "minimum" : 0.6058, "maximum" : 0.6635 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 50, "hscan" : { "minimum" : 0.6442, "maximum" : 0.7019 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 51, "hscan" : { "minimum" : 0.6827, "maximum" : 0.7404 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 52, "hscan" : { "minimum" : 0.7212, "maximum" : 0.7788 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 53, "hscan" : { "minimum" : 0.7596, "maximum" : 0.8173 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 54, "hscan" : { "minimum" : 0.7981, "maximum" : 0.8558 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 55, "hscan" : { "minimum" : 0.8365, "maximum" : 0.8942 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 56, "hscan" : { "minimum" : 0.8750, "maximum" : 0.9327 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 57, "hscan" : { "minimum" : 0.9135, "maximum" : 0.9712 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 58, "hscan" : { "minimum" : 0.9519, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 } }, { "index" : 59, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.0000, "maximum" : 0.0625 } }, { "index" : 60, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.0375, "maximum" : 0.1125 } }, { "index" : 61, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.0875, "maximum" : 0.1625 } }, { "index" : 62, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.1375, "maximum" : 0.2125 } }, { "index" : 63, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.1875, "maximum" : 0.2625 } }, { "index" : 64, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.2375, "maximum" : 0.3125 } }, { "index" : 65, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.2875, "maximum" : 0.3625 } }, { "index" : 66, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.3375, "maximum" : 0.4125 } }, { "index" : 67, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.3875, "maximum" : 0.4625 } }, { "index" : 68, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.4375, "maximum" : 0.5125 } }, { "index" : 69, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.4875, "maximum" : 0.5625 } }, { "index" : 70, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.5375, "maximum" : 0.6125 } }, { "index" : 71, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.5875, "maximum" : 0.6625 } }, { "index" : 72, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.6375, "maximum" : 0.7125 } }, { "index" : 73, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.6875, "maximum" : 0.7625 } }, { "index" : 74, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.7375, "maximum" : 0.8125 } }, { "index" : 75, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.7875, "maximum" : 0.8625 } }, { "index" : 76, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.8375, "maximum" : 0.9125 } }, { "index" : 77, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.8875, "maximum" : 0.9625 } }, { "index" : 78, "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.9375, "maximum" : 1.0000 } }, { "index" : 79, "hscan" : { "minimum" : 0.9519, "maximum" : 1.0000 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 80, "hscan" : { "minimum" : 0.9135, "maximum" : 0.9712 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 81, "hscan" : { "minimum" : 0.8750, "maximum" : 0.9327 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 82, "hscan" : { "minimum" : 0.8365, "maximum" : 0.8942 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 83, "hscan" : { "minimum" : 0.7981, "maximum" : 0.8558 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 84, "hscan" : { "minimum" : 0.7596, "maximum" : 0.8173 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 85, "hscan" : { "minimum" : 0.7212, "maximum" : 0.7788 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 86, "hscan" : { "minimum" : 0.6827, "maximum" : 0.7404 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 87, "hscan" : { "minimum" : 0.6442, "maximum" : 0.7019 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 88, "hscan" : { "minimum" : 0.6058, "maximum" : 0.6635 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 89, "hscan" : { "minimum" : 0.5673, "maximum" : 0.6250 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } }, { "index" : 90, "hscan" : { "minimum" : 0.5288, "maximum" : 0.5865 }, "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 } } ], "endOfJson" : "endOfJson" }
Enjoy
-
Excellent sujet, je suis à des années lumière de toutes ces bidouilles, mais le fait de pouvoir se créer un ambilight est carrément ouf, good job