Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chipset SM16208SJ Y-Index Error #448

Closed
Jiwno opened this issue May 8, 2023 · 4 comments
Closed

Chipset SM16208SJ Y-Index Error #448

Jiwno opened this issue May 8, 2023 · 4 comments

Comments

@Jiwno
Copy link

Jiwno commented May 8, 2023

While I'm testing index with led Matrix using chipset SM16208SJ, I found an error with Y index.

X indexes are correct but y indexes are wrong.

Is there anyone who knows how to solve this problem?

IMG_2210

Untitled.mp4
@board707
Copy link
Contributor

While I'm testing index with led Matrix using chipset SM16208SJ, I found an error with Y index.

Every LED panel uses two types of IC to control the leds - the driver to manipulate individual pixels and the multiplexer to switch led rows on and off. You have a problem not with driver SM16208 (it is a standard driver, compatible with the library). According to your photo, your panel uses TC7558 as multiplexer. This is a SHIFT-Register type multiplexer. You have to set up the library accordingly.
I have no idea, is it compatible with ESP32-HUB75-MatrixPanel-DMA code, ask @mrfaptastic

@mrcodetastic
Copy link
Owner

What's another library this panel works with? PxMatrix?

If so, what configuration. I'll look at how the code works there for insight then.

@board707
Copy link
Contributor

If I remember correctly, PxMatrix supports panels with a shift register multiplex.
I also have this option in my library.

The principle there is simple - a HUB pins A B C are connected to shift register, usually A is CLK, B = LAT and C = DATA.
When you need to switch a row, you push a byte into the register, where the bit corresponding to the row is 1, and the rest are zero

Example code:

void set_mux(uint8_t curr_row) override {
		// Just shift the row mux by one for incremental access
		digitalWrite(pin_DMD_B, HIGH);                    // Latch open
		digitalWrite(pin_DMD_C, (curr_row == 0));   // Shift out 1 for line 0, 0 otherwise
		digitalWrite(pin_DMD_A, HIGH);                  // Clock out this bit
		digitalWrite(pin_DMD_A, LOW);
		digitalWrite(pin_DMD_B, LOW);                   // Latch close
	}

@board707
Copy link
Contributor

Addition
As I see, the shift type multiplexing has already been added to the library by DarrylStrong
#164

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants