Expansión de puertos I/O para Arduinno via I2C


Si quieres más puertos en entrada/salida en tu Arduino, aquí tenemos un escrito acerca de como hacer una expansión por medio del protocolo I2C.

Esta expansión funciona bien con cualquier Arduino. Por medio de esta adaptación de podrían manejas hasta 128 leds a travez de I2C.

Descripción de el integrado: IC I/O Expander I2C 16B 28SDIP
Precio: $1.90 USD (Digikey)

Tambien se necesitan:
1 - Capacitor 33pF
1 - Resistencia 3.9k

Una vez que el chip está instalado, es muy fácil de usar. La dirección I2C es 0100xxx. Conectando un pin addr a tierra es un '0' mientras +5v hace un '1'. Esto te da las suficientes direcciones para usar ocho expansiones al mismo tiempo. Tambien, este dispositivo no funciona con una velocidad de Bus superior a los 100k.

Para este dispositivo se necesitará un librería (class) para manejar la expansión. Es algo grande, aquí se ponen los puntos importantes.

 //Basic Write command
void Write(byte reg, byte data1, byte data2)
{
Wire.beginTransmission(addr);
Wire.send(reg); // Command
Wire.send(data1);
Wire.send(data2);
Wire.endTransmission();
}
//Read inputs
void Read()
{
//Set read from GP0
Wire.beginTransmission(addr);
Wire.send(0x00); // Command: Access to GP0
Wire.endTransmission();
//Recieve bytes from module
Wire.requestFrom(addr,2); //only two bytes
if(Wire.available())
{ io_data[0].set(Wire.receive()); io_data[1].set(Wire.receive());}
else {Serial.println("ERROR: request from GP0 failed");} //FIXME - this should be removed
}
 
Make
Arduino and evertything related

0 cmmts:

Publicar un comentario