From f4e7186a6b19f73d9ed21493ed5f391302fbb667 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 10 Dec 2025 18:01:50 +0100 Subject: [PATCH] Allow to specify I2C address --- src/Modulino_LED_Matrix.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Modulino_LED_Matrix.h b/src/Modulino_LED_Matrix.h index 6bdd5df..392a300 100644 --- a/src/Modulino_LED_Matrix.h +++ b/src/Modulino_LED_Matrix.h @@ -23,6 +23,8 @@ #define DEFAULT_WIRE Wire #endif +#define DEFAULT_ADDRESS 0x39 + class ModulinoLEDMatrix #ifdef MATRIX_WITH_ARDUINOGRAPHICS : public ArduinoGraphics @@ -30,13 +32,24 @@ class ModulinoLEDMatrix { public: - ModulinoLEDMatrix(HardwareI2C& wire = DEFAULT_WIRE) + ModulinoLEDMatrix(uint8_t address = DEFAULT_ADDRESS, HardwareI2C& wire = DEFAULT_WIRE) #ifdef MATRIX_WITH_ARDUINOGRAPHICS : ArduinoGraphics(canvasWidth, canvasHeight) #endif { + _address = address; _wire = &wire; } + + ModulinoLEDMatrix(HardwareI2C& wire, uint8_t address = DEFAULT_ADDRESS) + #ifdef MATRIX_WITH_ARDUINOGRAPHICS + : ArduinoGraphics(canvasWidth, canvasHeight) + #endif + { + _address = address; + _wire = &wire; + } + // TODO: find a better name // autoscroll will be slower than calling next() at precise times void autoscroll(uint32_t interval_ms) { @@ -63,7 +76,7 @@ class ModulinoLEDMatrix } _sequenceDone = true; } - _wire->beginTransmission(0x39); + _wire->beginTransmission(_address); _wire->write((uint8_t*)frame, sizeof(frame)); _wire->endTransmission(); } @@ -219,4 +232,5 @@ class ModulinoLEDMatrix bool _sequenceDone = false; voidFuncPtr _callBack = nullptr; HardwareI2C* _wire; + uint8_t _address = DEFAULT_ADDRESS; };