Interrupt/Kill SmartMatrix for a defined amount of time without retaining image
First a big thank to you, Louis, for developing and sharing this excellent library. In my project I am using 32x64 LED matrixes to stimulate living cells with optogenetic receptors and a custom PCB based on the ESP32 (teensylc branch, soon the project code will be published on GitHub as it will be opensource).
During the cell stimulation process, the LED matrix is not always powered on, for 10s of stimulation we have a pause of 5 minutes in which the matrix remains dark. As these experiments can go on for up to a week and as cells do not like temperature changes, it is important to reduce the heating up of the LED matrix.
Therefore, I have included a MOSFET circuit which supplies the matrix only with power if needed (+5V line is cut off as GND of the power connector and the GND of the data lines are interconnected in the matrixes). This reduced the heating up of the LED driver chips. However, I still have a problem with an extreme overheating of one of the shift registers located on the Matrix (see FLIR picture, it is one of the ICN74HC chips, the matrix is not used on this picture, it is only connected but no image is displayed).
Exists there a solution to temporally power down the matrix when no image is displayed to avoid a heating up of the matrix (preferably without reinitialising the matrix the next time when an image is sent, as every time it initialises itself it flickers randomly for 0.5s)?
I’ve tried to set all Matrix data pins to GPIO mode INPUT_PULLDOWN, however I still measure 1.6V on them (however only on ABCD, CLK and 0.6V on OE) and the matrix stills heat up. Another thing that I have tried is to reduce the refresh rate (I do not need fancy things only some pixels that illuminate with full brightness at a specific color), it seems that this helped a little bit (however I could not test it with the thermal imaging camera up to now, as I currently don’t have access to it anymore).
Here some additional information on my setup.
Used Library: SmartMatrix Tensylc branch with custom Pin out:
#define CLKS_DURING_LATCH 0 #define MATRIX_I2S_MODE I2S_PARALLEL_BITS_16 #define MATRIX_DATA_STORAGE_TYPE uint16_t #define R1_PIN 22 #define G1_PIN 32 #define B1_PIN 21 #define R2_PIN 19 #define G2_PIN 33 #define B2_PIN 17 #define A_PIN 16 #define B_PIN 25 #define C_PIN 27 #define D_PIN 26 #define E_PIN -1 #define LAT_PIN 14 #define OE_PIN 13 #define CLK_PIN 12 #define GPIO_PWM0A_OUT GPIO_NUM_32 #define GPIO_SYNC0_IN GPIO_NUM_34
Used MCU: ESP32-WROOM 32D
Used Matrix: 32x64 (multiple, however always one of the three shift registers heats up extremely)
If you need additional information, please contact me.
Thanks for every answer in advance