Se você assiste a muitos filmes no seu PC ou centro de mídia, tenho certeza de que enfrentou o dilema da iluminação; você desliga completamente todas as luzes? Você os mantém em plena explosão? Ou você usa um interruptor para manter um brilho amarelo fosco em algum lugar? Bem, não sofra mais.
Por menos de US $ 100, você pode configurar um incrível sistema de iluminação que refletirá o que está na tela; se o vídeo for uma cena noturna azul, as luzes serão azuis; Quando uma chama de fogo laranja pisca, assim serão as suas luzes. Bem-vindo ao mundo da iluminação RGB ambiente.
Componentes
- Faixa de luz RGB - esta é uma faixa de 5 metros de LEDs RGB que podem ser comprados no eBay e enviados de Hong Kong por menos de £ 20 cada. Se você comprar em lojas de eletrônicos, pagará pelo medidor e um rolo de 5 m custará três ou quatro vezes, portanto, compre on-line. Esses tipos de fitas LED podem ser alteradas para qualquer cor, mas somente todas de uma vez - elas não podem ser ajustadas individualmente.
- Fonte de alimentação de 12v - a potência (ampage) necessária depende de quantas faixas de LEDs você estará conectando. Cada medidor consome aproximadamente 0, 6 ampères, mas isso depende da densidade de seus LEDs, então verifique sua faixa LED específica. 3A seria suficiente para a faixa de 5m que eu conectei acima, e fontes de alimentação separadas podem ser compradas por cerca de £ 10, se você não puder comprar uma em outro lugar.
- 3 x transistores MOSFET N - você pode encontrar mais barato, mas eu comprei um pacote de 6 (tipo STP16NF06FP) por cerca de £ 10. Estes são usados para isolar a corrente do Arduino - conectar as tiras diretamente ao Arduino iria fritá-lo com a quantidade de corrente que elas consomem. Você precisa de 1 transistor MOSFET por canal de cor LED, para vermelho, verde e azul.
- Arduino O que é o Arduino e o que você pode fazer com ele? O que é o Arduino e o que você pode fazer com ele? O Arduino é um pequeno dispositivo eletrônico notável, mas se você nunca usou um antes, o que exatamente eles são eo que você pode fazer com um? Leia mais - Eu não incluí o custo deste item, já que é assumido que você já tem um, e há uma variedade de clones que você pode comprar se não puder pagar um oficial.
O custo total foi, portanto, em torno de £ 40, não incluindo o Arduino.
Introdução
O projeto consiste em duas partes. Primeiro, criaremos um circuito Arduino básico que ouve comandos do computador e define os LEDs RGB para uma cor apropriada. O segundo envolve o uso de um novo aplicativo chamado Processing e Java no lado do computador - para descobrir quais cores estão atualmente na tela, calculá-las e enviá-las para a porta de comunicação serial para o Arduino reagir.
Parte 1: Circuito e Arduino
O circuito que estamos usando é muito simples, como você pode ver no diagrama abaixo. A fita LED deve ser fornecida com um plugue macho em uma extremidade que você possa colocar diretamente na placa de montagem.
Sua faixa LED pode variar, mas se você olhar de perto, verá 12v, R, G, B escritos nos trilhos em algum lugar. Essas tiras podem ser cortadas nesses pontos de cobre (a cada 3 LEDs que eu tenho), então se você quiser cortar as tiras nos cantos da sua TV, você pode fazer isso com segurança - você não precisa usar os 5m inteiros, então você pode ter alguma esquerda para um projeto futuro. Conecte os 12v positivos diretamente à fonte de alimentação externa.
Os MOSFETs possuem três pinos; portão, dreno e fonte . O portão é como o interruptor eletrônico que o Arduino controlará. Isso determina a corrente que circula entre a fonte e o dreno. O dreno de cada MOSFET deve ser conectado ao terra do Arduino e ao terra da fonte de alimentação, enquanto a fonte se conecta aos canais da faixa de LED.
Quando você tiver concluído o circuito, baixe e execute este código de teste (originalmente da LadyAda, pinos modificados). Você deve ver sua faixa de LED rodando através de uma variedade de cores.
Parte 2: Processando
Transfira o processamento e execute. Você pode se surpreender ao descobrir que ele se parece quase exatamente com o ambiente de desenvolvimento do Arduino; isso porque o ambiente do Arduino foi baseado nele, embora ambos desempenhem funções diferentes. Pegue este código - originalmente da Silicon Republic, mas fortemente modificado por mim para tornar as configurações de tamanho de tela automáticas e com melhor representação de cores - e reserve um momento para examiná-lo. Basicamente, ele usa uma classe Java chamada Robot para fazer uma captura de tela a cada 10ms ; Em seguida, ele seleciona todos os pixels ímpares e calcula a média da cor total. Se o desempenho for um problema para você, aumente a variável skipValue para 3 ou 4 para pular mais pixels - o efeito geral deve ser o mesmo, mas será executado com mais rapidez, à medida que examina menos pixels. Finalmente, adicionei um filtro que ajuda a saturar a cor, aumentando o máximo e diminuindo os valores RGB mínimos encontrados (sem isso, achei as cores muito brancas).
Execute o aplicativo; na primeira vez, você provavelmente obterá um erro quando tentar acessar a porta serial incorreta.
Verifique a janela de depuração para obter uma lista das portas seriais atuais e anote o número ao lado do que o seu Arduino está conectado. No meu caso, em um Mac, a conexão USB é a porta 4. Altere o número nesta linha para a porta correta:
port = new Serial (isto, Serial.list () [4], 9600); // definir taxa de transmissão
Salvar e re-executar; você deve ver uma pequena janela pop-up - isso representa a cor média de tudo na tela. Lance um aplicativo de pintura ou algo com cores fortes para testá-lo, caso contrário, ele provavelmente exibirá apenas um sombrio tom de cinza. Pare o aplicativo quando terminar de testar, pois precisamos do acesso à porta serial para programar o Arduino.
Por fim, carregue este código no seu Arduino. Em vez de enviar cores aleatórias para a faixa de LEDs, esse código lê os valores da porta serial (à qual está sendo enviado o processamento). É bastante fácil de entender, a única parte difícil pode ser o uso de um marcador nos dados seriais:
if (Serial.available()>=4) { if(Serial.read() == 0xff){ red = Serial.read(); green= Serial.read(); blue = Serial.read(); } }
Isso garante que leiamos os valores corretos de byte - o aplicativo de processamento gera um marcador como um “ponto de interrupção” entre cada conjunto de valores para que o Arduino não fique fora de sincronia e pense que o valor verde é azul etc.
Depois que o código do Arduino é carregado (não deve haver saída na faixa de LED inicialmente), você pode carregar e executar o aplicativo de processamento; imediatamente você deve ver sua luz ambiente funcionando.
Aqui está uma demonstração em vídeo de como isso funcionou para mim com algum vídeo musical aleatório.
O que você acha?! Embora não seja tão impressionante quanto algo que analisa cada parte da tela e usa pixels de LED individuais, é muito mais barato e muito mais brilhante. A única desvantagem é que tudo deve ser executado no computador do media center - ele não funciona com a transmissão regular de TV ou com o Xbox 360, por exemplo. Se você tiver algum problema, dúvida ou sugestão, por favor, pergunte; ou talvez link para um vídeo da sua configuração completa.