Ultimarc Ultimate I/O RGB LED controller

Discussion of keyboards, gamepads, joysticks and other input related peripherals.
Rolyen
Posts: 7
Joined: Sun Jul 24, 2022 12:08 am
Been thanked: 1 time

Ultimarc Ultimate I/O RGB LED controller

Unread post by Rolyen »

Hi all. I'm very new to all of this, but have been methodically putting together components and building my 1st arcade around the MISTER FPGA.

I decided to go with the Ultimarc Ultimate I/O board, and RGB light-up buttons, thinking that I could somehow configure the on-board memory on the controller to set them to specific colors (either a color sequence, or different colors for player 1 and 2) without needing to be connected to a PC or Rasberry Pi (As I understand it, the MISTER FPGA cores do not yet have support for controlling RGB's or supporting 3rd party software for it?).

However, playing around with it, it seems as if it's really designed to run 3rd party software to control the LED's (eg. LEDBLinky and such), and I can't find any info on setting up the LED's on a "fixed" basis without a connected PC.

I'm hoping I'm wrong, and that someone here has experience in dealing with such a setup. Sorry if this is a repeat question - I've been searching this and other arcade forums for a while, and haven't come across this particular issue yet (but figure it can't be that uncommon, as outside the MISTER community, RGB arcades seem to be all the rage).

-Rolyen
Blitzwing
Posts: 103
Joined: Sat Sep 05, 2020 9:52 pm
Has thanked: 11 times
Been thanked: 24 times

Re: Ultimarc Ultimate I/O RGB LED controller

Unread post by Blitzwing »

Hi, I've got no experience with this sort of setup so I can only give an uneducated guess. This IO board looks like it connects through GPIO pins?? If so that's immediately a no go as most, if not all, of the GPIO pins are in use either for SDRAM or the Analogue/digital MiSTer IO boards. To get it to interface with that second row (instead of the standard IO board) would require significant modification of the individual cores as well as "Main"

If the ultimarc works via USB then I suppose could be possible to write something on the Linux side to work with it, but even then there won't be any communication to it from a running game.

Would it be possible to run something like a Pi Zero alongside the MiSTer in your cabinet to control the lights?

There might already be something out there that does what you want but I've not heard of it.

Mike.
Flandango
Core Developer
Posts: 388
Joined: Wed May 26, 2021 9:35 pm
Has thanked: 41 times
Been thanked: 328 times

Re: Ultimarc Ultimate I/O RGB LED controller

Unread post by Flandango »

I don't have the Ultimate I/O board but that is something I had been looking into for my next arcade machine I build so I had done some research.
The board as a controller will work with mister but to drive the LED you will need 3rd party software.
There is a linux based solution (LEDSpicer) but since I don't have the board I haven't played with it to see what exactly is needed to getting working with Mister but there is a thread here on the forums that contains some info.
If I ever get my Finance Officer to approve the purchase request of the board and 30+ rgb buttons then I may be able to be of more help to see what, if anything, is needed to get LEDSpicer working with Mister.
Rolyen
Posts: 7
Joined: Sun Jul 24, 2022 12:08 am
Been thanked: 1 time

Re: Ultimarc Ultimate I/O RGB LED controller

Unread post by Rolyen »

Thank you for the replies. Ultimarc sells a basic controller that just controls leds (not combined with an input controller) with a mini usb connection to the PC/Pi. It might be possible to hook that up to a basic rasberry pi running LEDBlinky or some other led controlling LINUX software, and have the main I-PAC connected to the MISTER for controls. Clunky, but might be the only option for now. Will look into it down the road once I have the rest worked out, and update this thread if it works.
Rolyen
Posts: 7
Joined: Sun Jul 24, 2022 12:08 am
Been thanked: 1 time

Re: Ultimarc Ultimate I/O RGB LED controller

Unread post by Rolyen »

Hi again. Ok, answering my own question, in case it will help anyone else:

Apparently, I just needed to play around with the PACLED64.exe app for a bit (not the most intuitive, but fairly simple once you understand a few basics):

1. I'm using a controller called the Ultimate I/O made by Ultimarc. They have others that may work with this program as well, this is just what I'm using.

2. RGB LED's have 3 LED's in them, Red, Green, and Blue. The combination of these individual LED's and their relative brightness, determines the overall color of the RGB.

3. Each LED has to be individually addressed and it's relative intensity (from Zero/off to Max) has to be assigned, to get a particular color.

So for example, to make an RGB button look "Red", you would turn on Red (set it to some value from 1 to 255), and turn off Green and Blue.
Blue would likewise be Blue = On, Red and Green = Off (value of 0). All other colors are a combination of this basic principle.

You can easily google "RGB Code" and it will show you the various combinations and intensities for colors you want.

4. Each RGB has 4 wires - Ground, Red, Green and Blue. These connects into a 4-wire section or pin layout on the controller, where the 1st wire is always "Ground", and the other 3 are the Red, Green and Blue, respectively. Each of the pins that these colored wires connect to, has a separate numerical value. Your goal is to have the controller feeding the right intensity signal to each colored wire, for each RGB button, to give you the color pattern you want.

Because the "ground" pin or wire isn't counted, you only have to think of the color outputs when figuring out their numerical value.

Player 1 Switch 1: Player 1 Switch 2: Player 1 Switch 2

Ground ----------> ] ---Ground Ground ----------> ] ---Ground Ground ----------> ] ---Ground
Red ----------> ] --- Pin 1 Red ----------> ] --- Pin 4 Red ----------> ] --- Pin 7
Green -----------> ] --- Pin 2 Green -----------> ] --- Pin 5 Green -----------> ] --- Pin 8
Blue ----------> ] --- Pin 3 Blue -----------> ] --- Pin 6 Blue -----------> ] --- Pin 9

