miglior modo di multiplexare?

ciao a tutti mo vi spiego XD vorrei fare un bel simulatore di un cockpit di un F16.

in toto mi servirebbero ca. 150 input digitali e ca. una 15ina di input analogici (potenziometri che poi a seconda del valore diventeranno digitali.. insomma a 0° valgono 0, a 25° (mettiamo) valgono 1, a 50° 2 e così via.. quindi analogici era per fare tutto via software..)

poi dovrei trasformare il tutto in tastiera, più precisamente devo far si che tutti i pulsanti diventino un tasto della tastiera (emulata via software), qui non ci sarebbe problema però... devo far anche sì che si eseguano anche combinazioni di tasti.

vorrei usare arduino uno (o meglio atmega standalone con circuiteria su millefori e poi Vusb per la tastiera..) quindi riuscirei a gestire questi mettiamo 200 input digitali e 20 input analogici (o digitali come spiegato prima)?? io pensavo già a pcf8574 e pcf 7805A più shift register e con circa una 30ina di questi attrezzi dovrei aver sistemato la parte digitale.. ma poi per l'analogica?

comunque sono in toto 16 pcf (128 input) e circa 10 shift register (altri 70 input) e dovrei starci no? ma mi rimane il dubbio per i digitali perchè anche usando dei ADC in I2C non posso più usare i pcf...

Magari sparo una fesseria, ma non potresti dividere i pulsanti in righe e colonne? Ogni pulsante è collegato a 5v, ad una riga ed una colonna. Quando è premuto, il micro legge HIGH sui pin della riga e della colonna corrispondente e capisce che pulsante hai premuto. Puoi utilizzare una matrice bidimensionale per rappresentare la tastiera via software Dividi i 150 input in 12 righe e 13 colonne e ti servono 'solo' 4 shift register da 8bit ;)

[u]EDIT: come non detto: le combinazioni di tasti non sono possibili... Pardon :S[/u]

NeXTWay: Magari sparo una fesseria, ma non potresti dividere i pulsanti in righe e colonne? Ogni pulsante è collegato a 5v, ad una riga ed una colonna. Quando è premuto, il micro legge HIGH sui pin della riga e della colonna corrispondente e capisce che pulsante hai premuto. Puoi utilizzare una matrice bidimensionale per rappresentare la tastiera via software Dividi i 150 input in 12 righe e 13 colonne e ti servono 'solo' 4 shift register da 8bit ;)

[u]EDIT: come non detto: le combinazioni di tasti non sono possibili... Pardon :S[/u]

sisi giusto metterli in matrice XD (giuro che non mi era passato di mente :P )

comunque neanche via PS2 sono possibili le combinazioni?

inoltre (visto che non ho voglia di googlare :P ) quanti shift register ogni 3 pin?

ed infine XD c'è un modo come quello che avevo scritto per convertire un segnale da analogico a digitale nel senso che per ogni potenziometro un IC dall'entrata attiva un singolo (o diversi) pin in uscita?

puoi prendere anche in considerazione la creazione di una matrice con resistenze di precisione, un partitore resistivo .... ad ogni pulsante corrisponde una tensione in uscita diversa interpretabile con la pressione di un tasto preciso

ciao

pablos71:
puoi prendere anche in considerazione la creazione di una matrice con resistenze di precisione, un partitore resistivo … ad ogni pulsante corrisponde una tensione in uscita diversa interpretabile con la pressione di un tasto preciso

ciao

a pensarci però la cosa non è fattibile.

infatti alcuni input sono switch il che comporta che la corente continua a passare e va a sfalsare le altre letture…
in pratica non sono tutti pulsanti ed anche alcuni pulsanti rimangono attivi a lungo.

credo che la soluzione più pratica sia appunto utilizzare un input per ogni switch-pulsante.

inoltre dimenticavo… dovrò avere anche degli output tra cui anche dei display…

mi sa che mi tocca ripiegare sull’arduino mega…

invece consigli per un codice che mi limiti lo spazio? mica posso scrivere una funzione per ogni pin… e poi anche facendolo 1 saturerei la flash e 2 coi debounce saturerei la ram…

comunque alla fine riguardo la tastiera siccome il tutto è input+output vado di seriale e software interfaccia simulatore<->software<->arduino

Leggi direttamente le porte, se ne era parlato ieri o 2 gg fa, ricordi? Così accedi ad 8 porte con 1 solo byte.

leo72: Leggi direttamente le porte, se ne era parlato ieri o 2 gg fa, ricordi? Così accedi ad 8 porte con 1 solo byte.

ma poi ocn schift register ed I2C devo rigestirmi il tutto da livello hardware invece che usando le comode librerie XD

rimane che farò comunque schemi ecc e se qualcuno poi volesse rilascio tutto in forma OS ;)