Jump to content
Download Section Back Up, Navigate the Right Hand Menu to find files, ignore the 0s

LED-wiz alternative ?


pixelmagic

Recommended Posts

My preffered situation for V2.0: Raspberry Pi communicating on low-level with Pinmame, Pi driving dedicated Arduino board(s) (for the # outputs). Configuration for your specific tables with hardware done with web-interface running on your own Pi, getting the config data from the internet on request. Live testing and simulation possible for all effects.

What ? yeah... let me have my dreams :)

This seems somewhat ridiculous though, doesn't it? Nothing we're doing should require offloading the work to a separate CPU, not if the true bottleneck is simply the scripting in the first place, no? It seems nuts to me that you'd want to offload things to a Pi, which then talks to the Arduino, when there's probably more than enough processing power in the host PC if the scripting was simply more sophisticated. I say that like it's that easy to solve, and it's not and I realize that, but surely it wouldn't be any crazier than dragging an entirely redundant piece of extra hardware into the mix.

Link to comment
Share on other sites

  • Replies 363
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Hi Aurich,

you are probably correct - but we all like playing with hardware dont we! :) The limiting factor for the current Arduino mega is the CPU and really the memory - only 8K. I have done a lot in that 8K and spent alot of time optimising the hell out of it for the 16Mhz processor. It works pretty well and time will tell under full load if it can cope - i think it will but what i would really like is more memory - i spent 2 days rewritting code to save a few 100 bytes :dancing2:

I suspect the scripting is not a fixable problem - short of a rewrite of every table vbs or the vbs script engine! Instead i intend to try and move the arduino interface code from the vbs completely and run as a seperate c# task and have it intercept events at a lower level with a custom dll as required - that may take a while to work out but has been done by others e.g. Russ with his DMD board.

regards

Shifters

Link to comment
Share on other sites

Hi Aurich,

you are probably correct - but we all like playing with hardware dont we! :) The limiting factor for the current Arduino mega is the CPU and really the memory - only 8K. I have done a lot in that 8K and spent alot of time optimising the hell out of it for the 16Mhz processor. It works pretty well and time will tell under full load if it can cope - i think it will but what i would really like is more memory - i spent 2 days rewritting code to save a few 100 bytes :dancing2:

I suspect the scripting is not a fixable problem - short of a rewrite of every table vbs or the vbs script engine! Instead i intend to try and move the arduino interface code from the vbs completely and run as a seperate c# task and have it intercept events at a lower level with a custom dll as required - that may take a while to work out but has been done by others e.g. Russ with his DMD board.

Hey, if you want to play with it, why not. The Pi is cheap, and if that kind of insanity appeals to you and fixes the problem who am I to argue?

It just seems slightly crazy to me that we've reached the point where strapping what is essentially an entire new computer, in a very literal sense, into the cabinet is the solution. :P

Link to comment
Share on other sites

Aurich,

Well my cab has its own gigabit network inside and did have 3 PC's - now only has 2, a pi and 2x arduino mega's :pcguru:

Its a pinball cab, hyerspin and a jukebox too!! (in effect a custom PC case that plays games :)

Pixel,

God my fingers are killing me from twisting copper wire in my cab all day but i am getting there!!

5V PSU came today, recon a few more days to finish wiring. Working on a new tool for config loading and control. My rack is starting to feel lonely!

Now i wonder if next year i can afford a real DMD and Russ's board :boxing: <-- that probably the wife :flowers:

regards

shifters

Link to comment
Share on other sites

  • 1 month later...
  • 4 weeks later...
Hi Aurich,

you are probably correct - but we all like playing with hardware dont we! :) The limiting factor for the current Arduino mega is the CPU and really the memory - only 8K. I have done a lot in that 8K and spent alot of time optimising the hell out of it for the 16Mhz processor. It works pretty well and time will tell under full load if it can cope - i think it will but what i would really like is more memory - i spent 2 days rewritting code to save a few 100 bytes :dancing2:

I suspect the scripting is not a fixable problem - short of a rewrite of every table vbs or the vbs script engine! Instead i intend to try and move the arduino interface code from the vbs completely and run as a seperate c# task and have it intercept events at a lower level with a custom dll as required - that may take a while to work out but has been done by others e.g. Russ with his DMD board.

regards

Shifters

