[ Arduino ] – i2c bus with pcf8574/A

Dopo i primi progettini e test, per prendere confidenza con il nostro arduino, ho deciso di iniziare ad implementare qualcosa un attimino più complessa. Il progettino che vorrei implementare è composto da un tastierino numerico è un lcd 16×2, ovviamente il tutto gestito dal micropocessore atmel che si presta bene al tutto, quindi arduino come delevopment board e via.

Primo ostacolo, a livello di singolo elemento il nostro atmel li gestisce bene grazie alle numerose porte I/O a disposizione, ma non appena cerchiamo di integrare il tutto insieme, siamo in carenza di uscite ed ingressi!!

Quindi arriva la prima scelta, usare uno shift-register (secondo il consiglio di Blackout), oppure optare per una soluzione su bus i2c. La scelta del bus i2c sembrerebbe più indicata visto che il nostro processore atmel (ATMEGA328P) dispone di un bus i2c con i due canali Serial Clock (SCL) e Serial Data (SDA) [nota: rispettivamente la porta 4 e 5 del nostro arduino uno].

Quindi optando per il bis i2c arriva il momento di scegliere il come gestire i device, e la scelta è ricaduta sul PCF8574 I/O Expander che mi permette di avere un 8-bit parallele I/O con un semplice bus i2c, perfetto, per il mio scopo va + che bene, il keypad usato è un 3*4 ( 7-bit) e lcd seriale (se utilizzato a 8-bit).

Esiste sia il PCF8574 che il PCF8574A, l’unica differenza l’indirizzamento, il primo va da 0×20 a 0×27, il secondo da 0×38 a 0x3F, questo significa che posso avere fino a 8 dispositivi della stessa tipologia sullo stesso bus i2c, riuscendoli a differenziare grazie all’indirizzo, ma utilizzando entrambi le tipologie posso avere fino a 16 dispositivi gestiti con lo stesso bus i2c.

La cosa essenziale da sapere è quella sul come impostare gli indirizzi di ogni PCF8574 e PCF8574A, un piccolo errore comprometterà l’intero funzionamento del dispositivo, per una veloce ricerca usare la figura sotto riportata.

Per portare avanti il progettino, ho cercato di capire come gestire il bus i2c, e un punto di partenza molto importante è la pagina ufficiale di arduino riguardante la libreria wire

Detto questo, qui sotto vi riporto un paio di manualetti e altro roba utile per procedere con lo studio.

PCF8574

PCF8574_datasheet

PCF8574_expander

PS: per quanto riguarda la parte di programmazione, la completa gestione del bus i2c sfruttando la sola libreria wire si è dimostrato molto complicato per le mie esperienze di programmazione, quindi ho pensato di utilizzare due librerie sviluppare da altre persone:

- Libreria per la gestione del Keypad su bus i2c e pcf8574;

- Libreria per la gestione del display LCD su bus i2c e pcf8574;

Negli articoli successivi vedremo il progetto in dettaglio.

 

Happy Hack!

{lang: 'it'}

Tag: , ,

Lascia un Commento


5 + tre =