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

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

    28 14.66%
  • Да.

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

    34 17.80%
Страница 28 из 93 ПерваяПервая ... 18222324252627282930313233343878 ... ПоследняяПоследняя
Показано с 271 по 280 из 921
  1. #271
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

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

    Огромное спасибо за помощь SBorovkov
    PHP код:
    #define TCNT2_Const 250 //256-9
    #define BrightnessSize 24 //число каналов

    unsigned long blank=0//таймер простоя 

    uint8_t volatile PWM_Counter=0;
    uint8_t Brightness[BrightnessSize];

    void setup()  

              
    pinMode(10OUTPUT);   //SS SPI вывод для управления защелкой
            
    pinMode(11OUTPUT);    // SPI DATA
            
    pinMode(13OUTPUT);   // SPI Clock
            
    digitalWrite(10,LOW);
            
    digitalWrite(11,LOW);
            
    digitalWrite(13,LOW);
            
    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;
        }

            
    Serial.begin(115200);

        
    TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2  
        
    TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика 
        
    TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика 
        
    TCCR2B |= (1<<CS22); //установка предделителя 64
        
    ASSR &= ~(1<<AS2);  //Выбор источника синхронизации таймера если AS2=0 от системного генератора 
        
    TCNT2 TCNT2_Const//  16000000/256/100/64=8 tcnt2=256-8=248.     
        
    TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2.
        
    sei(); 


    void loop()  

      if (
    Serial.available() > BrightnessSize)  
      {  
          if (
    Serial.read() == 255)  //проверка прификса       
            
    {
                for (
    int i 0BrightnessSizei++)  
                 {                 
                   
    Brightness[i] = Serial.read();  // прочитать данные о цветах из порта в массив 
                 
    }         
                 
    blank=0
            } 
      } else {  
               if(
    blank>100000) { blank=0; for (byte i 0BrightnessSizei++)  Brightness[i] = 15;}  
              
    blank++;  
             }   
    }

    SIGNAL(TIMER2_OVF_vect)

    uint8_t PWM_Counter_v=PWM_Counter// поскольку PWM_Counter объявлена как valotile, обращение к ней - всегда обращение в память. Поэтому создаем локальную копию, она будет храниться в регистре.
    TCNT2 TCNT2_Const
    uint8_t i 0

    uint8_t byte_shift;
    uint8_t nbit// делаем переменную для хранения сдвинутого бита, чтобы у компилятора не возникало желания каждый раз в цикле сдвигать 1 на bt бит влево

    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++) 
      { 
        if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
         
    i++; 
         
    byte_shift byte_shift<<1;
      }
    SPDR byte_shift//отправляем в шину SPI 
    //**************************************
    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++) 
      { 
        if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
         
    i++; 
         
    byte_shift byte_shift<<1;
      }
    SPDR byte_shift//отправляем в шину SPI 
    //**************************************
    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++) 
      { 
        if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
         
    i++; 
         
    byte_shift byte_shift<<1;
      }
    SPDR byte_shift//отправляем в шину SPI 

        
    PORTB |= (1<<PIN2); //формируем положительный импульс защелки
            
    PWM_Counter++;
            while(!(
    SPSR & (1<<SPIF)));   // Ожидание завершения передачи данных
        
    PORTB &= ~(1<<PIN2);

    схема
    Нажмите на изображение для увеличения. 

Название:	24.jpg 
Просмотров:	1631 
Размер:	74.1 Кб 
ID:	10521

    Распределение зон
    Нажмите на изображение для увеличения. 

