(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 19 of 20.
    #901 1 year ago

    ahhh, of course, Gottlieb didn't go higher than 3 did they? Ah well, disappointing but makes sense, thanks for the catch Zigzagzag

    #902 1 year ago

    As Raspberry PI is becoming rare, I created an Image for the Banana PI M2 Zero
    https://lisy.dev/lisy_embedded.html
    You can also use one of the 'embedded' images to speed up boot time of your Raspberry PI Zero
    All images tested 'on the bench' only, pls. let me know in case of problems.
    Have fun

    #903 1 year ago
    Quoted from Zigzagzag:

    Are you sure this isn't a typo and that it should read Williams system 3 to 7 ?

    Yeah, this is wrong. It even has to be 'Williams System 3 to 9' as only System11 is mentioned elsewhere.

    jabdoa I have done my best to fix this in numerous places and created a pull request for the MPF DOCs dev branch.

    #904 1 year ago

    Yeah, I'm thinking it's a typo.
    For System 3, you will need something that can drive 12x8 lamp and switch matrices. Nothing I know of off the shelf is doing that right now.
    That being said, if I were going to do something of this nature, I would start with a cobrapin board and see if I couldn't use 2 more of the switch pins to expand the switch matrix, then build a new version of the Xpansion board to drive the lamps. Contact cobra18t here on pinside to see if it's feasible.

    #905 1 year ago
    Quoted from bontango:

    All images tested 'on the bench' only

    I've tested the one for the Rasberry Pi zero on an APC 3 board. I can confirm that it works - booting is much faster now.

    2 weeks later
    #906 1 year ago

    BTW, I'm currently collecting ideas for new Punbot rules.

    https://pinside.com/pinball/forum/topic/apc-pinbot-collecting-ideas-for-new-rules#post-7104619

    Up to now I have mainly used my Pinbot code to test the Sys11 specific features of my framework, but now it's time for the fun part.

    4 months later
    #907 1 year ago

    Hi everyone,

    I will order some APC board on February (if there is no components shortage), if some people are interested in a group order please contact me.

    I have post a topic here: https://pinside.com/pinball/forum/topic/apc-board-order

    #908 1 year ago

    stras210 Hi! I'm very interested but am located in the USA.
    Is there any practical way for me to get my hands on an APC board?

    Also, I was wondering about the requirement of the Arduino DUE. Haven't those been discontinued for a few years now?
    (Fortunately, I happen to have one...but only one)

    What other components are difficult or impossible to get lately?

    Thanks!

    #909 1 year ago
    Quoted from stras210:

    if some people are interested in a group order please contact me.

    I'm just in the process of ordering new boards a well. It's a new HW revision which has an SD card slot on board and is slightly modified to have the non SMD parts populated in China also.

    I can send you a board or two if you like - that would spare you the trouble of organizing an additional group order.
    At the moment I'm waiting for a quote for the components. Seems like JLCPCB is still dealing with the aftermath of the Chinese New Year.

    Quoted from andylama:

    I'm very interested but am located in the USA.
    Is there any practical way for me to get my hands on an APC board?

    I don't think it makes sense to ship boards from Europe to the US, so I'd suggest to organize an own US group order. You might want to wait a bit until the new HW revision is tested and released.

    Quoted from andylama:

    Haven't those been discontinued for a few years now?

    They have been indeed, but they're back into production for some years now.

    Quoted from andylama:

    What other components are difficult or impossible to get lately?

    One problem is the TDA7496 as this has been discontinued two years ago and I wasn't able to find a suitable replacement part. However, it's still available in Germany (cheaper than before actually), but I don't know about the situation in the US.
    The availability of logic ICs at JLCPCB seems to change on a daily basis, but you can pre-order missing parts beforehand.

    The 74BCT760 and an 18K resistor network are available from Mouser.

    The DUE is available, but the cheap chinese rip offs are gone which increases the price from 15 to 40€.
    And if you want to use PinMame then you have to use a Banana Pi (35€), because normal Raspberry PIs (15€ for a zero) are out of stock since years (at least in Europe)

    #910 1 year ago

    AmokSolderer Thank you for your very informative reply.
    It does seem wise for me to wait a bit.

    Also, I see now that the Due had resumed production. A pleasant surprise!
    Raspberry PIs seem readily available in the states. Unfortunate that they are unavailable in the EU.
    Hoping for the best for everyone.

    I will be watching this topic with great interest.
    Thank you for doing this. It is extremely cool.

    #911 1 year ago

    AmokSolderer Thanks you for the precision.

    I will therefore wait for the new version of the PCB to launch my project.

    I'll write you in private message for the board to see what's possible. Because 2 people are interested and have joined my group order call.

    #912 1 year ago

    Yeah, at the moment I have problems to get populated boards at all.
    I just got a mail from JLCPCB telling me that my pre-order for 74HCT573 ICs failed as they're unavailable.
    That means I have to choose another brand now and try again.

    #913 1 year ago
    Quoted from AmokSolderer:

    Yeah, at the moment I have problems to get populated boards at all.
    I just got a mail from JLCPCB telling me that my pre-order for 74HCT573 ICs failed as they're unavailable.
    That means I have to choose another brand now and try again.

    From the tiny bit of electronics stuff I’ve done, the worst most tedious part is reworking a finished design around parts for price/availability.
    I’m many revisions behind the latest. Count me in on the next North American group buy.

    #914 1 year ago

    I have a new pre-order for 74HCT573 ICs running. May it work this time.

    #915 1 year ago

    OK, I got my final quote. The initially quoted price has tripled during the process, but I ordered them anyway.
    After 5 - 10 days they should be available for assembly.

    2 weeks later
    #916 1 year ago

    Pre-ordering the parts did the trick - my boards are in production now.
    I'm going to release the new HW version after the boards are here and the new SD-card adapter has been tested.

    3 weeks later
    #917 1 year ago

    The new boards work just fine and I released a new version on Github.

    Read the changelog to learn about the main changes.

    https://github.com/AmokSolderer/APC/blob/master/DOC/Changes.md

    1 week later
    #918 1 year ago

    I'm interested in doing a USA bulk order, I am fronting an order of 10 pin2dmd atm, so what the hell.

    Going through the process to quote 5 boards shipped to USA, I will most likely only keep 2.

    Other 3 will be up for grabs.

    #919 1 year ago

    I'm in for 2 of them, maybe even 3.

    #920 1 year ago

    Hi, i start finally to write my own code with APC based on "base code".

    It's working but sometimes I got somme error like this :

    Error = 11
    Number2 = 1
    Number3 = 0

    Is there any way to debug this ?

    #921 1 year ago

    ok i found some docs on tutorial, so i nedd to found this random problem.

    #922 1 year ago

    Yeah, but you reminded me of adding the error code list to the DOCs. You can now find it in the APC_SW_reference in the V01.00 branch (chapter 5).

    https://github.com/AmokSolderer/APC/blob/V01.00/DOC/Software/APC_SW_reference.pdf

    Error 11 means that you have used the KillTimer command to kill a timer which was not active any more. This is not necessarily harmful, but it can be really nasty if you kill the wrong timer by accident because you confused the numbers. Therefore I highly recommend to always keep track of your timers.

    #923 1 year ago

    ok, i'll check this. Nice Error page !

    APC is really a Great Project, Thanks for all ! I hope to got a playable game in few times now

    #924 1 year ago

    May I ask what machine you're current working on, is it still the DE Simpsons?

    Do you have it working with PinMame?

    #925 1 year ago

    Yes it was working except the "laser kick" it just need an exception as you say.

    #926 1 year ago

    Did you do the PinMameExceptions for the Simpsons?
    Of course I'd be happy to add them to the APC code.

    #927 1 year ago

    I'll check this when i'll got a new raspi.

    I see "DelaySolenoid" in APC.ino, but it's not implémented yet ?

    #928 1 year ago

    Well, this is as much implementation as there's going to be, I'm afraid.
    The problem is that you cannot call ActivateSolenoid by timer, as a timer call can only have one argument and ActivateSolenoid has two. Therefore DelaySolenoid does nothing more than calling ActivateSolenoid with a zero as the duration value. This will make ActivateSolenoid take the default duration value for the selected coil as it is specified in the default solenoid times array.
    That means the delay is done by your timer call and not by the 'command' itself.

    As Simpsons is a System11 game you probably want to use ActA_BankSol or ActC_BankSol anyway, since they also take care of the A/C select relay. These commands only have one argument (they also use the default solenoid times array) and can therefore be called by a timer.
    In a System11 machine ActivateSolenoid should only be used if you want an instantaneous reaction of a solenoid > 8 (non A/C) or a duration different from the one specified in the default solenoid times array. This is because ActA_BankSol and ActC_BankSol will queue the solenoid requests (and set the A/C relay accordingly). On the other hand ActivateSolenoid just activates the solenoid and doesn't care about side effects.

    #929 1 year ago

    Yeah I use ActA_BankSol / ActC_BankSol (C Bank is B Bank on data east, it's working fine).

    I'll got a new Rapsberry next week, when it will be here i'll check the pinmame exception.

    If you want to add this in repo, the laser cut file to adapt APC on DE backbox.

    https://wetransfer.com/downloads/b65f6d9459ebf2ce1dc01703e1473a8120230403063109/65ece5d1cd48d98efffbb6f536ba9c1d20230403063124/ab7250?trk=TRN_TDL_01&utm_campaign=TRN_TDL_01&utm_medium=email&utm_source=sendgrid

    #930 1 year ago

    Thanks for that. What did you use as the base material, is it plywood?

    #931 1 year ago

    MDF 3 MM, but can be done with others materials

    2 months later
    1 month later
    #933 9 months ago

    Hi, I install a New board in a system11 C game (Pool Sharks)but doors button dosen't work.
    If I boot on pinmame (I select game directly in Arduino code) I got an error like slam tilt is Always on (without Switchs conectors plugged).

    What Can I check on my board ?

    #934 9 months ago

    Ok I found, U19 was dead.

    3 weeks later
    #935 8 months ago

    What would be needed to make APC + PinMame work with a Pin2Dmd?
    In particular I am looking at resurrecting a DE Teenage Mutant Ninja Turtles .

    #936 8 months ago

    I've driven a 5v stern dmd from pinmame running on a pi:


    So it's likely possible. You would need to be running pinmame on an external machine. I think there's a way to drive input to pin2dmd via the USB port.

    #937 8 months ago
    Quoted from ThatOneDude:

    I've driven a 5v stern dmd from pinmame running on a pi:
    So it's likely possible. You would need to be running pinmame on an external machine. I think there's a way to drive input to pin2dmd via the USB port.

    So APC can be controlled by an external machine running Pinmame?
    I couldn't find anything about this in the documentation, only about MPF running on a PC.
    But if Pinmame can do the same and control APC by USB I might be closer to a solution.

    #938 8 months ago
    Quoted from Zigzagzag:

    So APC can be controlled by an external machine running Pinmame?
    I couldn't find anything about this in the documentation, only about MPF running on a PC.
    But if Pinmame can do the same and control APC by USB I might be closer to a solution.

    Not at this point that I know of. It only runs from the lisy system driven by gpio pins. If you have some pins free on the pi, you could drive a display, and add hooks like I did into the pinmame code. Probably won't be terribly fast.
    The alternative(imo) is to use the MPF interface as a template to drive the APC via USB, and then drive the pin2dmd from that same machine using something like a Teensy(pinmame -> usb -> teensy -> pin2dmd). Both projects all on their own, but most of the work could be cobbled together from the existing projects.

    #939 8 months ago
    Quoted from ThatOneDude:

    Not at this point that I know of. It only runs from the lisy system driven by gpio pins. If you have some pins free on the pi, you could drive a display, and add hooks like I did into the pinmame code. Probably won't be terribly fast.
    The alternative(imo) is to use the MPF interface as a template to drive the APC via USB, and then drive the pin2dmd from that same machine using something like a Teensy(pinmame -> usb -> teensy -> pin2dmd). Both projects all on their own, but most of the work could be cobbled together from the existing projects.

    Yes, that is a possibility but would involve writing the ruleset for MPF I guess?

    Sorry, I misread - making a new interface is a bit beyond the scope I was hoping for ...

    #940 8 months ago
    Quoted from Zigzagzag:

    So APC can be controlled by an external machine running Pinmame?

    Only if PinMame's wishes and needs are translated into commands according to the Lisy protocol.

    https://missionpinball.org/hardware/lisy/protocol/

    This is what Lisy does on a Pi, but there's no Windows version of it AFAIK.

    It would probably be easier to let Lisy send the DMD commands to the USB port of the Pi. By this you could use the Pi as usual on the APC 3 board and additionally connect a DMD via USB.

    However, I doubt that bontango is in the mood for implementing something like this.

    #941 8 months ago

    Why not hack pinmame to stream dmd frame data to another microcontroller to drive the dmd? I was able to capture it and write directly to the dmd via the gpio pins. Opening a serial connection and streaming frame data to a teensy seems pretty reasonable, and wouldn't need anything hacked on the lisy side, AFAICT.

    #942 8 months ago

    #ifdef PROC_SUPPORT
    if (coreGlobals.p_rocEn) {
    /* looks like P-ROC uses the last 3 subframes sent rather than the first 3 */
    procFillDMDSubFrame(dmdlocals.nextDMDFrame+1, dmdlocals.DMDFrames[dmdlocals.nextDMDFrame], 0x200);
    }

    /* Don't explicitly update the DMD from here. The P-ROC code
    will update after the next DMD event. */
    #endif
    #ifdef OPPA
    oppaUpdateDMD(dmdlocals.DMDFrames[dmdlocals.nextDMDFrame]);
    //oppaBlankDMD();
    #endif
    dmdlocals.nextDMDFrame = (dmdlocals.nextDMDFrame + 1) % DMD_FRAMES;
    }
    }

    That's from wpc.c in pinmame. I grab the frame data from there. Then, I write it out via gpio with this function:

    /* Take in array and update the DMD directly */
    void oppaUpdateDMD(UINT8 *dotData) {
    //printf("In update DMD\n");

    int row;
    /* Row data - This signal is the first line marker for the scan.
    This input should be held high to correspond to the first row
    of pixel data
    */
    digitalWrite(pinRowData, HIGH);
    for(row = 0; row < OPPA_NUM_OF_ROWS; row++) {
    int index;
    /* From Vishay doc: Once each frame the ROW DATA must be asserted to synchronize the column serial data with the beginning row */
    /* Latch the row of data */
    digitalWrite(pinColLatch, LOW);
    for(index = 0; index < 16; index++) {
    shiftOutSlow(pinDotData,pinDotClock,LSBFIRST,dotData[(row*16) + index]);
    //shiftOut(pinDotData,pinDotClock,LSBFIRST,3);
    //delayMicroseconds(40);
    }
    if(row == 0) {
    digitalWrite(pinRowData, HIGH);
    } else {
    digitalWrite(pinRowData, LOW);
    }

    /* Turn off the display while we latch in the this row */
    digitalWrite(pinDisplayEnable, LOW);
    digitalWrite(pinColLatch, HIGH);

    /* Advance the row pointer */
    digitalWrite(pinRowClock, LOW);
    /* Minimum 1us dip */
    delayMicroseconds(0);
    digitalWrite(pinRowClock, HIGH);

    /* Reenable display */
    digitalWrite(pinDisplayEnable, HIGH);
    delayMicroseconds(2);

    }
    }

    This was experimental code from years ago. That was what was driving the dmd video I linked earlier. So, if I were going to attempt this, I would just add code to open a USB connection to a teensy, then write that array( dmdlocals.DMDFrames[dmdlocals.nextDMDFrame] ) out. Read it in on the teensy using the standard serial library and drive the physical display from there. You could use the wpc mode of pin2dmd, or drive any other compatible dmd.

    #943 8 months ago
    Quoted from ThatOneDude:

    That's from wpc.c in pinmame. I grab the frame data from there. Then, I write it out via gpio with this function:

    This was experimental code from years ago. That was what was driving the dmd video I linked earlier. So, if I were going to attempt this, I would just add code to open a USB connection to a teensy, then write that array( dmdlocals.DMDFrames[dmdlocals.nextDMDFrame] ) out. Read it in on the teensy using the standard serial library and drive the physical display from there. You could use the wpc mode of pin2dmd, or drive any other compatible dmd.

    Thanks, ThatOneDude !
    It seems to be a bigger project than expected that I'll come back to later, for now I'll just put the TMNT parts in storage.

    #944 8 months ago
    Quoted from AmokSolderer:

    However, I doubt that bontango is in the mood for implementing something like this.

    If it is only to add the lines posted by ThatOneDude I can add the code to the 'official' LISY/pinmame source and make a new LISY image, no problem.
    However I would need volunteer(s) for the Teensy and testing part ...

    #945 8 months ago
    Quoted from bontango:

    If it is only to add the lines posted by ThatOneDude I can add the code to the 'official' LISY/pinmame source and make a new LISY image, no problem.
    However I would need volunteer(s) for the Teensy and testing part ...

    Well, if you do the code I can see what I can do with Teensy and stuff.
    But - be aware that the code ThatOneDude posted hooked into the WPC code.
    I'm looking at resurrecting a DE Teenage Mutant Ninja Turtles - so the code might be in a different place or look different or something, perhaps?

    #946 8 months ago

    The code in this case is in dedmd.c. There is p-roc code in there for the 128x32 variant. You would want to tie in similarly with the serial output on the 128x16 side.
    You'll have to experiment with the teensy driver. I'd bet money that it uses the same protocol as the 128x32 version, but you will need to look at the datasheet or talk to the pin2dmd guys to verify.
    My pinmame fork is here: https://github.com/mikelatiolais/pinmame_fork

    Look for the oppa display code. You can ignore the rest of the oppa stuff(it was a weird attempt to adapt the OPP project to pinmame), and I hadn't gotten to the point of doing any speed optimizations.

    3 weeks later
    #947 7 months ago

    After reading this thread, I am still fairly confused.. I have a Space Shuttle Sys9 with an MPU with pretty substantial damage, both from bad batteries, and bad rework done previously.. I see this project talks about sys4-7 and 11, but not 9.. I see, however that sys9 can run on a system 11 board, so I'm wondering if this board could be a "drop in replacement" for a sys9 board, and if so, I'm confused about what I'm reading about the sound capabilities of this board. I am mostly interested in getting my machine working as stock, however as a big RPi and Arduino fan, I have to admit I'm kind curious to be able to write my own rules as well! Has anyone else implemented on a Sys9 and may be able to give some insight? Also, is the current BOM up to date as is on the github? I am curious enough to just order 5 boards and all the parts and get started, since I also have Gorgar, Flash, and Black Knight which could be potential targets for this project.. Thanks for any help and guidance, and all the work done on this project!!
    -Steve

    #948 7 months ago
    Quoted from PA28steve:

    I see this project talks about sys4-7 and 11, but not 9.

    May I ask where you found this? Was it in the APC documentation?

    The DOCs are currently being reworked (especially the PinMame sound part), so I'd recommend to read the latest (not yet released) version.

    https://github.com/AmokSolderer/APC/tree/V01.00

    I'm afraid there's no PinMame Sound How-to for System 9 yet, but it's gonna come soon.
    However, System 9 is supported. There's even an own page available for Comet, you can find it in the TOC at the bottom of the page under 8.3

    The current BOM is up to date, but some components are of of stock again AFAIK.

    #949 7 months ago

    Hi Steve,
    I have a handful of APC boards available for sale.
    (latest rev, tested and working)

    #950 7 months ago
    Quoted from AmokSolderer:

    I'm afraid there's no PinMame Sound How-to for System 9 yet, but it's gonna come soon.

    I have added the first draft of the System 9 how-to also.

    There are 959 posts in this topic. You are on page 19 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/page/19?hl=zigzagzag 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.