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
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 --->
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?
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
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.