Schema fatto con fritzzing che a penna mi e' venuto una cosa oscena hahaha, con questo si capisce perfettamente tutto.
Per quanto riguarda i cicli for non ho idea di come migliorarli, perche non so quale sia il problema anche se ho capito che tu mi hai dato la soluzione, ma, comunque non sono in grado di modificare un ciclo for cosi complesso ed elaborato
PS. non ho risposto perche ero a farmi il vaccino, che anno magnifico...
anche se le sigle sui pin sono messe con molta fantasia... >:(
3. O7: Q8
9. PL: Parallel/Serial control
10. CP: Clock
11. Ds: Serial input
Questo è il documento ufficiale a cui devi fare riferimento:
In realtà ogni produttore pubblica i suoi datasheet, molto simili tra loro. A volte, però, ci sono delle differenze:
qualcuno può essere un po' più sintetico, qualcun altro più dettagliato;
qualcuno può riportare molti schemi applicativi, altri no;
possono adottare simbologie leggermente diverse;
alcune caratteristiche elettriche possono essere leggermente diverse e in rari casi possono portare a comportamenti diversi usando nello stesso circuito un integrato di un produttore o di un altro (ad esempio l'ICL7106 per quanto riguarda una resistenza e un condensatore...).
Praticamente è molto simile ad un multiplexer.
Alla fine fanno la stessa cosa(o sbaglio?), il mio unico problema è solo leggerli come cristo comanda, accenderne uno, leggerlo, se è stato cliccato un pulsante mandare una nota midi e poi rispengerlo, così per tutti i mux.
Che intendo... dove???...
Lo shift register di tipo PISO legge gli stati degli ingressi P e li manda in fila sull'uscita, che è esattamente ciò che serve a te. E' fatto apposta!
Faccio un piccolo recap perché ho come l'impressione di perdere qualcosa, io sto creando una macchina con 120 pulsanti 11 fader e 4 encoder, che mandano delle note nel caso dei pulsanti e che mandano cambi di velocità della singola nota nel caso di fader ed encoder.
Per i fader siamo apposto,per gli encoder ho ancora qualche problemino ma niente di grave mentre per i mux non ci siamo proprio.
I collegamenti sono quelli li (gli ultimi mandati), il codice idem, però non vanno... @Standardoil mi ha dato la soluzione a quanto pare, ma io continuo a non capire quale sia...
I 4067 sono commutatori analogici e hanno 16 ingressi con 4 bit di indirizzamento: per 130 ingressi, quindi, servono 9 CD4067 (8x16=128...) e 9 pin digitali di ingresso su Arduino. Collegando gli indirizzi in parallelo, quindi, servono 4 uscite e 9 ingressi... Sì, può funzionare, anche se non credo che possa raggiungere la stessa velocità di scansione.
N.B.: per velocizzare, conviene mandare un indirizzo a tutti i 4067 in parallelo e leggere tutte le uscite. Accontentandosi di 128 ingressi, si può usare la porta D e leggere velocemente gli 8 bit in parallelo: con 16 letture della porta D si ha la lettura dei 128 ingressi.