Problema con i pin, pulsanti e i led

Salve a tutti, ho un piccolo problema. Lo schema è semplice:ho 10 pulsanti momentanei, che fanno da on e off, e occupano i pin digitali a partire dal 2 fino all 11. Rispettivamente abbiamo dei led che vengono accessi con la pressione dei pulsanti, ogni led quindi è assegnato ad un pulsante, e occupano 6pin analogici. Ora ho ancora bisogno di 4pin liberi per i restati led, 2 pensavo di metterli nei pin digitali 12 e 13, e gia non so come si possano configurare, e vabbè, mi restano però ancora 2 led e non so dove metterli, c è un altra soluzione? Per esempio evitare l utilizzo dei pin e saldare i led nel circuito del pulsante o modificare la funzione di un pin che so'.

Spero di essere stato chiaro, non facile da spiegare.
Grazie mille.

Pin liberi ne rimangono solo due, Pin 0 e Pin 1, e se non usi la seriale li puoi tranquillamente adoperare.

Poi, di altri sistemi per collegare il tutto ne esistono tanti, anche se quasi tutti prevedono l'uso di hardware aggiuntivo.
Per i Led, ad esempio, dipende da cosa devono fare..... se oltre ad accendersi alla pressione del tasto corrispondente, devono rimanere accesi o no.... Ovvero se ci sono più di un led acceso in contemporanea.

Lo stesso vale per i pulsanti, ovvero se se ne possono premere più di uno per volta contemporaneamente

Ma ... usare come led dei WS2812 (Neopixel per Adafruit) e comandarli tutti con UN solo pin ?

Guglielmo

brunello22:
Pin liberi ne rimangono solo due, Pin 0 e Pin 1, e se non usi la seriale li puoi tranquillamente adoperare.

Poi, di altri sistemi per collegare il tutto ne esistono tanti, anche se quasi tutti prevedono l'uso di hardware aggiuntivo.
Per i Led, ad esempio, dipende da cosa devono fare..... se oltre ad accendersi alla pressione del tasto corrispondente, devono rimanere accesi o no.... Ovvero se ci sono più di un led acceso in contemporanea.

Lo stesso vale per i pulsanti, ovvero se se ne possono premere più di uno per volta contemporaneamente

No il led deve accendersi alla pressione e spegnersi quando viene selezionato un altro pulsante, dove un altro led si accende eccc

gpb01:
Ma ... usare come led dei WS2812 (Neopixel per Adafruit) e comandarli tutti con UN solo pin ?

Guglielmo

Non dispongo attualmente di una ws2812, e non l ho nemmeno mai usata. Ho in giro per casa una striscia led normale rbg, ma penso ci vogliano dei transistor per metterla su arduino e non so nemmeno se è possibile accedere uno a uno.

Non si potrebbe saldare semplicemente il led e la sua resistenza alla basetta attaccandolo al suo corrispettivo pulsante, una cosa simile?

Sembra fattibile. Metti led è resistenza a gnd, il pulsante al 5v. Tutti i pin in input. Quando premi pulsante il led si accende e senti input. Allora giri il pinmode e dai l'uscita. Potrebbe andare

tramezzinimorsicati:
... ma penso ci vogliano dei transistor per metterla su arduino e non so nemmeno se è possibile accedere uno a uno.

NO, sono LED intelligenti, ci si comunica, con un loro protocollo seriale, attraverso un pin ... si dice QUALE LED e che tripletta (R,G,B) si vuole. Gli basta l'alimentazione (+ e -) ed 1 pin di colloquio, null'altro. Si mettono in serie uno dopo l'altro:

pin Arduino ---> primo LED ---> secondo LED ---> terzo LED --->

Guglielmo

gpb01:
NO, sono LED intelligenti, ci si comunica, con un loro protocollo seriale, attraverso un pin ... si dice QUALE LED e che tripletta (R,G,B) si vuole. Gli basta l'alimentazione (+ e -) ed 1 pin di colloquio, null'altro. Si mettono in serie uno dopo l'altro:

pin Arduino ---> primo LED ---> secondo LED ---> terzo LED --->

Guglielmo

Parli della ws2812?, o di una banale striscia led?..perchè con quest ultima non ho mai visto farlo, se non con dei transistor, in più se alimentata a 12v normalmente.

comunque nel caso, se volessi dare le stesse funzioni di un pin analogico a un digitale per un led? come è possibile farlo?

visto che devi usare un pulsante alla volta puoi usare un pin analogico per collegare più pulsanti come indicato [u]QUI[/u]

-zef-:
visto che devi usare un pulsante alla volta puoi usare un pin analogico per collegare più pulsanti come indicato [u]QUI[/u]

Interessante grazie, sto risolvendo cambiando impostazione dei pulsanti

In uscita si può pensare anche a multiplexing (7 uscite -> 12 LED) o charlieplexing (4 uscite -> 12 LED), in ordine di crescente complessità software.

Appunto

il multiplexing 4x3 si puo' usare anche negli ingressi, si arriva a 12 pulsanti su 12 led con solo 14 pin, ci si starebbe volendo, magari si può pensare a mettere in comune la selezione delle colonne e quindi forse si puo' fare 12 led su 12 pulsanti con 4 colonne con 3 pin in lettura pulsante e 3 pin in scrittura led, lavorando in logica negata, tenendo alte le uscite libere e usando le resistenze di pull_up sugli ingressi, complicato ma permetterebbe 12 pulsanti indipndenti con 12 led indipendenti con 10 pin usati. Ma vedrei meglio la prima soluzione che ho proposto: 10 ingressi commutati su uscita al bisogno, tanto solo un led deve esserre acceso per volta

Ma i Neopixel (WS2812) vi stanno proprio antipatici ? Con UN pin risolvete ... che andate cercando ? ? ?

Guglielmo

messo in toscano come nel libro cuore:
gli è che lo OP non ne possiede

tornando a bomba: secondo me con due for nidificati e due if ha fatto. ci mette di più a cercare sulla baya un venditore di neopixel che a scrivere le 4 + 4 righe di codice. poi dopocena con calma si compera tutti i neopixel che vuole

Riassunto:
Per ridurre i pin necessari per i pulsanti si puó fare:

  • Mettere i pulsanti in matrice 3x4; Non serve hardware aggiuntivo solo i pullup interni; svantaggio che non si possono leggere 2 pulsanti premuti contemporaneamente.
  • Matrice con 3x4 diodi. Si possono leggere pulsanti premuti contemporaneamente serve un diodo per pulsante.
  • Shiftregister o analogmultiplexer o I2C expander o SPI expander sono integrati che aumentano i pin.
  • leggere i pulsanti in modo analogicamente (fare dei partitori con piú pulsanti). anche qua non si puó leggere pulsanti premuti contemporaneamente; servono resistenze.

LED:

  • Matrice 3x4
  • Charlieplexing
  • Shiftregister o I2C expander o SPI expander sono integrati che aumentano i pin.
  • LED con controller integrati tipo i WS2812 nominati.

Ciao Uwe