Название:	ardulight_14.png 
Просмотров:	892 
Размер:	6.5 Кб 
ID:	10520
    Последний раз редактировалось Chip; 17.12.2010 в 02:18.

  2. #272
    Пользователь
    Регистрация
    07.12.2010
    Сообщений
    34
    Вес репутации
    171

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

    [QUOTE=Chip;74534]Огромное спасибо за помощь SBorovkov
    PHP код:
    #define TCNT2_Const 250 //256-9
    #define BrightnessSize 24 //число каналов

    unsigned long blank=0//таймер простоя 

    uint8_t volatile PWM_Counter=0;
    uint8_t Brightness[BrightnessSize];

    void setup()  

              
    pinMode(10OUTPUT);   //SS SPI вывод для управления защелкой
            
    pinMode(11OUTPUT);    // SPI DATA
            
    pinMode(13OUTPUT);   // SPI Clock
            
    digitalWrite(10,LOW);
            
    digitalWrite(11,LOW);
            
    digitalWrite(13,LOW);
            
    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;
        }

            
    Serial.begin(115200);

        
    TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2  
        
    TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика 
        
    TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика 
        
    TCCR2B |= (1<<CS22); //установка предделителя 64
        
    ASSR &= ~(1<<AS2);  //Выбор источника синхронизации таймера если AS2=0 от системного генератора 
        
    TCNT2 TCNT2_Const//  16000000/256/100/64=8 tcnt2=256-8=248.     
        
    TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2.
        
    sei(); 


    void loop()  

      if (
    Serial.available() > BrightnessSize)  
      {  
          if (
    Serial.read() == 255)  //проверка прификса       
            
    {
                for (
    int i 0BrightnessSizei++)  
                 {                 
                   
    Brightness[i] = Serial.read();  // прочитать данные о цветах из порта в массив 
                 
    }         
                 
    blank=0
            } 
      } else {  
               if(
    blank>100000) { blank=0; for (byte i 0BrightnessSizei++)  Brightness[i] = 15;}  
              
    blank++;  
             }   
    }

    SIGNAL(TIMER2_OVF_vect)

    uint8_t PWM_Counter_v=PWM_Counter// поскольку PWM_Counter объявлена как valotile, обращение к ней - всегда обращение в память. Поэтому создаем локальную копию, она будет храниться в регистре.
    TCNT2 TCNT2_Const
    uint8_t i 0

    uint8_t byte_shift;
    uint8_t nbit// делаем переменную для хранения сдвинутого бита, чтобы у компилятора не возникало желания каждый раз в цикле сдвигать 1 на bt бит влево

    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++) 
      { 
        if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
         
    i++; 
         
    byte_shift byte_shift<<1;
      }
    SPDR byte_shift//отправляем в шину SPI 
    //**************************************
    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++) 
      { 
        if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
         
    i++; 
         
    byte_shift byte_shift<<1;
      }
    SPDR byte_shift//отправляем в шину SPI 
    //**************************************
    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++) 
      { 
        if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
         
    i++; 
         
    byte_shift byte_shift<<1;
      }
    SPDR byte_shift//отправляем в шину SPI 

        
    PORTB |= (1<<PIN2); //формируем положительный импульс защелки
            
    PWM_Counter++;
            while(!(
    SPSR & (1<<SPIF)));   // Ожидание завершения передачи данных
        
    PORTB &= ~(1<<PIN2);

    В моем повторении данного кода не загораются 3 светодиода, которые висят на Q2 каждого 74hc595. В чем может быть проблема?

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

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

    Вечером проверю код

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

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

    Tarko, проверь плз, остальные по отдельности загораются и гаснут корректно?

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

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

    SBorovkov, еще одну штуку заметил, делаю что бы все загорелись красные, ну тупо заливаю экран в паинте красным цветом, и все зоны располагаются на красном, то сначала светодиоды горят как и положено красным, но через некоторое время загораются синие, во как, а так в остальном вроде нормально, но по крайней мере еще не заметил
    Последний раз редактировалось Tarko; 17.12.2010 в 17:42.

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

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

    попробуй в начале обработчика прерывания поставить
    sei();
    и сообщи о результате.

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

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

    Tarko, уточни, синие вместо красных или вместе с красными?

  8. #278
    Пользователь
    Регистрация
    22.11.2010
    Возраст
    45
    Сообщений
    20
    Вес репутации
    170

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

    Нужно ли ставить на выходах ключи?
    Последний раз редактировалось IgorSokol; 17.12.2010 в 23:14.

  9. #279
    Пользователь
    Регистрация
    07.12.2010
    Сообщений
    34
    Вес репутации
    171

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

    Цитата Сообщение от SBorovkov Посмотреть сообщение
    Tarko, уточни, синие вместо красных или вместе с красными?
    именно синие вместо красных.
    попробывал дописать sei(); в обработчик, ни чего хорошего не вышло, стало мерцание и загорались не те светодиоды что надо.

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

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

    мерцаниепри добавлении - вполне нормально. Но не те светодиоды загораться по идее не должны бы. Подумаю вечерком.

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

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

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

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

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

Ваши права

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