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

Комбинированный просмотр

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

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

    Windows 8, Ambibox в настройках Adalight, 206 зон.

  2. #2
    Новичок
    Регистрация
    14.01.2014
    Сообщений
    1
    Вес репутации
    0

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

    Цитата Сообщение от Roman_M Посмотреть сообщение
    Windows 8, Ambibox в настройках Adalight, 206 зон.
    Не могли бы вы поделиться скетчем? На просторах не смог отыскать рабочего решения adalight ws2811 кроме вашего. Своего опыта для допиливания с ws2801 явно не хватает (

  3. #3
    Новичок
    Регистрация
    02.11.2013
    Сообщений
    2
    Вес репутации
    0

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

    Приветствую! Собрал себе комплектик с ws2801, все хорошо, только цвета в ленте перепутаны, красный с синим. Тестовый код из первого сообщения подправил, мигает правильно теперь. Получается у меня не RGB, а BGR? Не могли бы вы выложить для моих цветов программу?

    Мой правильно работающий отрывок кода:
    Код:
    SPI.transfer(pixel[i].b);
          SPI.transfer(pixel[i].g);
          SPI.transfer(pixel[i].r);

  4. #4
    Новичок
    Регистрация
    21.01.2014
    Сообщений
    2
    Вес репутации
    0

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

    Цитата Сообщение от kblc Посмотреть сообщение
    Приветствую! Собрал себе комплектик с ws2801, все хорошо, только цвета в ленте перепутаны, красный с синим. Тестовый код из первого сообщения подправил, мигает правильно теперь. Получается у меня не RGB, а BGR? Не могли бы вы выложить для моих цветов программу?

    Мой правильно работающий отрывок кода:
    Код:
    SPI.transfer(pixel[i].b);
          SPI.transfer(pixel[i].g);
          SPI.transfer(pixel[i].r);
    Подобная проблема, тоже собрал себе подсветочку, Проверил - все работает. Скачал исполняемые файлы для ПК, в итоге не подходят мне ни RGB ни BRG версии. Был бы очень благодарен за версию для BGR или совет как можно обработать пакет ардуинкой после получения его от ПК и перед пересылкой на ленту.
    Последний раз редактировалось Ozz_Klochkov; 21.01.2014 в 19:21.

  5. #5
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

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

    У меня компилятор полетел, установил новый, но теперь не подходят библиотеки.
    Как разберусь, выложу новый фаил
    пиксели идет по порядку, друг за другом, визуально можно представить так:
    стеклянная труба - это светодиодная лента,
    цветные шарики - это пиксели
    в трубу по очереди заталкиваются шарики, как только труба полностью заполнена, включается свет(пауза) что бы шарики стали видны и так по порядку от кадра к кадру

  6. #6
    Новичок
    Регистрация
    04.10.2013
    Сообщений
    3
    Вес репутации
    0

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

    Chip.
    Во время эксперементов пару раз в торопях отключал БП и вся лента светилась от USB На этот случай можно убрать линию +5 от ленты к Ардуино?
    Нажмите на изображение для увеличения. 

Название:	ws2801.png 
Просмотров:	2628 
Размер:	19.9 Кб 
ID:	17498

  7. #7
    Новичок
    Регистрация
    21.01.2014
    Сообщений
    2
    Вес репутации
    0

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

    Цитата Сообщение от kblc Посмотреть сообщение
    Приветствую! Собрал себе комплектик с ws2801, все хорошо, только цвета в ленте перепутаны, красный с синим. Тестовый код из первого сообщения подправил, мигает правильно теперь. Получается у меня не RGB, а BGR? Не могли бы вы выложить для моих цветов программу?

    Мой правильно работающий отрывок кода:
    Код:
    SPI.transfer(pixel[i].b);
          SPI.transfer(pixel[i].g);
          SPI.transfer(pixel[i].r);

    Доработал скетч для ардуинки таким образом:
    PHP код:
    #include <CyberLib.h>

    unsigned long nTimerTimet;

    void setup() 
    {
      
    UART_Init(115200);
      
    StartSPI(081);//MODE0, DIV8, MSBFIRST
      
    for(int16_t z=0z<768z++) SendSPI(0); //погасить все пикселы ленты
      
    delay_ms(1); //пауза для инициализации ленты
    }

    uint8_t mas_data[3];
    uint8_t j=0;
    void loop() 
    Start
     uint8_t data

      
    millis(); //получаем текущее время
      
    UART_SendByte(170); //отправляем байт синхронизации для ПК
       
    if (UART_ReadByte(data))  //ждем от ПК первый байт с колличеством пикселей ленты
          
    {
             
    uint16_t pix_num data*3;  //получаем общее колличество цветовых каналов ленты 
             
    uint16_t eTime micros()-rTime//получим время с момента окончания загрузки
             
    if( eTime 900delay_us(eTime);  //ждем полной инициализации (минус 100мкс для загрузки след. байта) 
                
    for(uint16_t i=0i<pix_numi++) 
                {
            
    //получаем значения для всех цветов, а затем отсылаем на ленту в нужном нам порядке
                  
    if(j==2)
                  {
                    
    mas_data[j]=uart_read();
                    
    SendSPI(mas_data[0]);  //Синий
                    
    SendSPI(mas_data[2]);  //Зелёный
                    
    SendSPI(mas_data[1]);  //Красный
                    
    j=0;
                  }
                  else
                  {
                    
    mas_data[j]=uart_read(); 
                     
    j++;
                  }
                }
                
    rTime micros(); //стартуем счетчик времени инициализации ленты
                 
    nTime t// //обнулить время простоя 
          
    } else {  
                   if((
    nTime) > 4000///гасим подсветку если нет потока более 2 сек
                    
    {  
                     for(
    int16_t z=0z<768z++) SendSPI(0); //погасить все пикселы ленты
                     
    nTime t
                    }  
                  }     
    End }    
    //***************************************************************************
    unsigned char uart_read(void)
    {
      
    uint8_t val;
      for (
    uint8_t i=0i<255; ++i//цикл ожидания байта данных из UART порта, время ожидания 2560мкс
        

          if(
    UART_ReadByte(val)) break; //если байт данных получен, то цикл прерывается
          
    delay_us(10);      //время ожидания байта
        

        return 
    val;

    Использовать на компе в таком случае надо версию на BRG из второго поста темы.

  8. #8
    Новичок
    Регистрация
    02.11.2013
    Сообщений
    2
    Вес репутации
    0

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

    Цитата Сообщение от Ozz_Klochkov Посмотреть сообщение
    Доработал скетч для ардуинки таким образом:
    PHP код:
    #include <CyberLib.h>

    unsigned long nTimerTimet;

    void setup() 
    {
      
    UART_Init(115200);
      
    StartSPI(081);//MODE0, DIV8, MSBFIRST
      
    for(int16_t z=0z<768z++) SendSPI(0); //погасить все пикселы ленты
      
    delay_ms(1); //пауза для инициализации ленты
    }

    uint8_t mas_data[3];
    uint8_t j=0;
    void loop() 
    Start
     uint8_t data

      
    millis(); //получаем текущее время
      
    UART_SendByte(170); //отправляем байт синхронизации для ПК
       
    if (UART_ReadByte(data))  //ждем от ПК первый байт с колличеством пикселей ленты
          
    {
             
    uint16_t pix_num data*3;  //получаем общее колличество цветовых каналов ленты 
             
    uint16_t eTime micros()-rTime//получим время с момента окончания загрузки
             
    if( eTime 900delay_us(eTime);  //ждем полной инициализации (минус 100мкс для загрузки след. байта) 
                
    for(uint16_t i=0i<pix_numi++) 
                {
            
    //получаем значения для всех цветов, а затем отсылаем на ленту в нужном нам порядке
                  
    if(j==2)
                  {
                    
    mas_data[j]=uart_read();
                    
    SendSPI(mas_data[0]);  //Синий
                    
    SendSPI(mas_data[2]);  //Зелёный
                    
    SendSPI(mas_data[1]);  //Красный
                    
    j=0;
                  }
                  else
                  {
                    
    mas_data[j]=uart_read(); 
                     
    j++;
                  }
                }
                
    rTime micros(); //стартуем счетчик времени инициализации ленты
                 
    nTime t// //обнулить время простоя 
          
    } else {  
                   if((
    nTime) > 4000///гасим подсветку если нет потока более 2 сек
                    
    {  
                     for(
    int16_t z=0z<768z++) SendSPI(0); //погасить все пикселы ленты
                     
    nTime t
                    }  
                  }     
    End }    
    //***************************************************************************
    unsigned char uart_read(void)
    {
      
    uint8_t val;
      for (
    uint8_t i=0i<255; ++i//цикл ожидания байта данных из UART порта, время ожидания 2560мкс
        

          if(
    UART_ReadByte(val)) break; //если байт данных получен, то цикл прерывается
          
    delay_us(10);      //время ожидания байта
        

        return 
    val;

    Использовать на компе в таком случае надо версию на BRG из второго поста темы.

    О! Спасибо! В воскресенье попробую.

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

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

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

Ваши права

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