Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

How to Use Adafruit CharliePlex Driver IS31FL3731: Examples, Pinouts, and Specs

Image of Adafruit CharliePlex Driver IS31FL3731Design with Adafruit CharliePlex Driver IS31FL3731 in Cirkit Designer

Introduction

The Adafruit CharliePlex Driver IS31FL3731 is a versatile LED driver chip that utilizes the Charlieplexing technique to control a multitude of LEDs with a limited number of I/O pins. This component is ideal for creating eye-catching LED displays and matrices without the complexity of using numerous pins or external components. Common applications include wearable electronics, custom lighting effects, and dynamic signage.

Explore Projects Built with Adafruit CharliePlex Driver IS31FL3731

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of ESP32-Based I2C Communication Hub with Multiplexer and Expander: A project utilizing Adafruit CharliePlex Driver IS31FL3731 in a practical application
ESP32-Based I2C Communication Hub with Multiplexer and Expander

This circuit features an Olimex ESP32-EVB microcontroller unit (MCU) for processing and connectivity, interfaced with an MCP23017 I/O expander and an Adafruit TCA9548A I2C multiplexer to expand the number of I/O lines and allow multiple I2C devices to communicate with the MCU over the same bus. Pull-up resistors are connected to the I2C lines for proper bus operation, and both the MCP23017 and TCA9548A have their reset lines pulled high, likely for normal operation without external reset control.

Open Project in Cirkit Designer

Technical Specifications

Key Features

Pin Configuration and Descriptions

Pin Number Name Description
1 GND Ground connection
2 SDA I2C Data Line
3 SCL I2C Clock Line
4 VCC Power supply (3.3V - 5V)
5 INT Interrupt output (active low)
6 ADDR I2C Address selection pin

Usage Instructions

Connecting to a Circuit

  1. Connect the VCC pin to your power supply (3.3V or 5V).
  2. Connect the GND pin to the ground of your power supply.
  3. Connect the SDA and SCL pins to the corresponding I2C data and clock lines on your microcontroller.
  4. Optionally, connect the INT pin to an interrupt-capable pin on your microcontroller if you wish to use the interrupt feature.
  5. Use the ADDR pin to set the I2C address if you are using multiple IS31FL3731 chips in your project.

Best Practices

Example Code for Arduino UNO

#include <Wire.h>
#include "Adafruit_IS31FL3731.h"

// Create an instance of the driver
Adafruit_IS31FL3731 ledDriver;

void setup() {
  Wire.begin(); // Initialize I2C
  if (!ledDriver.begin()) {
    Serial.println("IS31FL3731 not found");
    while (1);
  }
  Serial.println("IS31FL3731 found!");
}

void loop() {
  // Light up all the LEDs in a loop
  for (uint8_t i = 0; i < 144; i++) {
    ledDriver.drawPixel(i, 127); // Set brightness to half (0-255)
    delay(50);
    ledDriver.drawPixel(i, 0); // Turn off LED
  }
}

Ensure that the Adafruit_IS31FL3731 library is installed in your Arduino IDE before uploading this code to an Arduino UNO.

Troubleshooting and FAQs

Common Issues

FAQs

Q: Can I control individual LED brightness? A: Yes, the IS31FL3731 allows for individual PWM control over each LED's brightness.

Q: How many of these chips can I chain together? A: You can chain multiple IS31FL3731 chips by setting unique I2C addresses using the ADDR pin.

Q: What is the maximum current the chip can handle? A: The maximum current per LED is 40mA, and the total current for the chip should not exceed the power dissipation limits.

For further assistance, consult the Adafruit IS31FL3731 datasheet and the Adafruit support forums.