- Messaggi: 376
- Ringraziamenti ricevuti 38
Led controller RGB
- Matteo Garia
-
Autore della discussione
- Moderatore
-
Less
Di più
12 Anni 7 Mesi fa - 12 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
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
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

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 12 Anni 7 Mesi fa da Matteo Garia.
Si prega Accesso o Crea un account a partecipare alla conversazione.
12 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!
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 Accesso o Crea un account a partecipare alla conversazione.
- Matteo Garia
-
Autore della discussione
- Moderatore
-
Less
Di più
- Messaggi: 376
- Ringraziamenti ricevuti 38
12 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ì
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 Accesso o Crea un account a partecipare alla conversazione.
12 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
Per un film romantico senza colpi di scena credo che l'effetto sia meno gradevole.
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Matteo Garia
-
Autore della discussione
- Moderatore
-
Less
Di più
- Messaggi: 376
- Ringraziamenti ricevuti 38
12 Anni 7 Mesi fa - 12 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
- 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...
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

- 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 12 Anni 7 Mesi fa da Matteo Garia.
I seguenti utenti hanno detto grazie : Tom
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- progetto can
- da marcelloraja
-
- MODULO GSM SIM900A
- da Mauro Laurenti
-
- Freedom III e compilazioni fallite
- da Mauro Laurenti
-
- Gestione degli errori su comunicazione seriale
- da Mauro Laurenti
-
- Timer0 e interrupt
- da Mauro Laurenti