Результаты опроса: Нужна ли вам такая функция на телевизоре?

Голосовавшие
191. Вы ещё не голосовали в этом опросе
  • Нет.

    28 14.66%
  • Да.

    129 67.54%
  • Нужна , только руки кривые, самому не осилить

    34 17.80%
Страница 47 из 93 ПерваяПервая ... 374142434445464748495051525357 ... ПоследняяПоследняя
Показано с 461 по 470 из 921
  1. #461
    Продвинутый Аватар для HiddenPilot
    Регистрация
    14.04.2008
    Возраст
    44
    Сообщений
    354
    Вес репутации
    291

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

    небольшой офф...
    пропустил хорошую новость позволющаяя совместить эмбилайт с выводом 3Д...

    LG выпустила на рынок 3Д телевизор работающий пассивными поляризационными очками... соответственно эти очки не будут рассинхронизироваться от светодиодного эмбилайта
    http://www.thg.ru/technews/20101231_132200.html

    на американском рынке он уже в продаже...
    http://www.amazon.com/s/ref=nb_sb_no...eywords=LW6500
    на российском рынке ориентировочно будут в июне

  2. #462
    Пользователь Аватар для Eraser
    Регистрация
    09.12.2010
    Возраст
    42
    Сообщений
    62
    Вес репутации
    178

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

    v.1.1.9
    оптимизация кода

  3. #463
    Пользователь
    Регистрация
    21.11.2010
    Возраст
    41
    Сообщений
    26
    Вес репутации
    171

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

    А есть возможность/желания увеличить число каналов в два раза ? я б попробовал бы собрать

  4. #464
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

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

    одна ардуина уже не потянет с нормальной частотой мигания. Да и не уверен, что это надо.

  5. #465
    Пользователь
    Регистрация
    21.11.2010
    Возраст
    41
    Сообщений
    26
    Вес репутации
    171

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

    я на параллельных tiny2313 буду собирать.

  6. #466
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

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

    На параллельных можно сколько угодно сделать :-).
    А почему tiny, а не меги дешевые, типа 48-ой? По цене - примерно тоже самое, если не дешевле, но зато можно на ардуине отлаживаться. И из 48-й меги можно больше ног вытащить.

  7. #467
    Пользователь
    Регистрация
    21.11.2010
    Возраст
    41
    Сообщений
    26
    Вес репутации
    171

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

    на тиньках чисто для удобства, можно на каждую сторону по 2 тиньке поставить тогда проводов много тянуть ненадо.

  8. #468
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

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

    Ниже исходник проекта для 42х каналов.
    Поскольку это исходник для AvrStudio и в нем используются нестандартные для arduino модули, его придется чуть переделать.

    1. Убрать все #include , которые не поймет ваша среда.
    2. Добавить #include для работы с com портом. Соответственно, дальше надо изменить названия функций работы с com портом, думаю разберетесь.
    3. Заменяем Pd7::Set() на PORTD|=(1<<7)
    4. меняем Pd7::Clear() на PORTD&=~(1<<7)
    5. меняем
    Pb5::SetDirWrite();
    Pb3::SetDirWrite();
    Pd7::SetDirWrite();
    SSPin::SetDirWrite();
    на
    DDRB|=(1<<2)|(1<<3)|(1<<5);
    DDRD|=(1<<7);

    6. В строке
    #define TCNT2_Const 256-60
    нужно нужно заменить 60 на по возможности меньшее значение. Начиная с какого-то значения, программу начнет не по-деццки глючить. Нужно выбрать значение процентов на 10 больше, чем пороговое. Чем меньше значение, тем выше частота мигания светодиодов.


    Код:
    #include <iopins.h>
    #include <pinlist.h>
    #include <latch.h>
    
    #include "uart.h"
    
    using namespace IO;
    
    #include <avr/version.h>
    
    #include <avr/io.h>
    #include <avr/wdt.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    
    #define BrightnessSize 42
    #define TCNT2_Const 256-60
    
    #define MaxBlank 65000
    
    uint8_t volatile PWM_Counter=0; 
    uint8_t Brightness[BrightnessSize];
    
    typedef Pb2 SSPin;
    
    typedef Pd0 SerialIn_Pin;
    typedef Pd1 SerialOut_Pin;
    
    void Timer(void);
    
    //int8_t RealCannels[42] ={37,39,35, 18,20,16, 17,19,15, 10,12,8,  9, 11, 7, 
    //						  1,3,13,  2,4,0,    14, 6, 5, 27,26,25, 21,23,33,
    //						  22,24,34, 29,31,41, 30,32,28, 38,40,36};
    
    int8_t RealCannels[42] ={37,39,35, 18,20,16, 17,19,15, 10,12,8,  9, 11, 7, 
    						  1,3,13,  2,4,0,    14, 6, 5, 27,26,25, 21,23,33,
    						  22,24,34, 29,31,41, 30,32,28, 38,40,36};
    
    int main (void)
    {
    	uint8_t i;
    	i=1;
    	DDRB=0;;
    
    	Pb5::SetDirWrite();
    	Pb3::SetDirWrite();
    	Pd7::SetDirWrite();
    	SSPin::SetDirWrite();
    
        SPSR = (1<<SPI2X);       // SPI set clock rate fck/2 
        SPCR = (1<<SPE)|(1<<MSTR); // Enable SPI, Master 
    
    	for (int i=0;i<BrightnessSize;i++) //обнулить массив 
        { 
            Brightness[i]=0; 
        } 
    
        TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2   
        TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика  
        TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика  
        TCCR2B |= (1<<CS21); //установка предделителя 64 
        ASSR &= ~(1<<AS2);  //Выбор источника синхронизации таймера если AS2=0 от системного генератора  
        TCNT2 = TCNT2_Const; //  16000000/256/100/64=8 tcnt2=256-8=248.      
        TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2. 
        sei(); 
    
    	uint16_t blank=0;
    	uartInit();
    	uartSetBaudRate(115200);
    
    	SerialIn_Pin::SetDirRead();
    	SerialOut_Pin::SetDirWrite();
    
    
    
    //	UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);
    
    	uint8_t TimerCurrPWM=0;
    	for(;;)
    	{
    		  if (!uartReceiveBufferIsEmpty())
    		  {
    		      	  blank=0;
    		      uint8_t b=uartGetByte();
    		      if (i>=BrightnessSize)
    		      {
    		        if (b == 255)
    				{
    		          i=0;
    		      	  blank=0;
    				}
    		        else
    		          blank++;
    		      }
    		      else
    		      {
    		      	Brightness[RealCannels[i]]=b;
    		      	blank=0;
    		           i++;
    		      }
    		  }
    		  else
    		  {
    		   if (blank<MaxBlank)
    		   {
    		   	if (TimerCurrPWM!=PWM_Counter)
    			{
    				blank++;
    				TimerCurrPWM=PWM_Counter;
                }
    		   }	
    		   else	
    		   {
    		   	for (uint8_t j = 0; j < BrightnessSize; j++)
    		   	  Brightness[j] = 15;
    		   	blank=MaxBlank;
    		   }
    		  }
    	}
    }
    
    
    //void Timer(void)
    SIGNAL(TIMER2_OVF_vect) 
    {  
       Pd7::Set(); 
       Pd7::Set(); 
       Pd7::Clear();; //формируем положительный импульс защелки 
    
    	uint8_t PWM_Counter_v=PWM_Counter; // поскольку PWM_Counter объявлена как valotile, обращение к ней - всегда обращение в память. Поэтому создаем локальную копию, она будет храниться в регистре. 
    	TCNT2 = TCNT2_Const;  
    
    
    	uint8_t byte_shift; 
    	uint8_t * CBright;
    	CBright = (uint8_t *)&Brightness[0];
    
    	uint8_t j=0;
    	for (j=6;j>0;j--)
    	{
    		byte_shift = 0; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
        	if(*CBright>PWM_Counter_v) byte_shift|= 1; 
       		CBright++;  
        	byte_shift = byte_shift<<1; 
    
    	SPDR = byte_shift; //отправляем в шину SPI  
    	}
    	PWM_Counter++;
    }
    ps. прошу того, у кого заработает под средой arduino, выложить скетч, чтобы каждый не мучался.

  9. #469
    Пользователь
    Регистрация
    16.05.2010
    Сообщений
    49
    Вес репутации
    181

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

    SBorovkov а у вас на atmega48 работает эмбилайт?

  10. #470
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

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

    пока нет, но очень скоро заработает, как раз делаю плату. 48-я мега отличается от 168 и 328 только размером памяти. Поэтому максимум, что потребуется - убрать тяжелый include из кода. Но у меня и сейчас код занимает меньше 3 килобайт и память - меньше 200 байт. Возможно, придется обойтись без бутлоадера.

Страница 47 из 93 ПерваяПервая ... 374142434445464748495051525357 ... ПоследняяПоследняя

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

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

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

Метки этой темы

Ваши права

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