Программа подсветка для RGB диодов

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
Arik
Встал на лапы
Сообщения: 137
Зарегистрирован: Сб апр 04, 2009 04:12:23

Программа подсветка для RGB диодов

Сообщение Arik »

Привет всем, есть тут люди, которые уже делали программу для управления лентой RGB диодов?
Интересует как вы рассчитывали/делали спец эффекты в цветовых оттенках (к примеру получение цветов других оттенков отличных от RGB) интересует также реализация плавного мерцания, всегда ли это шим?
Хочу начать эксперименты с диодами RGB, но чтобы не изобретать велосипед решил обратиться к форуму (вдруг есть уже готовые проекты для анализа) Спасибо.
Казалось бы не занимайся ерундой, купи готовый контроллер и управляй им с ПК, но интересна сама реализация понимашшш.
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
Реклама
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5749
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: Программа подсветка для RGB диодов

Сообщение >TEHb< »

Arik писал(а):эффекты в цветовых оттенках (к примеру получение цветов других оттенков отличных от RGB
HSV чтоли? Было дело.
Arik писал(а): всегда ли это шим?
Не всегда, но в подавляющем большинстве случаев. Уж очень это просто.
Arik писал(а):купи готовый контроллер
Вот это как раз ерунда.
"Привет!" - соврал он.
Реклама
Аватара пользователя
Arik
Встал на лапы
Сообщения: 137
Зарегистрирован: Сб апр 04, 2009 04:12:23

Re: Программа подсветка для RGB диодов

Сообщение Arik »

HSV чтоли? Было дело.
Не знаю что такое HSV я про обычную ленту цветных светодиодов Red, Green, Blue
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5749
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: Программа подсветка для RGB диодов

Сообщение >TEHb< »

Это цветовое пространство такое. Некоторые вещи там делать сильно проще. Но потом приходится переводить в RGB, да.
"Привет!" - соврал он.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Программа подсветка для RGB диодов

Сообщение Alex_641 »

Делал когда то для аттини10, в кодевижнАВР
Спойлер

Код: Выделить всё

/*


Chip type               : ATtiny10
AVR Core Clock frequency: 1,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 8
*****************************************************/

#include <tiny10.h>
#include <delay.h>
#define b PORTB.0
#define r PORTB.1
#define g PORTB.2

unsigned char r1,g1,b1,i,f;

interrupt [TIM0_OVF] void timer0_ovf_isr(void)   // програмный шим на 3 канала
                { 
                 TCNT0=65200;
                  if (i==255)i=0; 
                   if (r1<i) r=0;else r=1;
                    if (b1<i) b=0;else b=1;
                     if (g1<i) g=0;else g=1;   
                      i++;
                }
void red_up ()      // подпрограмма медленного нарастания канала красного
        {
        while (r1<254)
                      {
                      r1++;
                      delay_ms(f);
                      }
        }
        
void red_down ()    // подпрограмма медленного затухания канала красного
        {
        while (r1>0)
                      {
                      r1--;
                      delay_ms(f);
                      }
        }
void green_up ()    // далее аналогично для зелёного и синего
        {
        while (g1<200)
                      {
                      g1++;
                      delay_ms(f);
                      }
        }
void green_down ()
        {
        while (g1>0)
                      {
                      g1--;
                      delay_ms(f);
                      }
        }
                
void blue_up ()
        {
        while (b1<200)
                      {
                      b1++;
                      delay_ms(f);
                      }
        }
void blue_down ()
        {
        while (b1>0)
                      {
                      b1--;
                      delay_ms(f);
                      }
        }                                
void main(void)
{
CCP=0xD8;        // разрешение на модификацию
CLKMSR=0x00;    // внутренний генератор на 8 мгц
CCP=0xD8;       // разрешение на модификацию
CLKPSR=0x00;    // делитель частоты на 8
//---------настройка порта 0,1,2-выходы
PUEB=0x00;
PORTB=0x00;
DDRB=0x07;
TCCR0B=0x01;// делитель таймера
f=200; //пауза в миллисекундах
TIMSK0=0x01;   //прерывание по переполнению таймера включить
#asm("sei")

while (1)
      { 

      red_up();
       red_down();
        green_up();
         green_down();
          blue_up();
           blue_down();
      
      red_up();
       green_up();
        blue_up();
         green_down();
          red_down();
           blue_down();
      
     green_up(); 
      blue_up(); 
       red_up(); 
        blue_down(); 
         green_down();
          red_down();

     blue_up();  
     green_up();
      blue_down(); 
     red_up();       
      green_down();      
      red_down();      
      
      red_up();
       blue_up();
        green_up();
         red_down();
          green_down();
           blue_down();
                 
      blue_up();
       green_up();
        blue_down();
         red_up(); //
          blue_up();
           green_down();    
            red_down();
             blue_down();          

        }        
}
Добавлено after 8 minutes 32 seconds:
проект
Вложения
проект.rar
(73.98 КБ) 65 скачиваний
Не спрашивай по ком звонит колокол, он звонит по тебе !
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Программа подсветка для RGB диодов

Сообщение BOB51 »

Стандартно для регулировки ШИМ, но для энергоэфективности и спецэффектов добавляется мультипликация картинки.
(ШИМ в ШИМе покадровой развертки).
Окончательная подгонка восприятия только с готовым экраном макета - симуляция не всегда точна.
8)
Реклама
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Программа подсветка для RGB диодов