Hey I'm just starting out and skimmed through this trying to figure out if I will need an LEDWiz or if there was something else I could use. I've done some Arduino work and I've done a couple side jobs for a local telescope shop where we created USB based hardware and I wrote all the embedded code using for the Atmel chips. We've been through all the Windows driver winqual mess to certify our USB driver as well. We used to use the ATMega 162 but now have moved to the ATMega128.

Anyways when I saw you talking about the lack of memory and processor speed on the Arduino I remembered seeing an article a few months ago where Arduino came out with a new version that uses an ARM Cortex-M3 core running at 84 MHz with 96K of SRAM and a boatload of I/O pins. If you could switch over to that it should be smokin fast.

Gil

Link to comment
Share on other sites

what 5v devices do you have shifters? i have found alot of "5v" devices still respond to 3.3 signals nicely :) the amount of times iv talked to chips that say they r "5v" input level but i just connect them to a 3.3v stm32 and the quite happy chat away :) you can also get level converter chips :)

Link to comment
Share on other sites

what 5v devices do you have shifters? i have found alot of "5v" devices still respond to 3.3 signals nicely :) the amount of times iv talked to chips that say they r "5v" input level but i just connect them to a 3.3v stm32 and the quite happy chat away :) you can also get level converter chips :)

Hey thats hardware speak - i do the software! Pixel is the guy you need to speak too!

BTW this is not about fixing micro stutter its also about more than 32 devices - the current design supports 200 - 250 devices per board and the boards can cascade - the whole design supports that.

Shifters

Link to comment
Share on other sites

200 outputs wow. Pinball disco lol

Funny you should say that ... check out Pixels vids. I have full RGB individually addressable led strips around the playfield, backbox, on top of the back box, and back of backbox and bottom of cab :-) RGB flippers, PWM front buttons etc.

Oh yeah and it handles motors, contactors etc etc already - pixel been a busy boy with the hardware (well at least last year :-) ) and the software has lots of features like turning contactors off at night with a single click, minimum and maximum PWM for motors etc to allow control to start the motor up and not make the legs fall off. I have two arduinos in my cab connected via serial and basically they talk to each other so thats 500 devices :-) You can connect anything up to 10 if you want to go nuts!

Its an event driven system, so a single event can trigger all kinds of built in fancy led patterns (in any colour you wish with full RGB) - see pixels video, that is happing with just a few bytes in a single event.

Would love to use the duo - but Pixel needs to look if the existing hardware can support that!

Shifters

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Hi, I've been working on my Arduino Mega for the last couples of days. My goal is to both replace the LedWiz and the Ipac. So far the Arduino code is done (still it will need modifications later if I use shift registers).. it's sending inputs to a C# program that translate the message into keypresses. So far so good, there's is no lag between the push of the buttons and VP.

Almost no hardcoding to make it easy to configure. You just have to change 2 arrays in the code with the pin # used for I/O.

The next step is to interface that C# program with VP and VPM to send commands to the Arduino (again the arduino code is done).

Edited by gyom
Link to comment
Share on other sites

Hi, I've been working on my Arduino Mega for the last couples of days. My goal is to both replace the LedWiz and the Ipac. So far the Arduino code is done (still it will need modifications later if I use shift registers).. it's sending inputs to a C# program that translate the message into keypresses. So far so good, there's is no lag between the push of the buttons and VP.

Almost no hardcoding to make it easy to configure. You just have to change 2 arrays in the code with the pin # used for I/O.

The next step is to interface that C# program with VP and VPM to send commands to the Arduino (again the arduino code is done).

I like where this is going... this whole Arduino project is what I am waiting on to begin my own Virtual Table.

Link to comment
Share on other sites

Hi Gyom,

we still use the vb event and a vbx control to get the data from VP to the arduino. It still has stutter some times under heavy load - this is not the arduino or its comms but we believe the slowness of getting events using the vbscript within each table. I have discussed briefly with russDX how to interface to VP with a DLL directly for speed but haven't made any progress as of yet (too many projects!). We then would have shim layer (done by pixel magic) to translate the events into something specific for your arduino config (ala ledwiz just lots more of it). The trick i think is getting that dll written. I have a C# program for arduino control and config. If you want to share any source let me know - ditto with any progress! My arduino program uses multiplexors etc etc and is optimise for output - control of 100's of individual leds is easy (ala the strips you saw videos of earlier in the thread)

