tavolo a led

Salve a tutti,
vi ringrazio in partenza per i consigli che mi avete dato in passato e che spero mi darete in futuro ( :smiling_imp: )
Avevo aperto un topic qualche tempo fa per questo stesso progetto, non sapevo se continuare a scrivere in quel post li essendo un pò datato e avendo cambiato un pò di cose rispetto all'idea originale

Riassumendo....
Avevo in mente di fare un progetto di questo tipo:

si tratta di un "tavolino" diviso in 150 quadrati (10x15 nel caso del video) in cui ogni quadrato ha al suo interno un led RGB.

Mi sarebbe piaciuto realizzare un progetto analogo, magari un pò più semplice e grezzo, con meno celle e meno colori.

una cosa del tipo 11x8 celle = 88 celle, nella quale ci dovranno essere 3 led (rosso verde blu) quindi un totale di 88x3 circa 264 led.
mi erano stati consigliati i neopixel (oppure LED WS2812), ma dovendoli mettere a distanze elevate l'uno dall'altro comprarne una striscia sarebbe stato controproducente ( li sono a pochi millimetri di distanza).

Avevo quindi l'idea di usare 3 led normali ad alta luminosità per cella (quelli ne ho disponibili in quantità industriale, al contrario degli RGB di cui non dispongo).

Ovviamente l'arduino (Arduino UNO) non ha 264 e rotti pin OUTPUT quindi sono ricorso agli shift register 74HC595, che negli ultimi giorni ho imparato ad utilizzare per far accendere 16 led a mio piacimento.
un 74HC595 ha 8 otuput (Q0-Q7) quindi dovro utilizzare circa 33 shift register.

Iniziano i problemi e i dubbi:
-il mio arduino riesce per quanto riguarda il clock a pilotare 33 integrati senza che vi sia un ritardo visibile ad occhio nudo?

-ovviamente non posso sfuttare i 5V dell'arduino quindi dovro trovare un alimetatore da circa 5V e 8/10A, ma gli shift register, almeno come sono riuscito ad utilizzarli io lavorano commutando il + dei led, e non il GND che è in comune, quindi, come posso utilizzare un'alimentazione esterna e utilizzare i 595 soltanto per dare ai led il GND così che si accendano al massimo della luminosità?
provando a mettere la massa del led verso gli integrati e dare anodo comune con la basetta a tutti i led non funziona, od almeno io non sono riuscito a farli funzionare, quale configurazione devo attuare quindi per poter utilizzare un alimentatore esterno?

-scrivendo un centinaio di righe di codice per far fare qualche giochetto ai primi 16 led ( prima di iniziare a fare il tavolo con legno eccetera volevo essere sicuro di saperli pilotare), ho notato che complilando lo sketch utilizzo già 5.800 bytes su 32.256 bytes disponibili.
quando avrò montato l'hardwer e mi troverò ad usarne 264 credo che probabilmente supererò i 32.256 bytes disponibili, come posso fare? mi seccherebbe avere un softwere limitato a poche azioni di pilotaggio.... ( avevo intenzione di ricreare giochi tipo snake o tetris), ho visto degli screen su questo forum di un arduino MEGA che aveva 320.000 bytes totali disponibili, l'unico modo è comprarne uno più potente?

EDIT: si mi sono accorto dopo aver scritto che le caratteristiche erano di 256k, per quanto riguarda i 120k massimi non lo sapevo, non è risolvibile? perchè già dimezzare da 256k a 120k è una bella botta .-.

Grazie mielle dell'attenzione e delle risposte, scusate se ho scritto un poema :slight_smile:

Luca

ho visto degli screen su questo forum di un arduino MEGA che aveva 320.000 bytes totali disponibili, l'unico modo è comprarne uno più potente?

dove hai letto che la mega ha 320Kb

link delle sue caratteristiche

Prima di rimanere deluso a metà lavoro, sappi che l'IDE consente la scrittura su flash fino a 120Kb, così era fino a poco tempo fa, se non è cambiato qualcosa nelle nuove versioni.

pablos:
Prima di rimanere deluso a metà lavoro, sappi che l'IDE consente la scrittura su flash fino a 120Kb, così era fino a poco tempo fa, se non è cambiato qualcosa nelle nuove versioni.

Il problema è stato risolto già con l'IDE 1.5.8, ancora in beta, a breve dovrebbe arrivare la 1.6.x stabile che manderà in pensione anche il ramo 1.0.x, nella 1.0.6 attuale il problema dei 128k sulla 2560 esiste ancora anche se in modo diverso dalle versioni ante 1.x, è possibile usare i 128k superiori solo come memoria dati/variabili.
In tutti i casi il problema utilizzo 256k del MEGA2560 l'avevo risolto io con un trapianto del compilatore, al posto di quello fornito di serie si utilizza la toolchain di Atmel, è pure apparso un articolo a quattro mani, io e il prof. Menniti, su Elettronica IN in merito a questa cosa.
Comunque scrivere un programma che occupa più di 128k non è facile, i primi k si riempiono facilmente a seconda delle librerie utilizzate ed eventuali tabelle dati poste nella flash, poi per riempirli col codice tocca scrivere veramente centinaia su centinaia righe di programma.

Un buon consiglio usa i WS2812 e colegali con fili alla distanza giusta per il tavolo.
Altre soluzioni sono piú complicate.
Ciao Uwe