Сообщение Alex_641 »

Действительно окончательная подгонка воприятия , не передаёт сенсорику дифференцирования, но в данном случае как мне кажется , нужно поставить на обратную связь !
Не спрашивай по ком звонит колокол, он звонит по тебе !
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Программа подсветка для RGB диодов

Сообщение BOB51 »

Нужно закладывать возможность корректировки непосредственно на макете.
А это минимум спецмодуль внешнего пульта или универсальный "комбайн" для отладки картинки с последующим переносом полученных при тестировании параметров в конечное изделие и хорошо отлаженная и проверенная (легко тиражируемая) платформа для конечного изделия
Для одного раза - слишком избыточно, но для того, кто занимается "всякокартинками" вполне оправданно.
8)
Аватара пользователя
Arik
Встал на лапы
Сообщения: 137
Зарегистрирован: Сб апр 04, 2009 04:12:23

Re: Программа подсветка для RGB диодов

Сообщение Arik »

[uquote="Alex_641",url="/forum/viewtopic.php?p=4487044#p4487044"]Делал когда то для аттини10, в кодевижнАВР
Спойлер

Код: Выделить всё

/*


Chip type               : ATtiny10
AVR Core Clock frequency: 1,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 8
*****************************************************/

#include <tiny10.h>
#include <delay.h>
#define b PORTB.0
#define r PORTB.1
#define g PORTB.2

unsigned char r1,g1,b1,i,f;

interrupt [TIM0_OVF] void timer0_ovf_isr(void)   // програмный шим на 3 канала
                { 
                 TCNT0=65200;
                  if (i==255)i=0; 
                   if (r1<i) r=0;else r=1;
                    if (b1<i) b=0;else b=1;
                     if (g1<i) g=0;else g=1;   
                      i++;
                }
void red_up ()      // подпрограмма медленного нарастания канала красного
        {
        while (r1<254)
                      {
                      r1++;
                      delay_ms(f);
                      }
        }
        
void red_down ()    // подпрограмма медленного затухания канала красного
        {
        while (r1>0)
                      {
                      r1--;
                      delay_ms(f);
                      }
        }
void green_up ()    // далее аналогично для зелёного и синего
        {
        while (g1<200)
                      {
                      g1++;
                      delay_ms(f);
                      }
        }
void green_down ()
        {
        while (g1>0)
                      {
                      g1--;
                      delay_ms(f);
                      }
        }
                
void blue_up ()
        {
        while (b1<200)
                      {
                      b1++;
                      delay_ms(f);
                      }
        }
void blue_down ()
        {
        while (b1>0)
                      {
                      b1--;
                      delay_ms(f);
                      }
        }                                
void main(void)
{
CCP=0xD8;        // разрешение на модификацию
CLKMSR=0x00;    // внутренний генератор на 8 мгц
CCP=0xD8;       // разрешение на модификацию
CLKPSR=0x00;    // делитель частоты на 8
//---------настройка порта 0,1,2-выходы
PUEB=0x00;
PORTB=0x00;
DDRB=0x07;
TCCR0B=0x01;// делитель таймера
f=200; //пауза в миллисекундах
TIMSK0=0x01;   //прерывание по переполнению таймера включить
#asm("sei")

while (1)
      { 

      red_up();
       red_down();
        green_up();
         green_down();
          blue_up();
           blue_down();
      
      red_up();
       green_up();
        blue_up();
         green_down();
          red_down();
           blue_down();
      
     green_up(); 
      blue_up(); 
       red_up(); 
        blue_down(); 
         green_down();
          red_down();

     blue_up();  
     green_up();
      blue_down(); 
     red_up();       
      green_down();      
      red_down();      
      
      red_up();
       blue_up();
        green_up();
         red_down();
          green_down();
           blue_down();
                 
      blue_up();
       green_up();
        blue_down();
         red_up(); //
          blue_up();
           green_down();    
            red_down();
             blue_down();          

        }        
}
Добавлено after 8 minutes 32 seconds:
проект[/uquote]
Отлично, Благодарю, нужно попробовать.
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
Ответить

Вернуться в «AVR»