(Topic ID: 239045)

Arduino Pinball Controller

By AmokSolderer

5 years ago


Topic Heartbeat

Topic Stats

You

Linked Games

No games have been linked to this topic.

    Topic poll

    “Are you using the APC and what's the reason if not?”

    • I'm using APC with MPF 4 votes
      15%
    • I'm programming APC natively 2 votes
      7%
    • I'm waiting for PinMame support 5 votes
      19%
    • I have an APC board, but I still have to populate it 3 votes
      11%
    • I would only use the APC if populated boards were available 13 votes
      48%

    (27 votes)

    This poll has been closed.

    Topic Gallery

    View topic image gallery

    20240317_224906 (resized).jpg
    IMG_20220326_054355 (resized).jpg
    IMG_20220324_115019 (resized).jpg
    0803_1 (resized).jpg
    IMG_20220306_221732 (resized).jpg
    IMG_20220225_113217 (resized).jpg
    IMG_20220224_102209 (resized).jpg
    afficheur (resized).jpg
    bootok (resized).jpg
    20220225_100158 (resized).jpg
    20220225_100214 (resized).jpg
    20220225_084428 (resized).jpg
    U1wrongPol (resized).jpg
    453DBE7E-8CD8-4CAE-82B9-46E2E87021F9 (resized).jpeg
    32FCCD80-1C7F-4782-84A2-0C0FFE9F3D78 (resized).jpeg
    BA633E7E-D152-46C5-932E-E625D68C0A1F (resized).jpeg

    There are 959 posts in this topic. You are on page 1 of 20.
    18
    #1 5 years ago

    I have designed an Arduino based pinball controller for use in Williams games from System6 to System11c.

    This board will replace all CPU, Power driver and Music/Speech related boards - an interface for hardware extensions is also present.

    At the moment this board cannot be used as a pure replacement as it cannot use the original EPROM software, instead it is meant for people who want to program their own games or add some hardware toys. I have therefore programmed some kind of pinball operating system which takes care of the hardware related stuff and offers an API for the game programmer to work with.

    The board is quite cheap (well below 100€) and has no special components like FPGAs on it, so it is quite easy to build it by yourself.

    There's a catch of course: I don't want to earn money with this project, which means I'm not going to sell boards or anything else to you, so you don't have much choice except of building it by yourself. However I put all the necessary data to my project page at GitHub, together with a lot of information to make it as easy as possible.

    https://github.com/AmokSolderer/APC

    It's still a lot of work to do the code for a new game and I'm some how fed up with doing it all by myself. Therefore my hope is to establish a small community of people who have fun designing new game rules and who just needed a base to start from.

    So, if you are interested in this project, please give me some feedback.

    The photo below shows the APC in my Pinbot

    APC_Pinbot (resized).JPGAPC_Pinbot (resized).JPG
    #2 5 years ago

    Wow nice job. I haven't looked at any example game code, but the hardware looks great. If you get some pcbs (unpopulated) fabricated I would be interested.

    #3 5 years ago

    Cool idea. I was working on similar myself for a while...

    Why system 6 and not 3 and 4?

    #4 5 years ago

    I'm interested. I have an earthshaker in the shop I can try this on.

    #5 5 years ago
    Quoted from zacaj:

    Why system 6 and not 3 and 4?

    Hmm, mainly because I don't know any System3 or 4 games and just forgot them.

    However, after a first glance at the schematics I think you're right and they should work as well.
    I see a difference in connector 1J4. Apparently, the System3 and 4 games don't have a pin for the 'Memory Protection' switch and no GND pin. This would require some kind of simple cable adapter.

    But I'm a bit confused about the 12V supply of the CPU board. In the schematics of the Flash CPU (System6) pin 9 of 1J2 is labeled with '12V unreg', but in the connector overview (attached below) it is mentioned that this pin has only 'unregulated 5V' (I guess it's a five, the scan is not very good).
    In the 'Disco Fever' schematics it is consistent, schematics and connector overview state that there's only 5V unregulated present at this pin, but I wonder how they want to exceed the threshold voltage of the 6.8V zener diode they have there to release the Reset signal as soon as the voltages have risen sufficiently to ensure a stable operation of the 5V regulator.

    If you have a System3 and 4 game at hand, could you please measure the voltage at pin 9 of connector 1J2? The APC needs 12V there to supply it's audio amplifier, so it would be good to know whether they're there or not.

    Thanks in advance

    Flash (resized).pngFlash (resized).png
    #6 5 years ago

    As far as I know it's the same voltage, just labelled differently. It's coming from the input to the 5V regulator on the PSU, which is just half wave rectified DC from the transformer. Don't have access to my system 3 at the moment

    If you only need it for the sound card though, it shouldn't matter. Sys3-7 all have a dedicated external card they can use

    #7 5 years ago

    I found the schematics of a System3 power supply board and it looks like they spared the bridge rectifier, but used only TWO diodes to rectify the 9.3VAC coming from the transformer. That would mean the voltage at pin 9 of 1J2 should be in the range of 6.3VDC (half of System7) which is not enough for the APC.
    The easiest way would probably be to just use a cheap 12V power supply and a cable adapter to feed this voltage to 1J2.

    Quoted from zacaj:

    If you only need it for the sound card though, it shouldn't matter. Sys3-7 all have a dedicated external card they can use

    That's true, but the goal is to replace the sound card also and to be able to spice up the sound of these old machines a bit.

    #8 5 years ago

    I found the schematics of a System3 power supply board and it looks like they spared the bridge rectifier, but used only TWO diodes to rectify the 9.3VAC coming from the transformer. That would mean the voltage at pin 9 of 1J2 should be in the range of 6.3VDC (half of System7) which is not enough for the APC.
    The easiest way would probably be to just use a cheap 12V power supply and a cable adapter to feed this voltage to 1J2.

    Quoted from zacaj:

    If you only need it for the sound card though, it shouldn't matter. Sys3-7 all have a dedicated external card they can use

    That's true, but the goal is to replace the sound card also and to be able to spice up the sound of these old machines a bit.

    #9 5 years ago

    Looks like a very nice board for retheams or custom pinballs! Are you interested in adding support for the Mission Pinball Framework? We already support similar platforms (such as LISY Gottlieb System 1/80 or Snux System 11): http://docs.missionpinball.org/en/dev/hardware/index.html. We can help with the python side. I guess we could interface the Arduino via serial. Let me know if you are interested.

    Jan

    #10 5 years ago

    Just for your information: there is a vivid discussion ongoing in the german pinball forum (also with Jan) about how to add support for PinMame and the Mission Pinball Framework to the APC, which would require a PC (or Raspi) to be connected to the APC via USB.
    With PinMame running on the PC it would be possible to use the original Williams EPROM software and MPF would ease the development of homebrew game rules.

    Albeit this is mainly a software topic, I'm thinking about adding an analog audio input to the APC. With the audio output of the PC being connected to this, the audio amplifier of the APC could be used to play sounds generated by the PC on the pinball's loudspeakers.

    I'll send an update when a decision is reached.

    Additionally I'm going to add System 3 and 4 games to the list of supported platforms (under certain preconditions). Thanks to zacaj for pointing this out.

    #11 5 years ago

    By the way:

    Quoted from AmokSolderer:

    That would mean the voltage at pin 9 of 1J2 should be in the range of 6.3VDC (half of System7) which is not enough for the APC.

    This was bullshit of course (never drink beer while replying to technical threads). With 9.3VAC you have an amplitude of more than 13V and if you subtract the threshold voltage of the rectifying diodes you end up slightly above 12V.

    That means, if I didn't miss anything the only adaption needed for System 3 and 4 boards to work with the APC is to add a small cable adapter to connector 1J4.

    #12 4 years ago

    Update:

    I have generated a Base Code which should run on all machines with minor modifications and is a good base for own game code.

    My next task is to implement an API to control the APC via USB which would enable PinMame and MPF support.

    Furthermore I'm not going to add an audio jack to the board. I've tried it out and the signal strength coming from the PC is too weak to get a decent audio quality. To improve it one would have to add more gain to the pre-amplifier which is just used as an active filter at the moment. But if you have to solder anyway you can also add the audio jack by yourself - or spend 5 bucks to buy a cheap amplifier board from china.

    That means the board stays like it is and I'm about to get a quote from a german board manufacturer. When we know the price you can still decide whether you want one. Or does anyone know a suitable manufacturer in the US?

    And as requested the Gerber files for the Mask and Silk Layers have been added to the Layout section.

    #13 4 years ago
    Quoted from AmokSolderer:

    That means the board stays like it is and I'm about to get a quote from a german board manufacturer. When we know the price you can still decide whether you want one. Or does anyone know a suitable manufacturer in the US?

    You could always fab them in China for almost nothing. Assembly might be a few bucks but the boards are usually cheaper than the shipping. Seeed or itead are proven MFGs for boards from China. They also ship to the US.

    #14 4 years ago

    The quotes from the PCB manufacturers have arrived. I have received quotes from the german manufacturer IBR/Ringler and from Seeed in China.
    One big difference is that IBR charges 75€ for preparation (exposition masks and so on). If the board doesn't change afterwards you can order more without having to pay the preparation fee again, but with the first order you have to pay it. I'd add 5€ to each board to compensate for this. This way I'd be even after 15 boards.

    For 5 boards the price at IBR would be for you:

    127€ (Boards) + 7€ (shipping) = 134€ : 5 = 27€ (per Board) +5€ (preparation cost contribution) + 10€ (shipment to the US) = 42€

    The same for 10 boards:

    158€ (Boards) + 7€ (shipping) = 165€ : 10 = 17€ (per Board) +5€ (preparation cost contribution) + 10€ (shipment to the US) = 32€

    Seeed doesn't charge any preparation fees, but shipment is more expensive.

    5 boards from Seeed:

    71€ (Boards) + 34€ (shipping) = 105€ : 5 = 21€ (per Board) + 10€ (shipment to the US) = 31€

    10 boards from Seeed:

    96€ (Boards) + 45€ (shipping) = 141€ : 10 = 14€ (per Board) + 7€ (shipment to the US) = 24€

    Of course, there is a certain risk of a shipment from China getting lost. Additionally every now and then shipments like this are stopped by the german customs, which will add a lot more to the price. Furthermore I did some businness with IBR some years ago and I know they're delivering good quality.
    I'd therefore prefer to order from IBR, which would mean a price per board of 42€ (roughly $38) for you if we just order 5 boards.

    So please drop a line if you want a board for this price. The more people are interested the cheaper it get's of course.

    #15 4 years ago

    I'm.down for a couple. Pm sent

    #16 4 years ago

    In the german Forum someone came up with https://jlcpcb.com/
    Apparently they charge only 32€ for 5 boards including shipping
    Shipping takes a while, but he has ordered from them several times and the boards were of good quality.

    For us this would mean that shipping the boards from Germany to the US would cost more than the boards itself, which makes no sense.
    Therefore I propose the following: I'm going to order 5 of them for Germany only. Then we check whether the boards are OK and if they are I'd be very grateful if one of you would order 5 for the US. This person would then save the shipping cost and it would probably still be cheaper for the rest of the US guys. Additionally this company probably knows how to ship stuff overseas while minimizing customs trouble.
    At the moment I have 3 ordered boards from the US (4 if Pinash confirms his interest), but I think there will be a lot more as soon as some of you have confirmed it to work.

    What do you think about this?

    #17 4 years ago

    I can handle the us orders for you

    #18 4 years ago
    Quoted from Cheddar:

    I can handle the us orders for you

    Thank you Cheddar, I appreciate that.

    I have just placed the order and for some reason they haven't charged the shipping costs, because I just paid $24.
    I'll send an update when the boards have arrived.

    By the way I'm just implementing the new USB API to control the APC via USB commands. So hopefully we will have PinMame and MPF support soon.

    1 week later
    #19 4 years ago

    Update:

    System11c displays and USB command mode are working.
    Next task is to add support for System7 displays as our first machine to try PinMame on will be a Jungle Lord.

    Still waiting for the boards.

    IMG_0120 (resized).JPGIMG_0120 (resized).JPG
    #20 4 years ago
    Quoted from Cheddar:

    I'm.down for a couple. Pm sent

    Hey Cheddar man
    I'd be interested in these also. It may be a turning point for my learning to code
    Hopefully we'll talk more at the show
    See you there

    #21 4 years ago

    The boards have arrived and they look great.
    Now it's up to you to decide whether you want to order now or wait for the german guys to clean the pipe.

    I already implemented an additional minor HW change which makes the use of pre Sys11 displays a bit easier. It's just an additional resistor and a transistor. I still have to change the documentation accordingly, but the design data is up to date.
    I got the idea from the discussion in the german forum and it is of course possible that more improvements come up when more people start using the boards.

    However, it seems to be much more difficult to get the DIL version of the 74FST3244 devices in the states, so I'm thinking about changing the layout to an SMD footprint.

    What do you prefer, should I change the layout or do you want to look for the DIL version? I think the german vendor also ships to the US, but of course it will be more expensive. I used this offer:

    ebay.com link: 5x IDT74FST3244P Octal FET Bus Switch IDT
    P1020494 (resized).JPGP1020494 (resized).JPG

    #22 4 years ago
    Quoted from AmokSolderer:

    However, it seems to be much more difficult to get the DIL version of the 74FST3244 devices in the states, so I'm thinking about changing the layout to an SMD footprint.

    Could you put both the SMD and the DIL footprint onto the board? That would allow assembly based on availability of parts.

    #23 4 years ago
    Quoted from jabdoa:

    Could you put both the SMD and the DIL footprint onto the board? That would allow assembly based on availability of parts.

    I gave it a try, but the result always turned out to be quite messy. So I did some research about the replacement of the 74FST3244.
    There's one direct replacement 74cbt3244 which seems to be still in production, but not in a DIL package.

    The second alternative is the 74BCT760. This is not a direct replacement, since it's not a bus switch but an open collector buffer. Electrically this is IMO the better solution, as it provides a clear separation between the switch matrix and the special switches. This is the kind of device I had in mind when I designed this stage. The bus switch was just a second choice when I couldn't find an open collector buffer.
    And even better: the DIL version of this device is available at DigiKey.

    Hope this helps.

    2 weeks later
    #24 4 years ago

    How did I miss this thread? Really nice work!

    If the support for this does get to MPF and latency isn't a problem, then this should be a *much* cheaper solution than the current choice of P-ROC with my Sys11 driver board. You support a wider range of machines, and can also drive the segment displays which we can't currently do without another interface board.

    Watching this with interest. For Pinmame control, take a look at the P_ROC code in there at the moment. It basically looks for changes in the pinmame state of lamps and coils and just passes those through to the P-ROC, and for changes in switch states on the P-ROC which it updates the pinmame switch states with. I guess a similar approach would work with your APC.

    Mark

    #25 4 years ago

    Hi Mark,

    thanks for your Feedback.

    I hope we will have first results witch PinMame soon. Luckily there is an expert living nearby who has just built his own APC board and is now going to make PinMame work. Last time we met he was almost able to run my Jungle Lord. Lamps, Coils and Displays were already working - just some issue with the switch numbering prevented us from starting a game.

    Jan was also here and we tried to let MPF run the APC via the USB connection. The results were quite promising so I hope to be able to do my new Rollergames rules in MPF.

    The main technical discussion ist currently taking place in the german forum, but I'm trying to keep you posted from time to time.

    However if you want to join the discussion I could ask the others to move it to Pinside (at least partly).

    Frank

    #26 4 years ago

    Can you send me the link for the German forum? I could join there and follow...

    Ich kann Deutsch lesen und schreiben, obwohl ich Englaender bin. Meine Frau kommt aus Koblenz

    #27 4 years ago

    If you wrote the german sentence without any help from your wife then you're only lacking german Umlaute on your keyboard to be perfect.
    The link to the german forum is:

    https://www.flippertreff.de/start/forum/topic/11356-arduino-pinball-controller/

    You're welcome to join our discussion.

    Frank

    1 week later
    #28 4 years ago

    Very cool. There is no "RESPECT BUTTON" on this site, but if there was I would be pushing it now.

    I have been experimenting with pinmame on a raspberry pi and Ubuntu 18.04 on a Virtual machine.
    My experimentation with sound, display, LISY and proc, and other customization has taught me a great deal.

    Your approach using the USB port for communications from pinmame or MPF is fantastic, providing a universal homebrew connection portal.

    May I suggest that the USB communication also enable command for an external device to control a DMD display or command to talk to a different sound controller, or commands to an addon LED controller (more LIGHTS or topper).

    The idea being the homebrew game designer could use your board as the master and issue slave commands to a sound server, or external LED Control addon, or a DMD that replaces the two line display segment.

    This way, your master board does not have to grow additional ports and circuity, all it needs to do is issues slave commands to relavent external boards.

    Thank you for sharing your work!!!

    #29 4 years ago

    Just ordered some boards to Canada. Thanks so much for your hard work on this!

    #30 4 years ago

    cool stuff

    #31 4 years ago
    Quoted from legtod2:

    May I suggest that the USB communication also enable command for an external device to control a DMD display or command to talk to a different sound controller, or commands to an addon LED controller (more LIGHTS or topper).

    The USB interface is still under heavy discussion as we're currently implementing some changes. It's not yet complete, but you can see the latest dev version here:

    http://docs.missionpinball.org/en/dev/hardware/lisy/protocol.html#protocol-reference-v0-09-rfc

    Basically you could also use the APC alone to control additional HW - there is this 'Hardware extensions interface video' link on my GitHub page which is showing the use of an additional LED Controller and as you suggested, the USB interface could be used also. At a later stage, I might expand my SW to also support stuff like DMDs and so on, but at the moment most people seem to be interested in using MPF. Therefore they need to have an external master PC or Raspi and then it's probably easier to let this device control additional HW also.

    In the end it depends on the demand. If some guys are starting to use the APC alone, I'm going to spend more of my time for supporting my own API, but at the moment I'm lucky to have very competent guys working on APC support for MPF and PinMame, so I'm doing my best to keep the pace.

    Quoted from Tranquilize:

    Just ordered some boards to Canada. Thanks so much for your hard work on this!

    You're welcome. Feel free to participate by pointing out unclear parts or gaps in the documentation for example. This is a work in progress and every helping hand is welcome.

    #32 4 years ago

    Hallo,

    I would be in for a board as well
    Do you provide the BOM?

    #33 4 years ago

    Hey Frank and Mark, I spent a chunk of time creating and double-checking a parts list based on the German parts list provided. Can either of you guys browse it to be sure there aren't any errors? I'm particularly concerned about the array resistors and the chips with letter extensions on the names. I'm not familiar enough to know if there's a big difference. I've ordered spares for most if you're wondering about the numbers.

    If the list looks good, I'll send my order in and others can use it for mouser/digikey. Canadian digikey was missing a few parts and was generally more expensive, so I went with mouser. Both offer great service and quick shipping.

    Link for parts list: EDIT: Old: see a few posts down for updated list.

    Also, I'm struggling a bit with the 3244 chip. It says on the official APC parts list (the PDF in the Git package) to find it on ebay. Is this what I'm looking for?

    Ebay link: EDIT: Bad part. See a few posts down for updated chip.

    Thanks for all of you help so far!

    Lance

    #34 4 years ago

    Hi Lance,

    ICs and resistor networks look good.

    I think you can skip the lines 35 - 37 of your shopping list as they have a 2.54mm pitch and a lock.
    The rest seems to be OK, but let's try to sum it up, just to be sure:

    P1 -> 1x6 male pinheader with 2.54mm pitch
    P2 -> 1x7 male pinheader with 2.54mm pitch
    P4 -> 2x18 male pinheader with 2.54mm pitch
    P5 -> 1x8 male pinheader with 2.54mm pitch
    P6 -> 1x2 male pinheader with 2.54mm pitch
    P7 -> 2x3 female pinheader with 2.54mm pitch
    P8 -> 1x6 female pinheader with 2.54mm pitch
    P9 -> 1x4 male pinheader with 2.54mm pitch
    P11 -> 2x8 male pinheader with 2.54mm pitch
    1J8 -> 2x13 male pinheader with 2.54mm pitch

    That should be all with a pitch of 2.54mm, the rest has a pitch of 3,96mm.

    3 times 1x4 male pinheader with 3.96mm pitch and locking mechanism
    20 times 1x9 male pinheader with 3.96mm pitch and locking mechanism
    1 times 1x9 male pinheader with 3.96mm pitch and locking mechanism (in the BOM this is still a 9 pin connector but your board will already have the 12 pin)

    If you only want to use your board in Sys9 and Sys11 machines (like your Millionaire) you can skip the Sys3 - Sys7 connectors. That means six 9 pin connectors less and the 12 pin I mentioned can still be a 9 pin. You can see it on the board when there is an inner and an outer connector then the inner one is for Sys9/Sys11 and the outer one is for Sys3-Sys6. If there is only one then it is used for both. I'm going to add a table to my documentation to make it more clear.

    The 74FST3244 is a real pain in the a*, your eBay link is about the QSOP package which cannot be used. Apparently the DIP version of it is available only in Germany. That's why I'm trying to get rid of it by using a 74BCT760 instead, which is avaiable from Mouser in a DIP package. The problem is that nobody is using it yet so there is a small risk that it's not going to work as expected. Mark is the first to try, so I would like to wait until he has confirmed it to work. I'm afraid it's up to you to decide whether to risk it or wait a bit. Your boards will probably need more than two weeks to arrive anyway.

    Hope I didn't make it more confusing.

    Quoted from Nihonmasa:

    Do you provide the BOM?

    The BOM is linked in the Wiki on my GitHub Page.
    I'm sorry, but I don't sell any boards. I ordered 5 to check my Gerber files and the quality of the manufacturer, but these boards are already gone.
    If you order at https://jlcpcb.com/ like I did, the price for 5 boards is below 40€ including shipping, which IMHO is quite a bargain. Of course it would be great if you could offer the remaining 4 boards to others.

    Thanks in advance

    Frank

    #35 4 years ago

    By the way, we're using the Molex 26-48-1245 connector (Mouser# 538-26-48-1245). I like this connector as it sells in a length of 24 pins and you can just cut it to the length you need. Additionally the clamping mechanism of these connectors is not that strong which is a big advantage when you want to change a board.

    #36 4 years ago

    Hey Frank, thanks for all of your help!

    I finally found the time to update my cart. Here is the new file: https://www.dropbox.com/s/hgt9d99hfkx2ace/Mouser%20Cart.pdf?dl=0

    Here is what I changed:

    1. I removed the excess 1x2.54 headers, but I added another 36 position just to have a spare for other machines etc.

    2. I added the SN74BCT760N. I think this is the one you meant, correct? I'll give it a shot. Can you tell me what I would want to watch out for in the way of strange behaviour?

    3. I removed the individual sizes for the 3.96 headers and added the 24 positions you recommended. Here is my math on this: the board will take 201 total positions at 3.96. I only want to use this for system 11a, so I can subtract 6x9 (54) positions, leaving 147 positions. I have 8x24 ordered, which gives me 192 as I would like some extra for other machines etc.

    If you could give it another quick browse to be sure I have correct 760 chip and the correct values for the 2.54 and 3.96 headers, that would be awesome.

    #37 4 years ago
    Quoted from AmokSolderer:

    The USB interface is still under heavy discussion as we're currently implementing some changes. It's not yet complete, but you can see the latest dev version here:
    http://docs.missionpinball.org/en/dev/hardware/lisy/protocol.html#protocol-reference-v0-09-rfc
    Basically you could also use the APC alone to control additional HW - there is this 'Hardware extensions interface video' link on my GitHub page which is showing the use of an additional LED Controller and as you suggested, the USB interface could be used also. At a later stage, I might expand my SW to also support stuff like DMDs and so on, but at the moment most people seem to be interested in using MPF. Therefore they need to have an external master PC or Raspi and then it's probably easier to let this device control additional HW also.
    In the end it depends on the demand. If some guys are starting to use the APC alone, I'm going to spend more of my time for supporting my own API, but at the moment I'm lucky to have very competent guys working on APC support for MPF and PinMame, so I'm doing my best to keep the pace.

    You're welcome. Feel free to participate by pointing out unclear parts or gaps in the documentation for example. This is a work in progress and every helping hand is welcome.

    Great doc to plan out the protocol. In my earliest lesson of a master "Arduino" & Slave "Raspberry Pi" was boot order.
    The arduino default state for the pins caused all my solenoids to fire on boot up, blowing a fuse on the playfield. This lead to a procedure to what got booted first. Simple fix but explains how some confussion can happen on Master slave relationships.

    As the APC ages, some things can go wrong. System diagnostics would be handy to test especially after everything is all nicely soldered to the board.
    A simple 3 led Red, Yellow, Green diagnostic is ok. But, what I would suggest be a consideration is a simple I2c connector for a 20x4 LCD/LED display.
    Having a Momentary switch or two enable a diagnostic test or dipswitch setting which cycles through a health test of the APC board with output feeding the 20x4 LCD/LED display and/or the 3 led Red,Yellow, Green lights.

    Watchdog and Solenoid On/Off (Which came first the chicken or the watch dog timer). This may cause issues for the inexperienced homebrew coders.
    Default values, of which overrides the other could cause machine gunning solenoid bumpers or weak flippers activations. Another avenue to watch is latency between master and slave configuration. Some form of messaging "Like stuck on solenoid to a LCD/LED" would be handy.

    Sound On/Off/index#. Pinmame uses samples and a collection of zip files. Plus it also can use the native rom file and its associated sound file references.
    It sometimes confuses when you having custom sound samples that overide the original rom sound. Documenting how the sound index number work will save for confussion of the homebrew developer. The index number can for example be (0-100 rom index sounds), (101-200 samples zip file references), etc.

    I noticed the protocol usually consisted of individual lamps, solenoid status instead of using an array status of all lamps or solenoids.
    Same is true for changed status. I don't want to spark an academic debate, just wondered if exchanging an array state was considered in the discussion.

    I really like what I see so far thank you for openning the door to see whats going on.

    #38 4 years ago
    Quoted from legtod2:

    As the APC ages, some things can go wrong. System diagnostics would be handy to test especially after everything is all nicely soldered to the board.
    A simple 3 led Red, Yellow, Green diagnostic is ok. But, what I would suggest be a consideration is a simple I2c connector for a 20x4 LCD/LED display.
    Having a Momentary switch or two enable a diagnostic test or dipswitch setting which cycles through a health test of the APC board with output feeding the 20x4 LCD/LED display and/or the 3 led Red,Yellow, Green lights.

    There is a built-in test/service mode in APC and another one in MPF. Let us know if you are missing anything there.

    Quoted from legtod2:

    The arduino default state for the pins caused all my solenoids to fire on boot up, blowing a fuse on the playfield. This lead to a procedure to what got booted first. Simple fix but explains how some confussion can happen on Master slave relationships.

    The protocol is well tried with LISY already. We could document that a bit more. However, this works like other pinball controllers such as the SPIKE, P-Roc or FAST protocol. So we are pretty sure that we got it right.

    Quoted from legtod2:

    Sound On/Off/index#. Pinmame uses samples and a collection of zip files. Plus it also can use the native rom file and its associated sound file references.
    It sometimes confuses when you having custom sound samples that overide the original rom sound. Documenting how the sound index number work will save for confussion of the homebrew developer. The index number can for example be (0-100 rom index sounds), (101-200 samples zip file references), etc.

    Those commands are for existing machines. We have no influence on the numbers and Pinmame also just emulates those numbers. Frank already has this running with LISY and Pinmame.

    Quoted from legtod2:

    I noticed the protocol usually consisted of individual lamps, solenoid status instead of using an array status of all lamps or solenoids.

    We got list for modern lamps. You need that for synchronized fades of RGB lights. For all other lamps the complexity is not worth the effort. PD-LED, FAST and Spike do exactly the same.

    Quoted from legtod2:

    Same is true for changed status. I don't want to spark an academic debate, just wondered if exchanging an array state was considered in the discussion.

    This is a matter of efficiency. This way we only need one byte. Other platforms just indicate a change and you need to poll the board after that (Spike) or rely on event polling (P-Roc/FAST). So this is quite a bit more efficient. However, it limits the protocol to 127 switches.

    Quoted from legtod2:

    Watchdog and Solenoid On/Off (Which came first the chicken or the watch dog timer). This may cause issues for the inexperienced homebrew coders.
    Default values, of which overrides the other could cause machine gunning solenoid bumpers or weak flippers activations. Another avenue to watch is latency between master and slave configuration. Some form of messaging "Like stuck on solenoid to a LCD/LED" would be handy.

    That is not really an issue. Watchdog just needs to arrive regularly (like P-Roc and FAST). Machine gunning is prevented by debounce times and you need to configure those before enabling rules. Stuck on solenoids should not be possible with that unless you manually enable the coil. But that needs to happen intentionally. You cannot create warnings when you told the hardware to behave in a certain way.

    Jan

    #39 4 years ago

    The exciting stuff for me is to see how pinmame will playout in the APC & MPF.

    I would love to have these boards in a prebuilt state (All soldering done) so I could experiment.

    Don't trust my soldering skills anymore (Shakey hands legtod2)

    I'm a coder not a solderer.

    #40 4 years ago
    Quoted from legtod2:

    The exciting stuff for me is to see how pinmame will playout in the APC & MPF.

    MPF does not interface with Pinmame. You either use Pinmame or MPF to interface APC/LISY. Alternatively you can also program APC natively.

    #41 4 years ago
    Quoted from Tranquilize:

    Hey Frank, thanks for all of your help!

    Thanks for your patience. If my documentation would be finished you wouldn't have to ask most of these questions.

    Quoted from Tranquilize:

    Can you tell me what I would want to watch out for in the way of strange behaviour?

    This 74BCT760 is for connecting the special solenoid switches to the switch inputs as some kind of 9th row of the switch matrix. That means if things go south with this IC you're going to have switch problems. But I checked the datasheet several times and if I'm not totally blind then this thing will work. Worst thing that could probably happen is that slings and pop bumpers double fire occasionally, but this could then be fixed by changing the value of RR1.

    Quoted from Tranquilize:

    If you could give it another quick browse to be sure I have correct 760 chip and the correct values for the 2.54 and 3.96 headers, that would be awesome.

    Looks good to me. Don't be surprised when you find pads for an additional transistor and a resistor on your board. This is a new feature for pre Sys11 games so you can just ignore them.

    Quoted from legtod2:

    As the APC ages, some things can go wrong. System diagnostics would be handy to test especially after everything is all nicely soldered to the board.

    Alas, there's no way for the APC to detect whether lamps, coils and so on are working properly - at least not without a huge effort in terms of circuitry. As Jan already wrote, there are several test modes available, but in the end it's up to the user to judge if everything is OK. However, the self diagnostics we all know from the old original boards couldn't do that either, as their self tests were mainly to check CPU related stuff like memories. This is something we don't need to care about any more, because today all this stuff is integrated in the Arduino.

    Quoted from legtod2:

    I would love to have these boards in a prebuilt state (All soldering done) so I could experiment.

    Yeah, this is a problem, because at the moment you need some hardware and coding skills to use the APC. I wouldn't mind if someone would build the boards and sell them, but at the moment it's probably too early for that.

    #42 4 years ago
    Quoted from AmokSolderer:

    Yeah, this is a problem, because at the moment you need some hardware and coding skills to use the APC. I wouldn't mind if someone would build the boards and sell them, but at the moment it's probably too early for that.

    I guess we can have them assembled in China for a few additional bucks. If we can get all parts from Mouser and Digikey this is next to no effort on our side. Just send the Gerber + BOM to seeed or similar services and you get the board assembled about two to four weeks later.

    I think there are ways to upload and publish complete designs. That would save others a bit of work.

    #43 4 years ago
    Quoted from AmokSolderer:

    Thanks for your patience. If my documentation would be finished you wouldn't have to ask most of these questions.

    This 74BCT760 is for connecting the special solenoid switches to the switch inputs as some kind of 9th row of the switch matrix. That means if things go south with this IC you're going to have switch problems. But I checked the datasheet several times and if I'm not totally blind then this thing will work. Worst thing that could probably happen is that slings and pop bumpers double fire occasionally, but this could then be fixed by changing the value of RR1.

    Looks good to me. Don't be surprised when you find pads for an additional transistor and a resistor on your board. This is a new feature for pre Sys11 games so you can just ignore them.

    Thanks again, and I hope my list will help others with ordering the parts. I'll send in my order today. Also, good news. My boards came in today!

    IMG_20190605_121203 (resized).jpgIMG_20190605_121203 (resized).jpg

    #44 4 years ago

    Attract mode: Hmm were to start, oh yeah, attract lamp display patterns or even lamp patterns during game play, skill shots, countdown timer to make a skill shot.

    I have always struggled with this one. Having creative patterns and cycling through them or cue them during game play takes a creative mind.

    My own subroutines that control lamp displays and insure cabinet power consumption limits are not exceeded were a lesson learn when designing my own lamp/solenoid board.

    Lesson learned too many lamps on at same time for long duration is not good (as a homebrewer coding practice). Thats when I learned controling cpu strobing lamps as opposed to turn them on forever and turn them off when instructed. GI lighting is an exception.

    For the homebrew coder, the algorithms to control the attract mode patterns are a challenge (To me anyway).

    Generally for me attract mode is an opportunity to sway some sucker to play my machine and give up their hard earned dough.
    To do this, using a cool series of attract pattern lamps, throw in some well timed sounds/music and LED displays, and show previous high scores.
    This is where DMD/LED displays add the extra punch or wow factor.

    #45 4 years ago
    Quoted from legtod2:

    For the homebrew coder, the algorithms to control the attract mode patterns are a challenge

    I think this becomes significantly easier if you use something like MPF. There are some tools thhe that help make great light shows.

    #46 4 years ago
    Quoted from Tranquilize:

    My boards came in today!

    Wow, that was fast.

    Have you seen that there's a step-by-step assembly instruction in the Wiki? Might save some trouble.

    #47 4 years ago
    Quoted from AmokSolderer:

    Wow, that was fast.
    Have you seen that there's a step-by-step assembly instruction in the Wiki? Might save some trouble.

    Yeah, I have step one completed. I'm going to test it today!

    Question: I've done some small projects with an arduino duo, but I don't remember much. Is there any chance any of you could give me a quick walkthrough as to how to set up the software? There are some instructions there, but I'm a bit of a newb. For example, just to test the arduino, I opened BaseCode.ino and included the required libraries, but when I tried to compile and upload, I ended up with a ton of errors. I apologize in advance for my ignorance. Once I get going, I should be fine as I do have some knowledge of programming.

    Here are some pics of my board so far:

    IMG_20190607_165511 (resized).jpgIMG_20190607_165511 (resized).jpg

    IMG_20190607_165430 (resized).jpgIMG_20190607_165430 (resized).jpg

    #48 4 years ago

    Oh, and Frank, can you publish a photo of your board diagram that includes the Xs on the pins that should be removed? One of your pictures of your first board has some of this visible under the board. This will help me to double-check my reading of the schematics.

    #49 4 years ago
    Quoted from Tranquilize:

    I ended up with a ton of errors.

    If you clone my repository you should get a directory named APC with all the .ino files inside. You have to compile APC.ino, the rest will be included automatically as long as it is in the same directory.
    But for assembly step 1 you should start with the Soundcheck anyway. There is a directory APC_Soundcheck on GitHub in DOC/Software which contains two files APC_Soundcheck.ino and Sound.h. In the Arduino IDE the main .ino files has to have the same name as the directory, so open APC_Soundcheck.ino in your Arduino IDE and try to run it.

    Quoted from Tranquilize:

    can you publish a photo of your board diagram that includes the Xs on the pins that should be removed?

    The picture is already online but not yet published. You can find it on GitHub in my working branch AmokWork -> DOC -> PICS -> APC_Connector.png.

    Quoted from Tranquilize:

    I apologize in advance for my ignorance.

    No reason to apologize. It just shows me howto improve my documentation.

    #50 4 years ago

    I followed your instructions, which were great, and ran the soundcheck successfully. I had Tool playing on my machine with a sound playing every ten seconds.

    IMG_20190608_165314 (resized).jpgIMG_20190608_165314 (resized).jpg

    On a side note, as you can see in the image, some of my connectors (volume and speakers) were different than your schematics and the Williams Millionaire manual schematic.

    Thanks for your help about the overall software. Also, I found the image for the connectors. THANKS!

    There are 959 posts in this topic. You are on page 1 of 20.

    Reply

    Wanna join the discussion? Please sign in to reply to this topic.

    Hey there! Welcome to Pinside!

    Donate to Pinside

    Great to see you're enjoying Pinside! Did you know Pinside is able to run without any 3rd-party banners or ads, thanks to the support from our visitors? Please consider a donation to Pinside and get anext to your username to show for it! Or better yet, subscribe to Pinside+!


    This page was printed from https://pinside.com/pinball/forum/topic/arduino-pinball-controller?hl=jabdoa and we tried optimising it for printing. Some page elements may have been deliberately hidden.

    Scan the QR code on the left to jump to the URL this document was printed from.