#pragma once #include "drivers/is31fl3731/is31fl3731.hpp" namespace pimoroni { class BreakoutMatrix11x7 : public IS31FL3731 { public: static constexpr uint8_t WIDTH = 11; static constexpr uint8_t HEIGHT = 7; static constexpr int8_t DEFAULT_I2C_ADDRESS = 0x75; static constexpr int8_t ALTERNATE_I2C_ADDRESS = 0x77; bool init(); BreakoutMatrix11x7() : IS31FL3731(new I2C(I2C_BG_SDA, I2C_BG_SCL), DEFAULT_I2C_ADDRESS) {} BreakoutMatrix11x7(uint8_t address) : IS31FL3731(new I2C(I2C_DEFAULT_SDA, I2C_DEFAULT_SCL), address) {} BreakoutMatrix11x7(I2C *i2c, uint8_t address = DEFAULT_I2C_ADDRESS) : IS31FL3731(i2c, address) {} BreakoutMatrix11x7(i2c_inst_t *i2c_inst, uint8_t address, uint8_t sda, uint8_t scl) : IS31FL3731(i2c_inst, address, sda, scl) {} void set_pixel(uint8_t x, uint8_t y, uint8_t c); private: uint8_t lookup_pixel(uint8_t index); // This wonderful lookup table maps the LEDs on Matrix 11x7 const uint8_t lookup_table[WIDTH * HEIGHT] = { 6, 22, 38, 54, 70, 86, 14, 30, 46, 62, 78, 5, 21, 37, 53, 69, 85, 13, 29, 45, 61, 77, 4, 20, 36, 52, 68, 84, 12, 28, 44, 60, 76, 3, 19, 35, 51, 67, 83, 11, 27, 43, 59, 75, 2, 18, 34, 50, 66, 82, 10, 26, 42, 58, 74, 1, 17, 33, 49, 65, 81, 9, 25, 41, 57, 73, 0, 16, 32, 48, 64, 80, 8, 24, 40, 56, 72 }; }; }