Expansor de E/S PCF8574

¿Qué es el PCF8574?:

 

 El PCF8574 es un circuito integrado que funciona como un expansor de entradas/salidas (E/S) digitales. Su función principal es aumentar el número de pines digitales disponibles en un microcontrolador, especialmente en situaciones donde los pines son limitados. Este chip se comunica a través del protocolo I2C, lo que significa que solo requiere dos cables (SDA y SCL) para intercambiar datos con el microcontrolador.
Módulo I2C para LCD con PCF8574

En esencia, el PCF8574 proporciona ocho pines de E/S adicionales que pueden configurarse como entradas o salidas, lo que permite conectar y controlar una variedad de dispositivos periféricos, como LEDs, botones, relés o incluso pantallas LCD. Esta capacidad de expansión lo hace muy útil en proyectos donde se necesita controlar múltiples dispositivos con un número limitado de pines en el microcontrolador.

¿Cómo se utiliza el PCF8574?:

 

Para integrarlo en un sistema, se conecta el PCF8574 al bus I2C del microcontrolador, utilizando los pines SDA (datos) y SCL (reloj). Una vez conectado, el microcontrolador puede comunicarse con el PCF8574 enviando y recibiendo datos a través del bus I2C. Esto se logra escribiendo o leyendo valores en los registros internos del PCF8574, que controlan el estado de los pines de entrada/salida.

Para configurar un pin como entrada o salida, el microcontrolador envía un comando al PCF8574 especificando el pin y la dirección deseada. Luego, para leer el estado de un pin de entrada, el microcontrolador envía una solicitud al PCF8574, que responde con el valor del pin. De manera similar, para controlar un pin de salida, el microcontrolador envía un comando al PCF8574 especificando el valor deseado para el pin.

#include <Wire.h>
#include <Adafruit_PCF8574.h>

// Dirección I2C del PCF8574 (por defecto 0x20, verifica tu módulo)
#define PCF8574_ADDR 0x20

Adafruit_PCF8574 pcf8574;

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22); // Inicializa la comunicación I2C en los pines correctos del ESP32.

  if (!pcf8574.begin(PCF8574_ADDR)) {
    Serial.println("Error al encontrar el PCF8574. ¡Revisa las conexiones y la dirección I2C!");
    while (1);
  }

  Serial.println("PCF8574 encontrado!");

  for (uint8_t i = 0; i < 8; i++) {
    pcf8574.pinMode(i, OUTPUT);
  }
}

void loop() {
  // Enciende los LEDs uno por uno
  for (uint8_t i = 0; i < 8; i++) {
    pcf8574.digitalWrite(i, HIGH);
    delay(500); // Espera 500 ms
    pcf8574.digitalWrite(i, LOW);
    delay(500); // Espera 500 ms
  }

}
Vistas
1 Número de vistas
1 Vistas de miembros
0 Vistas públicas
Acciones
0 Gustos
0 No me gusta
0 Comentarios
Compartir en redes sociales
Compartir enlace
Compartir por correo

Por favor iniciar sesión para compartir esto webpage por correo.