Показано с 1 по 10 из 469

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Новичок
    Регистрация
    28.09.2013
    Сообщений
    16
    Вес репутации
    149

    По умолчанию Re: Фоновая, пиксельная подсветка телевизора, Pixelight

    Цитата Сообщение от chuuvee Посмотреть сообщение
    измените скетч таким образом

    библиотека FastLED отсюда
    Более новая FastLed 3.0.3 тут (в набор входят очень красивые демки, особенно Noise нравится)

    Удалось заставить работать подсветку "аля Ambilight" на "Arduino UNOR3" и лентe WS2812B

    Использую программу захвата AmbiBox 2.1.7, в качестве устройства выбираю "Adalight"
    В Arduino заливаю вот такой скетч:

    Код:
    //////////
    //
    // Arduino interface for the use of ws2812 operated LEDs
    // Uses Adalight protocol and is compatible with Boblight, Prismatik etc
    // "Magic Word" for synchronisation is 'Ada' followed by LED High, Low and Checksum
    //
    #include <FastLED.h>
    
    ///// User definitions /////
    
    // Define the number of LEDs
    #define NUM_LEDS 30
    
    // Define SPI Pin
    #define PIN 11
    
    // Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)
    #define serialRate 115200
    
    // 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;
    
    // initialise LED-array
    CRGB leds[NUM_LEDS];
    
    void setup()
    {
      
      FastLED.addLeds<WS2812B, PIN, GRB>(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();
    }
    #define PIN 11 <-- указать к какому пину подключен контакт DI ленты
    #define NUM_LEDS 30 <-- указать сколько диодов в подключенной ленте (все настройки зон производятся в программе AmbiBox)
    Последний раз редактировалось Drawde; 13.01.2015 в 12:24.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •