RGB подсветка телевизора

snickser
Offline
Зарегистрирован: 02.07.2016

Цветовая подсветка телевизора с помощью RGB светодиодной ленты - прикольная штука, но я не смог найти устраивающий меня контроллер, потому написал свой.

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

Для подключения ленты надо использовать транзисторы (покупаем в любом радио магазине), по любой схеме что есть в инете, к PWM ногам.

#define R 5
#define G 3
#define B 6

int cR, lastR;
int cG, lastG;
int cB, lastB;


void setup() {

  pinMode(R,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(B,OUTPUT);
  
  // запускаем генератор случайных чисел случайно
  randomSeed(analogRead(0)*analogRead(1)*analogRead(2));

  Serial.begin(9600); 
 
}


void loop() {

// меняем цвет каждые 9 секунд
if(millis()%9000<300){

lastR = cR;
lastG = cG;
lastB = cB;

int c=1;
while(c){
  cR = random(30)*8.5;
  cG = random(30)*8.5;
  cB = random(30)*8.5;

  int avg =(cR+cG+cB)/3;

  if( (abs(avg-cR)>40 || abs(avg-cG)>40 || abs(avg-cB)>40) && avg>80 ){
    c=0; 
  } else {
    Serial.println("!"+String(cR)+" "+String(cG)+" "+String(cB)+" "+String(avg));
  }
}


float rR = (cR - lastR)/25.0 ;
float rG = (cG - lastG)/25.0 ;
float rB = (cB - lastB)/25.0 ;

for(int i=1; i<25; i++){

int mR = lastR+rR*i;
int mG = lastG+rG*i;
int mB = lastB+rB*i;

/*
Serial.print(mR);
Serial.print(" ");
Serial.print(mG);
Serial.print(" ");
Serial.println(mB);
*/

  analogWrite(R, mR );
  analogWrite(G, mG );
  analogWrite(B, mB );

delay(30);
     
}

 Serial.println(">"+String(cR)+" "+String(cG)+" "+String(cB));
  
  analogWrite(R, cR );
  analogWrite(G, cG );
  analogWrite(B, cB );
}

}

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

snickser пишет:

Для подключения ленты надо использовать транзисторы (покупаем в любом радио магазине), по любой схеме что есть в инете, к PWM ногам.

Что, любые транзисторы по любой схеме? И будет работать?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

snickser, у Вас новогодняя гирлдянда, а не цветовая подсветка телевизора, ибо последняя предполагает анализ изображения на экране так, чтобы подсветка продолжала основной цветовой тон экрана за его пределами.

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

Незаменимая вещь в случае внезапной поломки телевизора..

snickser
Offline
Зарегистрирован: 02.07.2016

andriano пишет:
у Вас новогодняя гирлдянда

Ничего она не предполагает, то что вы описали в простонародье называется Эмбилайт.
Новогодняя гирлянда предполагает быструю смену цветов, моргания и т.п. эффекты, а тут этого нет.
Я специально выбирал такие параметры, чтоб не сильно бросалось в глаза при просмотре телевизора.
В первую очередь такая подсветка хороша в ночи, чтоб на зрение телевизор не давил очень сильно, да и днём прикольно тоже, визуально увеличивает контраст жк экрана и создаёт "ауру" вокруг. Но если вам так хочется - называйте её новогодней... )

 

ЕвгенийП пишет:
Что, любые транзистору по любой схеме? И будет работать?

В ообщем да, в частности конечно же нет... )

Мне показалось плохим тоном давать тут ссылки на схемы с других сайтой про ардуино ;) Но раз уж пошла такая пляска, я использовал вот эту статью http://cxem.net/beginner/beginner61.php

Вот видос как это работает: https://www.youtube.com/watch?v=BqrEigp975I