Controllo insieme di pulsanti.

Ciao a tutti, ho la necessità che arduino effettui determinate operazioni alla pressione di un tasto e questo sarebbe molto semplice sfruttando le digital in. Però i pulsanti sono 7 e si trovano in un pcb microscopico di una tastierina frontale di un monitor. Dovrò rifarmi il pcb con ovviamente gli stessi pulsanti nella stessa posizione, esiste quindi un IC che accetti 7 o più input digitali e, con un bus seriale, comunichi gli stati al uC di arduino? In modo che io possa scrivere il fimrware utilizzando gli interrupts. Attendo che venga sollevato un interrupt, vado a controllare quale pulsante dei 7 è stato attivato, effettuo l'operazione associata e detacho l'interrupt. Il componente ovviamente deve essere SMD (per le ridottissime dimensioni del pcb che lo dovrà oscpitare) ed il cavo di collegamento, interno al monitor, dovrà avere una lunghezza massima di circa 40 cm. Grazie a tutti per l'aiuto! :)

I2C port expander per esempio il PCF8574 che ha anche un uscita per l' interrupt quando un entrata cambia. Ciao Uwe

uwefed: I2C port expander per esempio il PCF8574 che ha anche un uscita per l' interrupt quando un entrata cambia.

Pero' di Interrupt ne genera due. Uno alla pressione del pulsante e uno al rilascio

L'IC è perfetto, è distribuito anche nel package SO16 e, caso vuole, ne avevo disegnato uno con le stesse dimensioni in eagle, quindi ce l'ho già pronto per la realizzazione del pcb! L'unico dubbio che mi sorge spontaneo è a livello di cablaggio, infatti al pcb della tastiera dovrei portare: 1 +5Vcc; 1 GND; 1 interrupt; 1 I2C SCL; 1 I2C SDA. La lunghezza di questi cavi può essere al massimo 40 cm, ci saranno problemi con il bus seriale? Che tipo di cavo utilizzare per limitare al minimo interferenze e CDT? Grazie a tutti, Marco.

Brunello: Pero' di Interrupt ne genera due. Uno alla pressione del pulsante e uno al rilascio

Quello lo gestirò da codice con degli stati associati ad ogni pulsante. Se mi servirà associare più funzioni ai tasti attivabili con tempi di pressione differenti l'interrupt al rilascio è perfetto, altrimenti imposterà lo stato del tasto semplicemente ad OFF.