Aiuto! non so come gestire 5 led RGB

ciao a tutti!

premesso che:
vorrei creare un un rialzo in legno per il tavolo dove gioco di ruolo con degli amici...
ogni personaggio ha un certo quantitativo di punti vita massimi ed un certo quantitativo di punti vita attuali...

quello che vorrei realizzare con Arduino è quanto segue:

ogni giocatore avrà davanti a se (nella sua posizione al tavolo) un led RGB acceso solo di verde...

man mano che il giocatore perderà punti vita il led diventerà sempre meno verde e sempre più rosso...

negli ultimi 10 punti vita il led (ormai rosso) dovrebbe lampeggiare...

a 0 punti vita il led si deve spegnere...

considerando che:

  • i giocatori sono 5
  • ogni led RGB ha 3 piedini per l'input (3x5=15 :confused: )
  • e che Arduino Uno ha solo pochi piedini PWM
    (mi pare di aver capito sono quelli che devo utilizzare per dosare la quantità di tensione da mandare sui piedini R e G per regolare questo fade da verde a rosso)

come posso realizzare il mio progetto?

esiste qualche modo per gestire molti più piedini PWM?
uno shield magari?

ogni suggerimento è ben accetto!

grazie anticipatamente!

Adafruit vende delle schede pilotabili tramite bus I2C per gestire parecchi pin PWM ... QUESTA, ad esempio, permette di avere 16 PWM e se ne possono mettere più di una in parallelo (fino a 62 schede per 992 PWM) sul bus I2C (...ovviamente ciascuna con indirizzo I2C differente).

Guglielmo

P.S.: Non solo, sono PWM a 12 bit invece che a 8 bit come quelli di Arduino :wink:

Dato che la UNO dispone di solo 6 uscite PWM, puoi usare un trucco.

Tieni sempre acceso il led verde di ciascun giocatore e man mano che perde vite aumenta la luminosità del rosso.

Il risultato non sarà rosso ma un verde che diventa un giallo sempre più intenso.

Ovviamente ci sono altre soluzioni, ma questa ti consente di evitare circuiti supplementari.

Ciao, al posto dell'RGB basta un led bicolore (verde/rosso) e lo comandi con 2 uscite quindi in tutto 10 pin.
Il pwm puoi gestirlo da software e probabilmente (in assembler si fa ma non ho mai avuto occasione con arduino) puoi anche utilizzare le due uscite come ingressi per i pulsanti incrementa/decrementa punti vita per ogni singolo giocatore.

Stefano

Oppure … prova a guardare QUI:wink:

Guglielmo

Caspita... sei meglio di una biblioteca :slight_smile:

