36 lines
1.3 KiB
C++
36 lines
1.3 KiB
C++
#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;
|
|
|
|
void init();
|
|
|
|
BreakoutMatrix11x7() : IS31FL3731(DEFAULT_I2C_ADDRESS) {};
|
|
BreakoutMatrix11x7(uint8_t address) : IS31FL3731(address) {};
|
|
BreakoutMatrix11x7(i2c_inst_t *i2c, uint8_t address, uint8_t sda, uint8_t scl) : IS31FL3731(i2c, 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
|
|
};
|
|
};
|
|
}
|