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

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

    28 14.66%
  • Да.

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

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

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

    Так скетчь под твой контроллер скорее всего переделывать нужно.
    Или вешать светодиоды на соответствующие порты
    PHP код:
    #define  D2_High PORTD |=B00000100  //red  
    #define  D2_LOW PORTD &= B11111011  
    #define  D3_High PORTD |=B00001000  //green  
    #define  D3_LOW PORTD &= B11110111  
    #define  D4_High PORTD |=B00010000  //blue  
    #define  D4_LOW PORTD &= B11101111  

    #define  D5_High PORTD |=B00100000  
    #define  D5_LOW PORTD &= B11011111  
    #define  D6_High PORTD |=B01000000   
    #define  D6_LOW PORTD &= B10111111  
    #define  D7_High PORTD |=B10000000  
    #define  D7_LOW PORTD &= B01111111  

    #define  D8_High PORTB |=B00000001  
    #define  D8_LOW PORTB &= B11111110  
    #define  D9_High PORTB |=B00000010  
    #define  D9_LOW PORTB &= B11111101  
    #define  D10_High PORTB |=B00000100  
    #define  D10_LOW PORTB &= B11111011  

    #define D11_High PORTB |=B00001000  
    #define D11_LOW PORTB &= B11110111  
    #define D12_High PORTB |=B00010000  
    #define D12_LOW PORTB &= B11101111  
    #define D13_High PORTB |=B00100000  
    #define D13_LOW PORTB &= B11011111 

  2. #222
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Так скетчь под твой контроллер скорее всего переделывать нужно.
    Или вешать светодиоды на соответствующие порты
    Точно туплю как пацан, ведь порты PWM у меги идут в перемешку и совсем другие при явном объявлении

    Pin0 = (Порт) PE0 (не трогаем)
    Pin1 = (Порт) PE1 (не трогаем)

    Pin2 = (Порт) PE4
    Pin3 = (Порт) PE5
    Pin4 = (Порт) PG5
    Pin5 = (Порт) PE3
    Pin6 = (Порт) PH3
    Pin7 = (Порт) PH4
    Pin8 = (Порт) PH5
    Pin9 = (Порт) PH6
    Pin10 = (Порт) PB4
    Pin11 = (Порт) PB5
    Pin12 = (Порт) PB6
    Pin13 = (Порт) PB7

    P.S. Простите новичка... Теперь я думаю, на правильном пути?
    ...
    Вот исправленное, но не проверенное

    PHP код:
    #define  D2_High PORTE |=B00010000  //red
    #define  D2_LOW PORTD &= B11101111
    #define  D3_High PORTE |=B00100000  //green
    #define  D3_LOW PORTD &= B11011111
    #define  D4_High PORTG |=B00100000  //blue
    #define  D4_LOW PORTG &= B11011111

    #define  D5_High PORTE |=B00001000  //red  
    #define  D5_LOW PORTE &= B11110111   
    #define  D6_High PORTH |=B00001000  //green
    #define  D6_LOW PORTH &= B11110111   
    #define  D7_High PORTH |=B00010000  //blue
    #define  D7_LOW PORTH &= B11101111

    #define  D8_High PORTH |=B00100000  //red
    #define  D8_LOW PORTH &= B11011111
    #define  D9_High PORTH |=B01000000  //green
    #define  D9_LOW PORTH &= B10111111
    #define  D10_High PORTB |=B00010000  //blue
    #define  D10_LOW PORTB &= B11101111

    #define D11_High PORTB |=B00100000  //red
    #define D11_LOW PORTB &= B11011111
    #define D12_High PORTB |=B01000000  //green
    #define D12_LOW PORTB &= B10111111
    #define D13_High PORTB |=B10000000  //blue
    #define D13_LOW PORTB &= B01111111 
    Последний раз редактировалось Mastar; 30.11.2010 в 01:43.

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

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

    Как проверишь отпишись

  4. #224
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Как проверишь отпишись
    Проверил, не все в норме.
    Pin2 = (Порт) PE4 и Pin3 = (Порт) PE5 светятся постоянно, остальные правильно работают.
    В объяве нашел ошибку

    #define D2_High PORTE |=B00010000 //red
    #define D2_LOW PORTD &= B11101111
    #define D3_High PORTE |=B00100000 //green
    #define D3_LOW PORTD &= B11011111

    Это уже рабочий
    PHP код:
    #define  D2_High PORTE |=B00010000  //red line-1 on
    #define  D2_LOW PORTE &= B11101111  //red line-1 off 
    #define  D3_High PORTE |=B00100000  //green line-1 on 
    #define  D3_LOW PORTE &= B11011111  //green line-1 off 
    #define  D4_High PORTG |=B00100000  //blue line-1 on 
    #define  D4_LOW PORTG &= B11011111  //blue line-1 off  

    #define  D5_High PORTE |=B00001000  //red line-2 on   
    #define  D5_LOW PORTE &= B11110111  //red line-2 off     
    #define  D6_High PORTH |=B00001000  //green line-2 on 
    #define  D6_LOW PORTH &= B11110111  //green line-2 off    
    #define  D7_High PORTH |=B00010000  //blue line-2 on 
    #define  D7_LOW PORTH &= B11101111  //blue line-2 off  

    #define  D8_High PORTH |=B00100000  //red line-3 on 
    #define  D8_LOW PORTH &= B11011111  //red line-3 off  
    #define  D9_High PORTH |=B01000000  //green line-3 on 
    #define  D9_LOW PORTH &= B10111111  //green line-3 off 
    #define  D10_High PORTB |=B00010000  //blue line-3 on 
    #define  D10_LOW PORTB &= B11101111  //blue line-3 off  

    #define D11_High PORTB |=B00100000  //red line-4 on 
    #define D11_LOW PORTB &= B11011111  //red line-4 off  
    #define D12_High PORTB |=B01000000  //green line-4 on 
    #define D12_LOW PORTB &= B10111111  //green line-4 off 
    #define D13_High PORTB |=B10000000  //blue line-4 on 
    #define D13_LOW PORTB &= B01111111  //blue line-4 off 

    volatile unsigned int tcnt2
    volatile byte pwm_time
    //byte pwm_time, Red_R_Old, Green_L_Old, Blue_T_Old; 
    unsigned long blank=0//таймер простоя 
    byte volatile color[12];  //массив храннения цветов 12-ть каналов 


    void setup()  

            for (
    int i=214i++){pinMode(iOUTPUT);}   
            
    Serial.begin(115200); 
       
           
    TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2  
        
    TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика 
        
    TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика 
        
    ASSR &= ~(1<<AS2);  //Выбор источника синхронизации таймера если AS2=0 от системного генератора 
        
    tcnt2 252//  16000000/31000/64=8 tcnt2=256-8=248.     
        
    TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2. 


    void loop()  

      if (
    Serial.available() > 12)  
      {  
          if (
    Serial.read() == 255)  //проверка прификса       
            

                for (
    int i 012i++)  
                 {                 
                   
    color[i] = Serial.read();  // прочитать данные о цветах из порта в массив 
                 
    }       
                
    // if (Red_R_Old == color[0] && Green_L_Old == color[4] && Blue_T_Old == color[8])   
                 
    blank=0
            } 
      } else {  
               if(
    blank>100000) { blank=0; for (byte i 012i++)  color[i] = 0;}  
              
    blank++;  
             }   
    }  
    //****************обработчик прерывания******************** 
    ISR(TIMER2_OVF_vect)  

        
    TCNT2 tcnt2

     
    pwm_time++; 
        if(
    color[0] > pwm_time D2_High;  else D2_LOW;  
        if(
    color[1] > pwm_time D3_High;  else D3_LOW
        if(
    color[2] > pwm_time D4_High;  else D4_LOW;  
         
        if(
    color[3] > pwm_time D5_High;  else D5_LOW
        if(
    color[4] > pwm_time D6_High;  else D6_LOW
        if(
    color[5] > pwm_time D7_High;  else D7_LOW;  
         
        if(
    color[6] > pwm_time D8_High;  else D8_LOW
        if(
    color[7] > pwm_time D9_High;  else D9_LOW
        if(
    color[8] > pwm_time D10_High; else D10_LOW
         
        if(
    color[9] > pwm_time D11_High; else D11_LOW;  
        if(
    color[10] > pwm_timeD12_High; else D12_LOW;         
        if(
    color[11] > pwm_timeD13_High; else D13_LOW

    Последний раз редактировалось Mastar; 30.11.2010 в 15:15.

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

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

    После двух недельного ожидания сегодня пришел китайский arduino nano v3
    на atmega 328P.
    по виду немного отличается от Вашего - детальками
    а так тоже самое, дрова встали нормально
    прошил скетч с первого поста - ошибок не вылетало
    при подключении к USB - горит зеленый - питание
    при запуске программы atmolight - горит красный D13 и начинает моргать Rx

    Проверить работу не могу - остальные запчасти в пути еще

    по моему описанию это штатное поведение?

    зы. заливал скетч блинк- все работает!!!
    Последний раз редактировалось denns; 30.11.2010 в 21:28.

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

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

    Chip сделаете ли вы нам в этом году подарок в виде проги для двух мониторов))) либо же вообще её бессмысленно ждать?

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

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

    Решился таки на такую классную штуку, но пока в целях приобретения опыта в программирования микроконтроллеров, вот сразу возникли вопросы (а куда ж без них :-) ). Дак вот:
    1. При компилировании скетча, с первой страницы, выдает вот такую ошибку:
    Ambilight.cpp: In function 'void setup()':
    Ambilight:40: error: 'TIMSK2' was not declared in this scope
    Ambilight:41: error: 'TCCR2A' was not declared in this scope
    Ambilight:42: error: 'TCCR2B' was not declared in this scope
    Ambilight:42: error: 'WGM22' was not declared in this scope

    что в скетче не так?
    2. Имею Arduino собственного производства, с atmega8-16PU на борту, сколько можно соорудить с помощью его каналов? понятно, что с дополнительными элементами.

    Заранее благодарен за ответ!

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

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

    Дело в том, что эти константы определены для процесоров XX8, типа 168, 328, наверное и 88, 48.
    Придется взять документацию на 168-й проц и свою мегу и найти аналоги этих констант. Не всегда могут присутствовать полные аналоги - у 8-й меги может быть другое количество таймеров, к примеру.

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

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

    ах вот она, где собака зарыта. Спасибо за ответ

  10. #230
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

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

    Попробовал другой вариант с применением SoftPWM.h
    Частота шима низкая, но мерцаний нет.

    PHP код:
    #include <SoftPWM.h>
    uint8_t leds[12] = {303234363840424446485052};
    byte volatile color[12];
    unsigned long night=0

    void setup()
    {
     
    Serial.begin(115200);   
     
    SoftPWMBegin();
     for (
    int i 012i++)
     
    SoftPWMSet(leds[i], 0);
     
    SoftPWMSetFadeTime(ALL55);
    }
    void loop()
    {
     if (
    Serial.available() > 12)   
       {   
        if (
    Serial.read() == 255)
          {  
           for (
    int i 012i++)   
              {                  
               
    color[i] = Serial.read();
              }        
           
    night=0;  
          }  
        } 
     else 
      {   
       if(
    night>30000) { night=0; for (byte i 012i++)  color[i] = 0;}   
       
    night++;          
      }   
     for (
    int i 012i++)
     
    SoftPWMSet(leds[i], color[i]);    

    Вложения Вложения

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

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

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

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

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

Ваши права

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