Ciao,
mi è venuta un’idea abbastanza stramba per poter essere interessante :wink:
Chiedo lumi a chi di elettronica ne sa più di me.
In sostanza, all’uscita PWM io collegherei le basi di due transistor, uno PNP e l’altro NPN (in modo che siano in conduzione alternativamente), che pilotano due LED di colore diverso. O al limite semplicemente collegare i due LED uno verso Vcc e l’altro verso massa (sempre con la dovuta resistenza, però! :slight_smile:
In questo modo al variare del duty cycle si avrà la variazione del colore da un estremo all’altro, ed a luminosità costante! (oddio, magari non proprio costante, ma penso sia accettabile).
Se poi quell’uscita PWM la dichiaro come ingresso ad alta impedenza posso spegnere tutti e due i LED.
L’inconveniente è che i normali led rgb o bicoli hanno anodo o catodo comune, e mi sa che il circuito non funziona; però mettere due led separati dietro un pezzetto di plexiglas opalino non è difficile e forse può anche essere utile per avere una superficie luminosa maggiore.

P.S. caro Gpb, lo so che non mi sono presentato… aspettavo l’occasione di dover chiedere qualcosa per farlo. non ti arrabbiare.

Ciao!

P.P.S. Ovviamente ci sarebbero anche i Neopixel…

@pippettiello: essendo il tuo primo post, ti chiederei cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il REGOLAMENTO ... Grazie.

Guglielmo

*P.S.: Come vedi NON m'arrabbio ... ma ti richiamo all'ordine * :grin: :grin: :grin:

Ciao, comprese le resistenze direi che se metti un led verso + ed uno verso - quando metti in alta impedenza rimangono entrambi accesi :slight_smile:
Forse 2 transistor NPN+PNP e due diodi per evitare che la polarizzazione a riposo attivi l'altro transistor....

Ciao cam9500!
Hai ragione: due led collegati come ho scritto non si spegnerebbero col pin in alta impedenza.
Però l'avevo solo buttata lì: l'idea iniziale era quella di usare due transistor per sfruttare la capacità di un pin di emettere o assorbire corrente.
Era un'idea che mi era venuta leggendo il quesito del nostro amico: un solo pin PWM per ottenere tre effetti.
La tua giusta obiezione però mi ha suggerito questa soluzione: quattro led, due rossi e due verdi in serie tra Vcc e massa e con una resistenza, diciamo 330 ohm verso il pin pwm della mcu. Ho provato con l'alimentatore da banco e sembra funzionare.

Ciao

P.S. Scusate l'intrusione. È solo che mi è sembrata un'idea talmente buona da non poterne fare a meno.

Ahahah.... ti ho risposto così per esperienza: tanti anni fa ci ero cascato anch'io :wink:

Così come hai riproposto va meglio: la somma delle tensioni di soglia dei diodi superando i + 5v lasciano i diodi sempre interdetti. Applicando la tensione da arduino "tagli" 2 soglie e piloti i diodi, per resistenza 180 ohm è meglio.

@gpb01
grazie! sperando poi di riuscire ad usarlo quella scheda da Adafruit sembra proprio quello che fa per me!
la SoftPWMLibrary, sembra carina la proverò sicuramente! magari mi evita l'acquisto :slight_smile:
grazie mille!

@cyberhs
anche se non è il risultato che voglio mi ha ispirato la tua idea! e sto provando a realizzarla su 123D Circuits e magari la realizzo come ripiego mentre arriva il pezzo. :slight_smile:

@cam9500
l'idea mi sembrava ottima... ma se ho capito bene hanno comunque 2 piedini per la tensione... (rosso e verde)... quindi 5 led x 2 piedini = 10 PWM necessari... ed io ne ho 6 :confused:
cercando ho visto che ne esistono con solo due pin, e cambia da rosso a verde a seconda della direzione della tensione... tuttavia sbaglio o non potrei fare le sfumature da uno all'altro con questo tipo di led?

Quello che intendeva era una cosa tipo questa in allegato (ho messo un solo led verde perche’ e’ piu visibile di quelli rossi, ed ha in genere una caduta interna piu alta, fra i 2.2 ed i 2.5 V, se usate led ad alta luminosita’, quindi con un semplice diodo in serie dovrebbe andare bene) … se il PWM e’ attivo, la luminosita’ dei due rami dipende dalla percentuale, quindi il colore passa da verde a giallo a rosso in modo quasi lineare, quando il PWM e’ settato come ingresso e quindi ad alta impedenza, la caduta di tensione sulla serie e’ maggiore di 5V, quindi tutti i led dovrebbero essere spenti, mentre per farlo lampeggiare, in qualsiasi colore tu voglia, ti basta scambiare il pin fra uscita PWM (con il valore che preferisci) ed ingresso … ed usa un solo pin PWM per ogni led :wink:

EDIT: ovviamente sto parlando di led “standard” tipo i 3mm o i 5mm con corrente massima di 20mA, preferibilmente 15 … e per avere un colore uniforme, dovrebbero essere posizionati dietro o sotto un pezzo di plastica opalina, non importa se un cilindretto o un riquadro, quello dipende da come realizzi tu il tavolo … se usi led di potenza, allora li devi pilotare in modo differente, e la cosa si complica, perche’ serve della componentistica extra …

Ciao la mia idea al post #3 con l'approfondimento di gpb01 utilizza 10 pin ma non pwm: semplici uscite digitali (il pwm è fatto tramite software).
Quella che ti ha rispiegato Etemenanki è in origine di pippettiello ed utilizza 5 out pwm e volendo trovi anche il led apposito (comune AK)
http://www.ebay.com/itm/20Pcs-3mm-Dual-Bi-Color-Red-Green-3-Pin-LED-Common-Anode-AK-/291548704637?hash=item43e1a82f7d:g:wH4AAOxyHt9R1UsK

... non ti resta che il circuito di comando dei led :wink:

cam9500:
...trovi anche il led apposito (comune AK) ...

Attenzione che quello del link che hai postato, il venditore lo definisce "common anode" ... per fare la serie come nello schema (sempre che la somma delle cadute di due soli diodi basti) servirebbe con i led in serie ed il comune misto ... non fidarti piu di tanto dei titoli di quelle inserzioni, perche' a volte ci scrivono delle cavolate, o perche' non sanno cosa scrivono, o perche' usano traduttori automatici (e dal cinese, i traduttori automatici fanno a volte dei massacri grammaticali tali che al confronto, a tirare una granata termonucleare in un deposito di dizionari, si fanno meno danni :stuck_out_tongue: :D)

Comunque si possono usare tranquillamente led per retroilluminazione o led "flat top", per avere diffusione migliore ... ad esempio,

http://www.ebay.com/itm/50-pcs-2pins-3mm-Flat-top-Bright-Green-LED-lamp-light-/111089451677?hash=item19dd72829d:g:u6wAAMXQeKNTLn~2

http://www.ebay.com/itm/50-pcs-2pins-3mm-Flat-top-Bright-Red-LED-lamp-light-/111090067412?hash=item19dd7be7d4:g:HscAAMXQuTNTLOyn

o altri simili ... l'importante e' che la somma delle cadute di tensione di tutti i diodi superi i 5V, mentre quella di un ramo solo no ... :wink:

ho provato per primo a realizzare l'idea di @Etemananki
sia fisicamente, sia qui:

il piedino PWM parte da 255 e perde 10 ogni mezzo secondo fino ad arrivare a zero quando si resetta per testarlo.

ottimo modo di aggirare il problema! :slight_smile:


a seguire mi sono messo ad usare la libreria SoftPWM
consigliata da @gpb01

e mi pare funzioni proprio bene! mi sono messo un led rgb su due piedini non PWM, e riesco perfettamente a fare l'effetto fade che desideravo grazie!

ora vedrò di ampliare e gestire in maniera completa il tutto lato led...
poi mi preoccuperò di come prendere i dati dei punti ferita da fonte esterna :slight_smile:

grazie a tutti!

qui la parte di progetto sviluppata fisicamente finora
(sul sito non funziona perchè non include la libreria aggiunta ovviamente, ma posso assicurare che fisicamente funziona)