CONVERSOR AD/DA I2C PCF8591p
Para este ejemplo vamos a utilizar el integrado PCF8591, es un conversor ADC con comunicación I2C.
El PCF8591 posee 4 entradas analógicas y una salida analógica.
En este ejemplo solo vamos a utilizar una entrada analógica.
Se puede observar en el esquema que hemos puesto todos los pines de direcciones a GND, eso quiere decir que nuestro periférico I2C tendrá la dirección 000, que traducido a nuestro código 0x48.
El esquema de nuestro conversor es el siguiente:
La siguiente imagen muestra lo que nos encontramos en la PCB, las 4 entradas analógicas y el conector de comunicación con la alimentación, que es el que principalmente nos interesa.
La placa que he diseñado para el conversor tiene los pines compaibles con los conectores I2C que se preparan en el Motor Shiled Mioio, al igual que los ultrasonidos Srf04.
Para ponerlo en marcha en nuestro programa debemos incluir lo siguiente:
1. La librería que posee la comunicación I2C:
import ioio.lib.api.TwiMaster;
2. En el setup: (Fíjate como se usa el puerto número 1 de I2C que corresponde a los pines 47 y 48 de la MIOIO).
twi = ioio_.openTwiMaster(1, TwiMaster.Rate.RATE_100KHz, true);
3. En el loop:
final float sensorain1 = Readpcf8591(0x48, twi); setText(Float.toString(reading), Float.toString(sensorain1));
4. Las funciones utilizadas son las siguientes:
//Para la lectura de la conversión: public float Readpcf8591(int address, TwiMaster port) { float returnval = 0; byte[] request = new byte[] { 0x30 }; byte[] tempdata = new byte[2]; try { port.writeRead(address, false, request,request.length,tempdata,tempdata.length); float ain1 = tempdata[0]; ain1= -ain1; return ain1; } catch (ConnectionLostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally {} return returnval; } //La función settext para la visialización del dato en un textView que nos hayamos creado. private void setText(final String str, final String str01) { runOnUiThread(new Runnable() { @Override public void run() { textView_.setText(str); textView_01.setText(str01); } }); }