How to use the Populele LED Fret Board

Hello all !

I’ve purchased a bluetooth connected Ukulele that has a LED board under the fret, the Populele. Basically, the LEDs show where to put the fingers.
(demo : https://youtu.be/lA8_jI0H2dE)

I’ve noticed the the plugins to the LED board are standard and i can easily remove the micro controller to replace with one of my own, and make my own light show.

What I need to know is : is there anyway to benchmark it ? Like an arduino program then I hook to it, run and figure out which pin is what ?

By the way, the female JST connector connects to the board on the left side on the first pic, the male JST connector.

I added pictures of the female JST connector of the board and pictures of the original controller.

What I need to know is : is there anyway to benchmark it ? Like an arduino program then I hook to it, run and figure out which pin is what ?

No.
If there was then there wouldn’t be a need for it because it would contain all you needed to know.

What is clear is that there is some sort of driver inside the fret board or indeed inside the LEDs themselves.
They might have used Neopixel LEDs or the dot state if you are lucky. The only way to know for sure would be to look at the signals on that connector with an oscilloscope.

Let's see:
board-hookup.jpg

board-01.jpg

board-02.jpg
Looks like they scraped the numbers off the chips. :roll_eyes:

Hi,

The chip is a dialog DA14580.

According to labels on board the connector pinout is :

SDB o o VL
INT o o GND
SDA o o SCL

SDB --- 3.3v
VL ----- 5v
INT x NC
...

And it works with Adafruit_IS31FL3731’s library

Photo

Leds coordinates :

---3,0--|--4,0--|--3,1--|--4,1 .. 4,7--|--8,6---|--12,6---- 
---2,0--|--5,0--|--2,1--|--5,1 .. 5,7--|--9,6---|--13,6----
---1,0--|--6,0--|--1,1--|--6,1 .. 6,7--|--10,6--|--14,6----
---0,0--|--7,0--|--0,1--|--7,1 .. 7,7--|--11,6--|--15,6----

My code to match led with fret and string :

void led(int string, int fret, int color) {

  int x,y;
  fret--;
  if(fret == -1) {
    for(int i=1; i<16; i++ ) { led(string, i, 5); }
  } else {
    if(fret % 2 == 0) {
      x = string;
      y = fret/2;
    } else {
      x = 7 - string;
      y = fret/2;
    }
    matrix.drawPixel(x, y, color);
  }
  
}

So we can see …


Expand.