And so on.

Example, for the 1st 4-pins (or output ports if your board is more basic), which are Player 1 Swithc 1 in this example, pin 1 corresponds to the Red LED, 2 to the Green, and 3 to the Blue. The second four, Player 1 Switch 2, are Ground, Pin 4 (Red) Pin 5 (Green) and Pin 6 (Blue), and so on.

Oddly (not sure if this is my board, or more universal), this pattern reverses for pins 49 onwards. So pin 49 is now Blue, 50 is still Green, and 51 is now Red. This will matter later (see below)

Ok, so now you know the basics. Play around with the utility a bit if you want. You have to have power to the controller, AND have the micro USB cable connected to a USB source (for now, that USB source is your PC, but later, it can be your MISTER, Rasberry Pi, or whatever It just has to detect that there's something plugged in).

Run the PACLED64.exe utility. You should see two green bard at the bottom of the utility if you have the basic wiring set up correctly. One should say "DIRECT MODE" and the other should show the controller board that it recognizes (in my case, the 2nd bar says "I-PAC UIO FOUND", but this could be different depending on what controller you're using.)

Select "Clear Flash" to erase any previous script (including the factory default script) that was on the ROM. Don't worry, there's a button to "Restore Factory Script" if you want it back.

Tab over to "Brightness". This is where you will specific the combination of address and brightness level for each button you have.

You enter the numerical address of the pin you want to set the brightness for, and adjust the slider bard to the level of brightness you want. I wish there was a way to enter this numerically, but apparently there isn't, so just make do with what you have.

Once you've entered your pin code and brightness level, click "APPLY", and your RGB should change instantly. Of note, the "Apply" button only becomes selectable if there's been a change to the brightness value (slider). So for the next pin, it's not enough to change the number, you also have to move the brightness slider around to get the program to register that you're entering a different value. Tedious, I know.

So let's say you want the 1st RGB button to be red, the next green, and the next blue. It'll look like this:

1, 255 Brightness -> Apply
2, 0 Brightness -> Apply
3, 0 Brightness -> Apply

4, 0 Brightness -> Apply
5, 255 Brightness -> Apply
6, 0 Brightness -> Apply

7, 0 Brightness -> Apply
8, 0 Brightness -> Apply
9, 255 Brightness -> Apply

And so on. Also, at least for my board, this address pattern changes at pin 49, where 49 is now Blue, 50 is still Green, and 51 is now Red.

If you want all the pins set to a certain value, you enter "0" for the pin number, and once you set the brightness, all the LED's (and therefore, all your RGB's) will be set to this brightness level (this is as close to "white" as they get - light violet to my eyes).

Below, I'm breaking it down to the steps I had to take to get my 2-player setup to have Red buttons for player one (whose buttons I plugged into pins 1-24) and Blue for player 2 (whose buttons I plugged into pins 49-72):

1. Make sure you have the utility that Ultimarc publishes for controlling and programming scripts for LED control. You won't need to run this once you have your RGB LED's running the way you want, just to program the scripts. It's available at this link: <a href="https://www.ultimarc.com/PacLED64.exe">PACLED64.exet</a>

2. Install it on a PC, and launch it

3. On paper, map out your LED layout. You'll have to do a lot of precise address/brightness entering, so having it on paper in front of you reduces errors and having to restart.

4. Plug in your Controller's power and connect it via USB to your PC.

5. in the Utility, "clear flash". Then tab over to Brightness, enter "0" and set brightness to Zero, click "Apply"

6. For my layout, every 3rd key starting with 1, was Max brightness. This ended up giving me all reds for player 1, and all blues for player 2 (remember, my pin address changes at key 49).

7. Go back to "SETTINGS" tab, click "Start Recording Script".

8. Go back to "BRIGHTNESS" tab, and enter "1" and slide to max, Apply. Next, "4", max brightness, Apply, and so on, until you get the buttons set to whatever you need. Note, if you want different color combinations, then do it your own way, as long as you understand how they are mapped).

9. As you do this, you should be seeing the buttons lighting up the way you want, as it's both recording the script, and executing the command, at the same time.

10. Once done, go back to "SETTINGS", click "Stop Recording Script".

11. Click on "Run Script".

12. Now, unplug both the power from your Controller, and unplug the USB cable from your PC.

13. Plug the USB from your controller to your MISTER.

14. Power up your Controller and your MISTER. Your RGB lights should be working on their own now, without needing the PACLED64 utility running.

Hope that helps, good luck!
Post Reply