Привет всем, есть тут люди, которые уже делали программу для управления лентой RGB диодов?
Интересует как вы рассчитывали/делали спец эффекты в цветовых оттенках (к примеру получение цветов других оттенков отличных от RGB) интересует также реализация плавного мерцания, всегда ли это шим?
Хочу начать эксперименты с диодами RGB, но чтобы не изобретать велосипед решил обратиться к форуму (вдруг есть уже готовые проекты для анализа) Спасибо.
Казалось бы не занимайся ерундой, купи готовый контроллер и управляй им с ПК, но интересна сама реализация понимашшш.
Программа подсветка для RGB диодов
Программа подсветка для RGB диодов
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
- Реклама
- >TEHb<
- Друг Кота
- Сообщения: 5749
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: Программа подсветка для RGB диодов
HSV чтоли? Было дело.Arik писал(а):эффекты в цветовых оттенках (к примеру получение цветов других оттенков отличных от RGB
Не всегда, но в подавляющем большинстве случаев. Уж очень это просто.Arik писал(а): всегда ли это шим?
Вот это как раз ерунда.Arik писал(а):купи готовый контроллер
"Привет!" - соврал он.
Re: Программа подсветка для RGB диодов
Не знаю что такое HSV я про обычную ленту цветных светодиодов Red, Green, BlueHSV чтоли? Было дело.
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
- >TEHb<
- Друг Кота
- Сообщения: 5749
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: Программа подсветка для RGB диодов
Это цветовое пространство такое. Некоторые вещи там делать сильно проще. Но потом приходится переводить в RGB, да.
"Привет!" - соврал он.
Re: Программа подсветка для RGB диодов
Делал когда то для аттини10, в кодевижнАВР
Добавлено after 8 minutes 32 seconds:
проект
Спойлер
Код: Выделить всё
/*
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();
}
}
проект
- Вложения
-
- проект.rar
- (73.98 КБ) 65 скачиваний
Не спрашивай по ком звонит колокол, он звонит по тебе !
- Реклама
Re: Программа подсветка для RGB диодов
Стандартно для регулировки ШИМ, но для энергоэфективности и спецэффектов добавляется мультипликация картинки.
(ШИМ в ШИМе покадровой развертки).
Окончательная подгонка восприятия только с готовым экраном макета - симуляция не всегда точна.

(ШИМ в ШИМе покадровой развертки).
Окончательная подгонка восприятия только с готовым экраном макета - симуляция не всегда точна.
Re: Программа подсветка для RGB диодов
Действительно окончательная подгонка воприятия , не передаёт сенсорику дифференцирования, но в данном случае как мне кажется , нужно поставить на обратную связь !
Не спрашивай по ком звонит колокол, он звонит по тебе !
Re: Программа подсветка для RGB диодов
Нужно закладывать возможность корректировки непосредственно на макете.
А это минимум спецмодуль внешнего пульта или универсальный "комбайн" для отладки картинки с последующим переносом полученных при тестировании параметров в конечное изделие и хорошо отлаженная и проверенная (легко тиражируемая) платформа для конечного изделия
Для одного раза - слишком избыточно, но для того, кто занимается "всякокартинками" вполне оправданно.

А это минимум спецмодуль внешнего пульта или универсальный "комбайн" для отладки картинки с последующим переносом полученных при тестировании параметров в конечное изделие и хорошо отлаженная и проверенная (легко тиражируемая) платформа для конечного изделия
Для одного раза - слишком избыточно, но для того, кто занимается "всякокартинками" вполне оправданно.
Re: Программа подсветка для RGB диодов
[uquote="Alex_641",url="/forum/viewtopic.php?p=4487044#p4487044"]Делал когда то для аттини10, в кодевижнАВР
Добавлено after 8 minutes 32 seconds:
проект[/uquote]
Отлично, Благодарю, нужно попробовать.
Спойлер
Код: Выделить всё
/*
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();
}
}
проект[/uquote]
Отлично, Благодарю, нужно попробовать.
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]


