Monthly Archives: February 2021

2/12/2021 – New features are coming

Well it has been relatively quiet over in OPP firmware land, but with the advent of the CobraPin kickstarter, a couple more features were added. Going back into the way back machine, Jeremy from many years ago asked me to support different intensities for incandescent wings. With all of the work that Cobra and Jan put into helping me test the Neopixel features, it seemed that it was time to leverage those commands and support 32 levels of intensities for incandescent bulbs. Just as with Neopixels, a command can be sent to set the intensity of each bulb from 0 (off) to 0xff (100% of its full blazing glory).

The incandescent intensity command is the same as the Neopixel fade command with an offset of 0x1000 to indicate an incandescent bulb intensity is to be changed. So an offset of 0x1003 changes the intensity of the fourth bulb. The STM32 supports up to 32 incandescent bulbs, so the offsets range from 0x1000 to 0x101f.

But wait, there is more! If OPP can support various incandescent bulb intensities, why not also support fading of incandescent bulbs just like you can fade Neopixels on and off. You ask for it (well actually nobody ask for this feature, so let’s start again)…Nobody ask for it, so that’s why it was coded. The OPP fade engine is now generic so it can apply fades and various fade times to individual LEDs within the Neopixels, or incandescent lamps. Just like setting intensities, it works exactly like Neopixel fading except with an offset of 0x1000 for the first bulb.

You’re probably thinking to yourself that those changes are more than sufficient for all your pinball needs, but no, you wouldn’t be correct. Turns out some people don’t like that the switch matrix is driven using active high logic. So very few pinball machines use active high logic (unfortunately the Bally machine that I implemented switch matrices on was one of them). Because of that, some people had to switch the columns and rows of their switch matrix to make it work. Those days are now over. Change the python wing configuration from WING_SW_MATRIX_OUT to WING_SW_MATRIX_OUT_LOW and badda bing, it is now an active low switch matrix. I doubt if anyone will change the configuration of currently running machines, but future machines may benefit from this change.

One last big non-announcement. A new plank board is being created by Cobra18t. I even heard he ordered a prototype just a couple of days ago. We have been going back and forth with firmware and trying to get everything just right. I cut him a firmware version a day or two ago, and we both agree that it looks like it might be fully working with the limited test setup that he cobbled together. I’m not going to spill the beans and tell you what the new plank is, but I will let him announce it when he is good, ready, and happy with its performance.

So, yeah, I can support more features in the firmware (of course it makes the firmware more complex which some wonder why all the complexity (that comment made me chuckle to myself…hey, why is OPP code so complex, but I’m using all the Arduino framework, and a black pill)) but these features aren’t supported in MPF as of this moment. (Heck, Jan doesn’t even know about them unless he reads the blog). He mentioned half a year ago that it would be easy to support incandescent lamp intensities. I assume that also applies to supporting incandescent fading. The active low switch matrix should be very simple for MPF to support. Hopefully a kind soul will add the MPF support for these features.