Embedded driver for the Texas Instruments LP5009 and LP5012 LED drivers
Examples are based on the stm32h7xx_hal
.
```rust // Initialize I2C pins, SCL, SDA let scl = scl .intoalternateaf4() .internalpullup(true) .setopendrain(); let sda = sda .intoalternateaf4() .internalpullup(true) .setopendrain();
// Initialize the Enable line let en = en.intopushpull_output();
// Initialize
let i2c: stm32h7xx_hal::i2c::I2c
// Initialize with blocking I2C let interface = LP50xx::initwithi2c(Model::LP5012, i2c, en); // Use the LP50xx in monochromatic mode let mut monochromaticcontroller = interface.intomonochromaticmode(); // Enable it monochromaticcontroller.enable().ok(); // Set LED 5 to 255 monchromatic_controller.set(5, 0xFF).ok();
// Alternatively, if you are using RGB LEDs you can use the LP50xx in color mode let mut colorcontroller = monochromaticcontroller.intocolormode(); // Set channel 1 brightness and RGB values color_controller.set(1, (1, [255, 100, 95])).ok();
// Release the blocking i2c example to regain access to its underyling resources let (i2c, enable) = colorcontroller.release();
// Additionally, if you need to integrate this driver with platform specific DMA controllers then // a flexible callback can be used rather than blocking i2c static mut DMABUFFER: [u8; 256] = [0; 256]; let interface = LP50xx::initwithcallback(Model::LP5012, en, |addr, data| unsafe { // Copy the data from the LP50xx into the DMA buffer for processing DMABUFFER[0..data.len()].copyfromslice(data); }) .intomonochromaticmode(); ```
Feel free to create a ticket and a MR for any changes you would like to see in this library.