si certo, in allegato trovi la libreria Eagle: l'ho fatta io ma è stata appena testata quindi tutto ok!
Per quanto riguarda il fatto dei controlli, considera che interrupt+timer sicuramente è un'ottima soluzione; ma se vuoi, puoi anche realizzarla in maniera più semplice (io l'avevo implementata a suo tempo prima di utilizzare gli interrupt).
Te la faccio semplice semplice, poi ovviamente potrai complicarla a piacere per funzioni migliori:
immagino tu abbia già una sequenza di polling che chiede di continuo: "c'è un nuovo comando?"
Bhè, tu fai questo, quando un pulsante viene premuto restituisci il comando "pulsante premuto" ma in più, ti salvi da una parte il timestamp. Quando ti viene di nuovo chiesto "c'è un nuovo comando?" se il pulsante è stato rilasciato invii il comando "pulsante rilasciato" e azzeri il timestamp. Se invece il pulsante è ancora premuto, e sono passati due secondi (tempoDiOra - timestamp > 2s) restituisce un comando "pulsante tenuto per 2s"
Spero di essere stato sufficientemente chiaro, almeno spero di averti reso l'idea; poi l'implementazione ovviamente dipende molto dalle tue esigenze :)
