Based on the same Semtech SX1509 chip used in SparkFun’s version, it’s fully compatible with their Arduino library.
Features
- 16 GPIOs via I2C interface
- Integrated 8x8 keypad matrix controller (supports up to 64 buttons)
- Internal 2MHz oscillator with LED driver clock
- PWM support with 256 brightness levels
- LED breath, fade-in/out, and blink control functions
- Programmable pull-up resistors per pin
- Selectable open-drain or push-pull output mode
- Supports interrupts on input pins (with edge detection and bitmasking)
- Four selectable I2C addresses
- Signal level shifting support: operates from 1.2V to 5.5V signals
- Low power consumption (as low as 1μA in sleep mode)
- Wide operating temperature range: -40°C to +85°C
- 2kV ESD protection
Specifications
Parameter |
Value |
VCC Supply Voltage |
1.425V - 3.6V |
Current Consumption |
1µA (Oscillator OFF), 365µA (Oscillator ON) |
Input High Voltage |
0.7 × VCC to 5.5V |
Input Low Voltage |
-0.4V to 0.3 × VCC (VCC > 2V) -0.4V to 0.2 × VCC (VCC < 2V) |
Max Output Current |
8mA (when VCC > 2V) |
Applications
- Expanding I/O for microcontrollers (Arduino, ESP32, STM32, etc.)
- LED brightness control and light effects
- DIY custom keypad or control panels
- Servo control and PWM generation
- Battery-powered embedded systems
Library & Downloads
Example Project: LED Breathing Effect
In this example, the SX1509 is used to drive a breathing LED effect. You can control the brightness using the onboard PWM LED driver. Connect an LED to pin 15 of the SX1509 module.
const byte SX1509_LED_PIN = 15;
void setup() {
// Configure SX1509, start I2C, set LED pin as output, initialize PWM
}
void loop() {
// Create a breathing LED pattern using PWM
}
Wiring Diagrams
RTL8195 Wiring:

RTL8710 Wiring:

Based on the same Semtech SX1509 chip used in SparkFun’s version, it’s fully compatible with their Arduino library.
Features
- 16 GPIOs via I2C interface
- Integrated 8x8 keypad matrix controller (supports up to 64 buttons)
- Internal 2MHz oscillator with LED driver clock
- PWM support with 256 brightness levels
- LED breath, fade-in/out, and blink control functions
- Programmable pull-up resistors per pin
- Selectable open-drain or push-pull output mode
- Supports interrupts on input pins (with edge detection and bitmasking)
- Four selectable I2C addresses
- Signal level shifting support: operates from 1.2V to 5.5V signals
- Low power consumption (as low as 1μA in sleep mode)
- Wide operating temperature range: -40°C to +85°C
- 2kV ESD protection
Specifications
Parameter |
Value |
VCC Supply Voltage |
1.425V - 3.6V |
Current Consumption |
1µA (Oscillator OFF), 365µA (Oscillator ON) |
Input High Voltage |
0.7 × VCC to 5.5V |
Input Low Voltage |
-0.4V to 0.3 × VCC (VCC > 2V) -0.4V to 0.2 × VCC (VCC < 2V) |
Max Output Current |
8mA (when VCC > 2V) |
Applications
- Expanding I/O for microcontrollers (Arduino, ESP32, STM32, etc.)
- LED brightness control and light effects
- DIY custom keypad or control panels
- Servo control and PWM generation
- Battery-powered embedded systems
Library & Downloads
Example Project: LED Breathing Effect
In this example, the SX1509 is used to drive a breathing LED effect. You can control the brightness using the onboard PWM LED driver. Connect an LED to pin 15 of the SX1509 module.
const byte SX1509_LED_PIN = 15;
void setup() {
// Configure SX1509, start I2C, set LED pin as output, initialize PWM
}
void loop() {
// Create a breathing LED pattern using PWM
}
Wiring Diagrams
RTL8195 Wiring:

RTL8710 Wiring:
