Sondaggi

Quale scheda Arduino usi maggiormente?

View Results

Loading ... Loading ...

Netduino, utilizzare il PCF8574AP

Come espandere le porte IO del Netduino tramite PCF8574AP

Nel precedente articolo abbiamo visto come utilizzare l’integrato PCF8574AP per espandere le porte IO di Arduino. Lo stesso circuito può essere adattato anche alla scheda Netduino. Dato che ho utilizzato Arduino Leonardo, i pin SCL e SDA, relativi al bus I2C, sono dedicati, mentre Netduino rispecchia la pin function della Arduino UNO e quindi i pin SDA e SCL sono disponibili rispettivamente sui pin analogico 4 e pin analogico 5.

In definitiva, per far funzionare il circuito, dobbiamo collegare i pin secondo la tabella seguente

PCF8574AP Netduino
PIN 14 SCL Analog PIN 5 SCL
PIN 15 SDA Analog PIN 4 SDA

Netduino e PCF8574AP

Per quanto riguarda il codice sorgente possiamo osservare il listato seguente che permette di accendere e spegnere i led collegati alle porte del PCF8574AP

//buffer per memoriaazare indirizzi
//e dati
Byte[] tx_write = new Byte[1];
Byte[] tx_read = new Byte[1];

//Configurazione contenente l'indirizzo del PCF8574AP
//e la frequenza del bus i2c
I2CDevice.Configuration cnf = new I2CDevice.Configuration(0x38, 100);

//Creo un oggetto per eseguire le richieste di lettura e scrittura
I2CDevice expanderPCF8574 = new I2CDevice(cnf);

//creo un oggetto I2CReadTransaction che viene associato al buffer tx_read
//il buffer viene utilizzato per verificare lo stato delle porte del PCF8574AP
I2CDevice.I2CReadTransaction[] rt_data = new
I2CDevice.I2CReadTransaction[] { I2CDevice.CreateReadTransaction(tx_read) };

//creo un oggetto I2CWriteTransaction che viene associato al buffere tx_write
//il buffer tx viene utilizzato per spedire lo stato delle porte del PCF8574AP
I2CDevice.I2CWriteTransaction[] wt_write = new
I2CDevice.I2CWriteTransaction[] { I2CDevice.CreateWriteTransaction(tx_write) };

while (true)
{
  //imposto tutte le porte a livello logico basso
  tx_write[0] = (Byte)(0x00);
  //eseguo il comando
  expanderPCF8574.Execute(wt_write, 10);

  Thread.Sleep(1000);

  //imposto tutte le porte a livello logico alto
  tx_write[0] = (Byte)(0xFF);
  //eseguo il comando
  expanderPCF8574.Execute(wt_write, 10);

  Thread.Sleep(1000);
}

Leggere lo stato delle porte

la lettura dello stato delle porte del PCF8574AP avviene eseguendo il comando relativo all’oggetto i2creadtransaction:

while (true)
{
  //eseguo il comando
  expanderPCF8574.Execute(rt_data, 10);

  Debug.Print(tx_read[0].ToString());

  Thread.Sleep(1000);
}

Anche utilizzando Netduino i comandi da eseguire per utilizzare il PCF8574AP sono molto semplici ed intuitivi.

4 risposte a Netduino, utilizzare il PCF8574AP

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>