regards

Shifters

Link to comment
Share on other sites

Hi shifters!

Well for what I've read so far (I'm no VP/VPM expert), but I think there will always be a problem the ways things work right now between those 2. There is no "master of the key".. by that I mean that everything must daisy chained because the COM object as to be created in the tables script and there is no other way since VBScript doesn't support any other way to interact with dlls. So since VP is the only owner/creator of the VPM object (the famous CreateObject("VPinMAME.Controller")), if you want to access the VPM object you have to "hook" to it by placing yourself in the middle to be the creator/owner of the VPM object. Like I said I'm no expert, but I'm pretty sure it's the way BS2 or UVP works.. they replicate the same interface as the VPM Com interface (so it's the same signature) and create their own COM so VP don't see the difference (that's why you just change to something like CreateObject("B2S.Server")).

Even if we run VPM directly in VP with direct dll access, you still have the problem that things like B2S won't work..

Like I said, as long as things will work that way, things gonna be messy with all the daisy chaining. VP can't be the owner of VPM (or any other soft). VPM should be on is own allowing anyone who want to listen to it. So the main problem to attack for me is that. I've read so much stuff this week to try find a solution that my head gonna explode.. but there's a couple of solution path I think (once again, I'm no expert..), like running VPM in a COM server .exe (out-of-proc) and turning it in a "Singleton" so everytime someone try to instanciate it (createobject), it return the same object (pointer). Or having a dedicated dll that create the VPM object and have 1 function to return it, so once again anyone who want to have access to VPM call that dll. But that would mean to change VP since like I said VBScript doesn't support dll calling other than COM.

Example, you want do develop your Arduino driver, you call that dll that return you the pointer to the unique VPM object. After that you could just ping it to see the states of the led/sol and translate it in outputs for the arduino. Meanwhile VP still does it's thing.

The only consern would be making that dll safe so people could just listen (read) the object and not change it.

Edited by gyom
Link to comment
Share on other sites

  • 2 weeks later...

For those who might be interested in my current work, I've put my code on GitHub. PLEASE READ THE README! :P

https://github.com/gui999/ArduiPin/

It's only my "UNTESTED" Arduino code since I'm curently redoing my C# interface. I'm looking to maybe switch to WPF over standard Windows Form, mainly for it's databinding and commands cabability. I want to create an Arduino object with a visual representation of the board, with clickable pins to link them visually to events, keys (for inputs) or toys with a way to manually launch a command to test the toys (a test mode).

Also, I'm looking for a way to build my own analog plunger and implement it in my Arduino code. It's an idea I took from the DIY hi-hat I've planned to build for my megadrum: http://www.megadrum.info/forums/viewtopic.php?f=3&t=422

All you need is a plunger, and one of these: http://www.radioshack.com/product/index.jsp?productId=2049723

Since the plunger is one big spring.. it should be fairly easy to build.

Link to comment
Share on other sites

For those who might be interested in my current work, I've put my code on GitHub. PLEASE READ THE README! :P

https://github.com/gui999/ArduiPin/

It's only my "UNTESTED" Arduino code since I'm curently redoing my C# interface. I'm looking to maybe switch to WPF over standard Windows Form, mainly for it's databinding and commands cabability. I want to create an Arduino object with a visual representation of the board, with clickable pins to link them visually to events, keys (for inputs) or toys with a way to manually launch a command to test the toys (a test mode).

Also, I'm looking for a way to build my own analog plunger and implement it in my Arduino code. It's an idea I took from the DIY hi-hat I've planned to build for my megadrum: http://www.megadrum.info/forums/viewtopic.php?f=3&t=422

All you need is a plunger, and one of these: http://www.radioshack.com/product/index.jsp?productId=2049723

Since the plunger is one big spring.. it should be fairly easy to build.

Hi Gyom,

Been out of the scene for a little bit, but this caught my eye. While I have a plunger on my cab, I never really did anything with it.

I was always looking for the best way to create a virtual plunger (The hardware specifically).

This high hat controller looks like a cool idea. Think I understand the principle of variable resistance but, how do you intend to interface these led's with your pc?

I'd love to see pics and hear your feedback on how well it works out when completed.

Edited by BitPirate
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...