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.

2 responses to “2/12/2021 – New features are coming

  1. Hello!

    Will the firmware for the STM32 still work outside of the CobraPin controller for a distributed build? Or, has the firmware been changed enough so this is no longer an option?

    Thanks!

    -Anthony

  2. The OPP firmware is always tested on individual STM32 boards to insure that it will work for people who don’t have something like a CobraPin board. All the features that have been a.dded for the CobraPin board (NeoSol wing) can be used without a CobraPin board, just configure it using Gen2Test.py. OPP is the bargain basement of pinball controllers, and was meant for the makers and hackers out there who aren’t afraid to solder some through hole parts.

    The bonus of the CobraPin board is it forced me to implement some new features and Cobra spent the time to help me test those features to insure that they were working properly. He even created a lamp matrix plank board which will help drive older machines without rewiring the playfield. (rewiring playfields suck, so this should reduce the need unless you like to rewire playfields)

    I love distributed! It reduces wiring significantly underneath the playfield. No giant bundle of wires under my SS3 playfield. It also allows you to separate the high voltage/current lines from the low voltage signals. Because of the one playfield I rewired to distributed, I still have 1/2 the wire left after using the wire for a second playfield.

    Have no fear. OPP will never abandon you without the possibility of getting new pinball controllers (well, maybe if the processor supply disappears again, but hopefully, I’ve picked a processor this time that is going to stay around).

Leave a comment