GlowBit™ Matrix - 8x8 (CE08033)

This is a placeholder topic for “GlowBit™ Matrix - 8x8” comments.



The most powerful GlowBit display! A 64 LED matrix that can be easily tiled to create larger displays.

Read more

1 Like

Hi. Hooked up a glowbit 8x8 to WLED with a nice 2.4A supply, and an esp32. It sort of works … up to the 47th LED, then nothing. Is there a known problem, or a gotcha here? Or is my 47th LED dead? Any ideas?

3 Likes

Ok. I had a spare GlowBit, replaced it. Now it works. Pixel #47 DOA.

2 Likes

Hi Colin,

Welcome to the forum and thanks for making a topic!

Unfortunately, it does sound like the GlowBit Matrix was faulty.
I’ve just sent an email through to you to hopefully make sure your projects stay on track!

Liam

2 Likes

Hi team,
Do you have a fully dimensioned diagram of the 8x8 matrix showing the spacing of the mounting holes?
I have found the overall dimensions (61mm x 61mm) on the product page, but nothing found (yet) for the mounting holes.

2 Likes

Hi Murray,

All of the design files are open sourced so you can open up KiCAD and measure in there :smiley:
Upon opening it up the mounting pattern is 30.48x45.72mm


(a screenshot of the PCB layout in the Hardware repo)

Come Monday when the folks at Core see your reply the product page should be updated!

1 Like

Hi @Liam120347
Now loading up KiCAD etc and starting to learn it ( ex-AutoCAD drafting skills to work through )
Thanks

P.S. will the mounting kit work as ‘front-side’ spacers behind a perspex panel, or will they only fit behind the matrices?

New Question …

I note that there is a function to dynamically change the Glowbit rateLimitFPS value at any time within user code (i.e. stick.updateRateLimitFPS(40) etc).
However the brightness value is currently fixed upon initialisation…
Would this function definition work if added into the glowbit.py library just underneath the updateRateLimitFPS definition?

## @brief Set a new brightness value
#
# \param newBrightness A new value in range 0(? tbc) - 255
def updateBrightness(self, newBrightness)
  self.brightness = newBrightness

Noting that this affects the entire Glowbit object, not individual pixels

p.s. there is a reason for this - being a Lighting engineer, I like LED displays to ‘auto-tune’ the brightness relative to ambient so that a display may be at full power in sunlight, but dims down in the evening and further into the night…

1 Like

Hey @Murray125532 - the mounting kit will work on the back side only. The screw-head is small enough to fit between LEDs, but the standoff is just too large.

As for your feature request - we’re on it :smiley:
Expect a new version of the library to come out soon. (We’ll update you here when it does).

2 Likes

Hi Murray,

A provisional method has been added to glowbit.py (line 327f: CE-GlowBit-Python/glowbit.py at main · CoreElectronics/CE-GlowBit-Python · GitHub).

The initialisation methods accept [0,255] integers or [0.0, 1.0] floats so the new method has been written to be consistent with that.

It will make its way into a new formal package release once thoroughly tested. For now, feel free to manually use the glowbit.py from the repo.

3 Likes

Thanks @Brenton - works great (both with float and integer values) :clap:

My test script - updated library file named glowbit2.py so I dont mix things up too much

import glowbit2                           # Glowbit stick with new brightness command
from PiicoDev_Unified import sleep_ms     # Cross-platform compatible sleep function

stick = glowbit2.stick()   # default pin=18, sm=0

#########################################
#
# range() function that works for floats
# https://www.techbeamers.com/python-float-range/
#
#########################################
def frange(start, stop=None, step=None):
    # if set start=0.0 and step = 1.0 if not specified
    start = float(start)
    if stop == None:
        stop = start + 0.0
        start = 0.0
    if step == None:
        step = 1.0
#    print("start = ", start, "stop = ", stop, "step = ", step)
    count = 0
    while True:
        temp = float(start + count * step)
        if step > 0 and temp >= stop:
            break
        elif step < 0 and temp <= stop:
            break
        yield temp
        count += 1

#########################################
#
# updateBrightness tests
#
#########################################
print("updateBrightness using float")
print("float","int equiv from glowbit defn",sep="\t")
for f in frange(0.0, 1.01, 0.01):
    print(f, (int(f*255)), sep="\t")
    stick.updateBrightness(f)
    stick.pixelsFill(stick.red())
    stick.pixelsShow()
    sleep_ms(1000)

stick.pixelsFill(0)
stick.pixelsShow()

print("updateBrightness using int")
for i in range(0, 256):
    print(i)
    stick.updateBrightness(i)
    stick.pixelsFill(stick.green())
    stick.pixelsShow()
    sleep_ms(1000)

stick.pixelsFill(0)
stick.pixelsShow()

Hi @Brenton
I have a suggested small change in the Stick rainbowDemo function

Original code (line 1232 … in Github)

    ## @brief Uses the colourMapRainbow() colour map to display a colourful animation
    def rainbowDemo(self, iters = 5):
        while iters > 0:
            for offset in range(33):
                for i in range(8):
                    self.pixelSet(i, self.colourMapRainbow(i,offset, offset+32))
                self.pixelsShow()
            iters -= 1

My change causes the rainbow to use all the LEDs in concatenated Sticks

    ## @brief Uses the colourMapRainbow() colour map to display a colourful animation
    def rainbowDemo(self, iters = 5):
        while iters > 0:
            for offset in range(33):
#                for i in range(8):         ## mjt 20220627
                for i in range(self.numLEDs):
                    self.pixelSet(i, self.colourMapRainbow(i,offset, offset+32))
                self.pixelsShow()
            iters -= 1
1 Like