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

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

    28 14.66%
  • Да.

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

    34 17.80%
Показано с 1 по 10 из 921

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок Аватар для denns
    Регистрация
    16.11.2010
    Сообщений
    15
    Вес репутации
    170

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

    Цитата Сообщение от IgorSokol Посмотреть сообщение
    Собрал на 24 каналана макетке, все работает отлично
    не могли бы выложить готовый скетч для Nano плиз

    удалось собрать на транзисторах на 8 каналов на транзисторах (спасибо Chip-у),
    хочу попробывать 24 канала на микрухах уже.

  2. #2
    Новичок Аватар для denns
    Регистрация
    16.11.2010
    Сообщений
    15
    Вес репутации
    170

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

    Цитата Сообщение от denns Посмотреть сообщение
    не могли бы выложить готовый скетч для Nano плиз, хочу попробывать 24 канала на микрухах уже
    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++)
    {
    byte_shift byte_shift<<1;
    if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
    i++;
    }
    SPDR byte_shift//отправляем в шину SPI 
    //**************************************
    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++)
    {
    byte_shift byte_shift<<1;
    if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
    i++;
    }
    SPDR byte_shift//отправляем в шину SPI 
    //**************************************
    byte_shift 0;
    for (
    uint8_t bt=0bt<8bt++)
    {
    byte_shift byte_shift<<1;
    if(
    Brightness[i]>PWM_Counter_vbyte_shift|= 1// тут соответственно использщуем nbit
    i++;
    }
    SPDR byte_shift//отправляем в шину SPI 

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

    это оно по SPI ?????
    Последний раз редактировалось denns; 09.01.2011 в 18:16.

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

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

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

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

Ваши права

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