Use cases for the LED Matrix module

I’m sorry, but it’s kind of an amusing that you say you “just” want, followed by what becomes a list of items with “and, also, also, and”. I mean, “just” is really struggling to keep it together there. :smiley: I mean that in a lighthearted way.

1 Like

also where are these…

1 Like

They are a user made add-on.

3 Likes

Extremely niche here but I DJ so integration with Rekordbox/Traktor etc … would he awesome

Could have each track on each module, volume, effects on each module.

I’d love that

1 Like

Well, I’d any of those tools have plug-ins that can be written, I’m sure you can write something to interface with the libraries necessary for the LED matrixes.

Can someone give me a hand with understanding how to run an animation or some basic command? I read the git read me, but I don’t get it. How do I run it? How do I set it up to run on boot?

I finally got a pair of the LED Matrix modules, but haven’t had a chance to actually install them and tinker yet, so bear with me as I am basing this on reading and prior experience.

The LED Matrix modules each have an RP2040 microcontroller inside (same as a Raspberry Pi). There are two components to the software - the firmware, which is actually loaded into the microcontroller memory, and a command line tool you run in your OS to talk to the firmware and give it commands / set modes.

I’m assuming the modules are preloaded with the firmware when they ship, but I haven’t confirmed this. It might still be worth learning how to load it for future updates. For every RP2040 board I’ve ever used, the process looks like this:

  • Set the board into “bootloader” mode. Usually done via a command line command, or pressing a button on the board, etc. Think of this as like going into the BIOS.
  • The board / module should now show up on your system as a USB storage device.
  • Copy the compiled binary of your firmware onto the storage device.
  • Reset / reboot the device, and it will load the firmware as it starts up.

For the command line tool, since the LED Matrix modules are essentially permanently connected when you install them, the tool can simply talk to the module over the USB connection it always has. This is where the tool that Framework built comes in - “inputmodule-control”
This tool is specifically built for the FW laptop so you’ll need to review the user guide here and run various commands to find your LED Matrix (it should show up as a serial device) and then send it specific commands.

Hope that helps you get started! This is definitely a tinkering type device, so I expect people will be building their own firmware additions, invoking the control command from their own scripts or apps, etc.

Is there going to be official “binary” documentation for the modules?

I see this: inputmodule-rs/commands.md at main · FrameworkComputer/inputmodule-rs · GitHub

But it appears to be incomplete. I actually plan on writing a Qt/QML wrapper that would either use libUSB or maybe just read/write to /dev/ttyACM0 to work. I would prefer not to rely on a rust + python script to do the commands and keep C++ things in the C++ world :wink:

For any meaningful modern Tetris gameplay, you need a 10×22 pixels (they are called “Minos”) field, preferably higher, but exactly 10 wide. There is a set of standard rules called SRS, which is what makes the game familiar and playable across diverse implementations.

Unfortunately, 9×34 module does sound like a good fit for Tetris.

Also everything related to Tetris is heavily licensed and copyrighted, so if I were Framework I wouldn’t use it in promotion materials — just in case. I live the game, but the company behind it is annoying af.

Two more cents about Tetris:

  1. 10×N fields are still possible if you stack two 9×34 modules side by side. idk if the gap would be OK though, haven’t seen it myself.

  2. If only the individual panels were 10×N pixels, it would’ve been fun to see some 1v1 local multiplayer.

Ok, so I followed what you suggested and I was able to play around with some of the predefined animations. Thanks for that.

Reset / reboot the device, and it will load the firmware as it starts up.

What do you mean by reset/reboot? Are you referring to the PC or the module itself?

Some more questions that came to mind while playing around:

  • Is there a way to play a custom animation? Like a gif or video?

  • Is it possible to set an animation and have it start playing automatically every time it boots?

Does anyone able to explain how to control the LED Matrix modules for a laymen? I have tried to follow the Github page and have been Googling how to use python to control these things, but have had no luck. I am a beginner to command line and python, so any help would be apprecitated.

Two-sided retro ping pong across the RGB backlit keyboard. (i.e. left and right side LED matrix modules)

@Second_Coming Came here to say exactly this.

I haven’t gone too deep messing with mine but some additional thoughts that have been expressed already by others:

  • Very minimal Matrix-like animation where, every time I press a key, a new dot falls from the top to the bottom. When typing fast, this could looke pretty nice.
  • A more abstract way to show CPU usage where each pixel’s brightness represents each core.
  • Flash all the LEDs a few times when my battery hits a certain percentage to let me know it’s ready to charge.
  • A somewhat subtle/abstract way to let me know when the network is being used
  • It’s not quite enough LED’s on one, but a goal calendar would be rad.
  • Microphone input levels when recording are pretty handy as well as the audio visualizers others mentioned. IIRC, the former is already a demo somewhere.
  • Particular animation based on which application is focused or running. I’m less keen on this idea as I don’t want much movement in my peripheral when using my laptop.
  • Minimap (really rough) for text editors.
  • Progress bar going down as time gets closer to the next calendar event.
  • I would also love some subtle animation around notifications.

These are tricky as I think the key is to not draw too much attention away from the screen unless you’re DJing a party or something.

I set up a little system where I can create individual modules that will be automatically stacked vertically in available space, or have a specified vertical position and/or height.

There’s a few sample modules to show animated gifs, scrolling text, charging flow aligned to the charging port location, battery percentage, and a basic clock.

It’s just a proof of concept, and I’m already thinking of what features I might want to add next. Maybe adjust how strong the charge/discharge flow looks depending on the current. Maybe an icon showing Gnome notifications. Or yet another simple system resource monitor, working within this module system.

My code is a hacky mess, so if anyone who actually knows what they’re doing is building something like this, I’m interested in seeing it.

7 Likes

the biger thing i would like to see out of the box is some kind of notification support (probibly just icons)

and configurble demo atract animations. kinda like the boot loader games that start when the display first turns on but configurable to stay on for longer up to forever, whitch games/animations to cycle through and how long to switch to a diffrent animation.

I created a system monitor application for my FW 16 LED Matrix Modules. The left module shows the load on the 8 CPU cores with an outward spiraling pattern, the system memory consumption, and the battery charging status / battery level. The right module shows disk and network usage.

Source code is here for anyone that wants to use it, or just see how I used serial to send updates to the modules:

And here is a bad picture. The difference in brightness between the background and foreground elements in the display is better in person, and also configurable.

8 Likes

Nice one. I’ve grabbed your code and will see what I can do with it.

That’s pretty cool. Thanks for sharing.

One adjustment to the run.bat file is to install psutil and wmi, so just need to update that install line from py -3 -m pip install pyserial numpy to py -3 -m pip install pyserial numpy psutil wmi. Worked after that though! I love it!

I also commented out the lightning bolt in drawing since I limit my charging to 75% and it was causing some weird artifacting in the non filled spacing