Led controller RGB

11 Anni 7 Mesi fa - 11 Anni 7 Mesi fa #1 da Matteo Garia
Led controller RGB è stato creato da Matteo Garia
Buonasera a tutti!
Pubblico un progettino che ho realizzato per passatempo :)
tutto comincia quando in un noto negozio di arredamenti, laddove pure il metro di carta è da montare, trovai un kit di barre a led RGB ( DIODER ), che acquistai col puro scopo di giocarci :)

Mi è venuto in mente di replicare il sistema ambilight di Philips, per chi non lo conoscesse, sono delle barre a led montate ai lati delle TV che riportano gli stessi colori presenti a schermo... guardare un film con tale effetto è molto spettacolare ;)

per fare ciò mi servivano almeno 6 PWM e non avendo pic così... superodotati... ho gestito tutto via software e interrupt

il grosso problema è stato starci coi tempi per avere una frequenza di pwm abbastanza alta ma ottimizzando il codice ce l'ho fatta, usando anche un sistema semplice ed efficace per capire i tempi di esecuzione:
- inverto lo stato di un pin ad ogni interrupt di tmr0
- inverto lo stato di un altro pin ad ogni fine del loop principale

con un oscilloscopio è facile capire quando avviene l'int e da quel momento quanto ci mette il codice ad esser eseguito :)
va da sè che il tutto deve finire prima dell'int successivo altrimenti si perdono cicli e la frequenza del pwm ne viene alterata

per assegnare i colori giusti alle barre ho usato la seriale del pic, definendo dei comandi di scrittura dei valori, più alcuni comandi che servono a leggere dei dati dal pic (dispositivo, versione, autore)
la richiesta del dispositivo è stata utilissima per evitare, lato pc, di impostare a mano la porta COM giusta :)

Nel codice del pic è presente inoltre la gestione dei colori tramite potenziometro ed ADC, al momento disabilitata, in attesa di alcune aggiustatine ;)

dl.dropbox.com/u/105852408/Led%20Control...LED_CONTROLLER.X.rar

Qui potete trovare il progetto di MPLabX ed il progetto Visual Basic del software di gestione su pc, di cui parlerò ora, oltre che un bellissimo schema in BicCAD su come sono collegati i led

Il programma in VB legge le due aree laterali dello schermo e ricava la media di colore da una griglia di pixel, per poi inviarla al pic
Quando lo si avvia si apre minimizzato nell'area di notifica, è possibile cliccarci sopra per modificarne le impostazioni:



larghezza fasce: quanto è larga l'area di schermo controllata, in pixel
salto orizzontale e salto verticale: larghezza della giglia di analisi del colore
offset sopra ed offset sotto: permette di ignorare le fasce sopra e sotto per la larghezza desiderata, utile nel caso di video con bande nere

Infine vengono mostrati i colori ottenuti e gli fps (frame per secondo), sotto vi è il debug della comunicazione seriale
Il software identifica automaticamente la porta su cui è connesso il controller B)

A breve realizzerò un pcb in SMD per ospitare il circuito... il pic finale sarà un 16F88

un ringraziamento speciale va a Nicola Lagnena (sul web nic1294) per avermi realizzato la maggior parte del software in visual basic, compresa la funzione di scansione dei colori, senza la quale non avrei potuto metterlo in funzione... grazie per la pazienza e per aver risolto le mie continue richieste :)
Il mio merito sul lato pc sta solo nella gestione della comunicazione e nel disegno dell'interfaccia, il resto del merito è suo!



finisco con una foto del sistema in prova sulla FreedomII



Ciao!
Matteo
Ultima Modifica 11 Anni 7 Mesi fa da Matteo Garia.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Led controller RGB
...bella idea,
Non conosco l'effetto che si ottiene ma credo che non sia male.

Da quello che ho capito il sistema si puo' usare solo per il PC, o comunque con un immagine proveniente dallo schermo del PC (eventualmente riprodotta sul altro monitor).

Bel lavoro!

PS
...mi piace anche la scheda usata! :)

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #3 da Matteo Garia
Risposta da Matteo Garia al topic Re: Led controller RGB
Ciao Mauro,
il risultato è una cosa di questo tipo:


la mia realizzazione funziona solo con il pc purtroppo, per farlo andare con tutto si potrebbe pensare di usare qualche sensore RGB sui bordi dello schermo... Ma per ora va bene così :)

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Led controller RGB
Effettivamente l'effetto e' azzeccato per video musicali!
Per un film romantico senza colpi di scena credo che l'effetto sia meno gradevole.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa - 11 Anni 7 Mesi fa #5 da Matteo Garia
Risposta da Matteo Garia al topic Re: Led controller RGB
Ciao,
l'effetto è molto bello con film d'azione, accentua i colpi di scena :)
il sw lato pc devo evolverlo, per ora non supporta i video che usano l'accelerazione hardware, devo capire come catturarne le immagini

Intanto ho disegnato e realizzato un primo pcb, schemi disponibili qui: click!

Da cosa è composto il circuito:
- Una sezione di alimentazione semplicissima, composta da un 78L05 per il pic, mentre i led sono alimentati direttamente dalla tensione di ingresso che deve essere di 12V DC

- Il cuore è un PIC16F88 con quarzo da 20MHz, montato sotto

- I connettori per 3 barre a led RGB, di cui due dedicati alle barre "left" e "right" ed il terzo per una barra ausiliaria, dopo vedremo come la controllerò, il connettore è lì perchè.... avanzavano pin :P

- Un connettore a 5 pin, sulla sinistra: lì ci sono alimentazione e massa, più il pin MCLR del pic (che userò come I/O digitale) e due ingressi analogici.
Un ingresso sarà usato per un potenziometro, l'altro per alcuni pulsanti connessi a partitore di tensione, in modo da poter discriminare con
l'ADC quale pulsante è premuto.
In particolare il connettore è studiato in modo che, se si invertisse il cavo, nulla si danneggi :)

- Il connettore mini usb per la connessione al pc, un integrato FT232 si occupa di fare da seriale virtuale

- Infine, ovviamente, l'header ICSP per programmare il pic, che è il connettore al centro sopra il pic

Ho già eseguito il collaudo dell'FT232, dell'ICSP e del regolatore di tensione, ora resta da ricompilare il progetto per il 16F88 riassegnando i pin

Per ora la barra AUX sarà comandata dal potenziometro esterno, potenziometro che comanderà anche le altre in mancanza di segnale dal pc

due foto... non è venuto benissimo, ma forse, se avessi evitato di usare una basetta scaduta da alcuni anni...



Ultima Modifica 11 Anni 7 Mesi fa da Matteo Garia.
Ringraziano per il messaggio: Tom

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
Moderatori: Mauro Laurenti

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login