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=rIc5GLOregQ

    Test 2
    https://www.youtube.com/watch?v=mNXFrbEYtDY

    Photos :

    0_1512941190827_file1.jpeg

    0_1512941201712_file.jpeg

    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 :D



  • 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 :)


Log in to reply
 

Want to support us ?

Join us on :

163
Online

28788
Users

14636
Topics

110653
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.