Jump to content

Snux

Profi
  • Content Count

    62
  • Joined

  • Last visited

About Snux

  • Rank
    schon lange Mitglied

Profile Information

  • Gender
    Male
  • Location
    Maidstone, UK.
  1. Yup. Sehe Bild.... 1 - Klick record (aka "toggle wav logging") 2 - Klick "next" (oben rechts, aka "toggle auto moving") - dann spielt es alles (eventuell) 3 - Klick "play". Manche tracks sind echt lang (mehrere Minuten), es kann insgesamt 12 Stunden dauern, lass es einfach ubernacht laufen. Bitte schoen . https://p-roc.s3-eu-west-1.amazonaws.com/sounds.zip
  2. Habe ich nie gesehen. Ich glaube in diesen Fall kommt vielleicht "off/on/off" und dann ist alles OK. Nicht viel, leider. Kein Zeit gehabt. Aber ich bin gerade 3 Monate krank geschrieben; ich warte im Moment auf 'ne Herz-OP (bypass). Dann gibt's ein bisschen flipper-time zwischendurch
  3. Fast immer. Aber nur fast. Jetzt ist es zu kompliziert fuer mein Deutsch, also.... Coils 1-8 are the switched relays. Each has 2 outputs, "A" side and "C" side. The A-side is normally a coil (outhole, lock, something) and the C-side is normally a flasher. If the A/C relay (coil 14, except for Road Kings) is active, then coils 1-8 will be on side A. If inactive, then side C. So if for example a flasher is active, and then you make active the A/C relay, the flasher will switch off and the coil will fire instead. This is why to be sure that all drives are inactive before switching the A/C relay. Normally it should be OK without special control, but consider the following example. We flash a flasher, on the 'C' side of coil 1 (on the 'A' side of coil 1 is the trough eject, for info). Then we want to eject a ball from a lock, which is a coil on the 'A' side of coil 4. So what we should have, in time sequence, is the following... De-activate A/C relay (so we are on 'C' side) Activate coil 1 (fire the flasher) De-activate coil 1 (switch off the flasher) Activate A/C relay (side 'A') Activate coil 4 (fire the ball eject) De-activate coil 4 (ball eject done) In the live machine, steps 3 and 4 should happen at the same time. However, because of the way we interface pinmame to external hardware, we have to take a "time slice" every few millseconds and look for changes. What I found was that on a few occasions we notice step 4, then step 3 because our "time slice interrupt" is in the middle of the ROM code making all the changes. If we process them in that sequence, we actually eject a ball from the trough because the flasher was still active when we switched the A/C relay. And we really didn't want to eject a ball from the trough. So I developed the code to make sure coils 1-8 (except Roadkings) are inactive, before switching. I tested it a lot and it seems OK. Hope that helps.
  4. Muss nur die ROMS runterladen, dann klappt es mit M1 (bzw bridgem1). Fur F-14 habe ich alles "ripped"
  5. Lautsprecher sind Normal (kein GND). Ich habe auch eine andere rausgefischt und direkt mit APC verbunden, selber Problem. In meinem Fall ist es nicht so schlimm, weil ich PC sound normalerweise benutzen. Es wäre aber schön wenn es klappt. Aber interessant - wenn ich mache ein Test mit APCSoundCheck.ino (ohne Pot) - es wird nicht heiss, aber ich höre auch nichts (nur "a very quiet buzzing sound") Ab Heute wird alles zu Hause ziemlich chaotisch sein. Kann sein dass fur 2 Wochen oder so habe ich fast kein Pinball-Time, aber mal schauen.
  6. http://docs.missionpinball.org/en/dev/hardware/lisy/sound.html Ich habe es kurz getestet, aber wie du sagst alles ist ein bisschen verändert. MPF code sieht so aus... def play_sound_file(self, file: str, platform_options: dict): """Play sound file.""" flags = 1 if platform_options.get("loop", False) else 0 flags += 2 if platform_options.get("no_cache", False) else 0 self.platform.send_string(LisyDefines.SoundPlaySoundFile, chr(flags) + file) So - es gibt ein "looping" flag zwischen 52 (lisydefines.soundplaysoundfile) und zB SOUND.BIN. Ich habe ins usbcontrol.ino geschaut und "flag" ist unerwartet glaube ich. Auch set_volume sieht anders aus... def set_volume(self, volume: float): """Set volume.""" if self.platform.api_version >= StrictVersion("0.9"): self.platform.send_byte(LisyDefines.SoundSetVolume, bytes([1, int(volume * 100)])) else: self.platform.send_byte(LisyDefines.SoundSetVolume, bytes([int(volume * 100)])) MPF sendet 2 bytes nach dem 54 (weil API version = 0.9) Mit meinem TDA ist noch was los. Mit lautsprecher "connected", wird es heiss. Ohne, dann bleibt es kuhl.
  7. Nein. Nichts gemacht, habe Glück gehabt. Ich weiss das mit P-ROC haben manche Leute die Schalterkontake leicht gebogen. Ja. Bleibt kalt Ich habe keine Ahnung was vorher passiert ist.
  8. Gerne. Habe auf Pinside gepostet, mit Video. https://pinside.com/pinball/forum/topic/arduino-pinball-controller/page/3#post-5142515 Mit "Hardware-rule" funktionerien slings und pop-bumper einwandfrei (wie auf Pinside - "fixed with a single wire"). Die reagieren ganz schnell, man merkt gar kein "Lag". Segment displays sehen gut aus, Switches und Lamps auch.
  9. Ich war auch SMD-noob. Ich habe eins davon gekauft.. (oder sowas ähnliches, gibt's verschiedene).... https://www.amazon.de/yourDroid-Bausatz-SMD-Übungsplatine-Löten/dp/B077B8T9NT/ Kann ich nur empfehlen. Eine Stunde üben, wegwerfen und dann ist alles machbar. Ich bin jetzt SMD-fan
  10. Display 4 klappt @jabdoa - war auch ne 7-segment-mapping-fehler. Hier ist es korrigiert. a/d und b/c war anders 'rum. def get_dpgfedcba_encoding(self) -> bytes: """Return segment in dp gfedcba order.""" return bytes([(self.dp << 7) | (self.g << 6) | (self.f << 5) | (self.e << 4) | (self.a << 3) | (self.b << 2) | (self.c << 1) | self.d])
  11. Ich hab's gefunden. @jabdoa - in segment_mappings.py sind Segments "l" und "n" falsch rum. Line 315. So, anstatt... return bytes([ (self.dp << 7) | (self.g1 << 6) | (self.f << 5) | (self.e << 4) | (self.a << 3) | (self.b << 2) | (self.c << 1) | self.d, (self.n << 7) | (self.dp << 6) | (self.l << 5) | (self.m << 4) | (self.k << 3) | (self.g2 << 2) | (self.h << 1) | self.j]) bitte return bytes([ (self.dp << 7) | (self.g1 << 6) | (self.f << 5) | (self.e << 4) | (self.a << 3) | (self.b << 2) | (self.c << 1) | self.d, (self.l << 7) | (self.dp << 6) | (self.n << 5) | (self.m << 4) | (self.k << 3) | (self.g2 << 2) | (self.h << 1) | self.j]) Dann sieht alles gut aus...
  12. Ich habe die Mapping-Tabelle gefunden, ich kann es ändern und direkt testen
  13. Das sieht viel besser aus. Gibt's noch ein paar Segment-fehler (und display 4 geht noch nicht, wegen "index" issue).
  14. Mit dev.51 kommt ein Fehler mit MPF-MC... 2019-08-04 19:39:05,266 : kivy : Exception while processing RegisteredHandler(callback=<bound method ConfigPlayer.config_play_callback of McConfigPlayer.slides>, priority=0, kwargs={'calling_context': 'mc_ready', 'mode': None, 'settings': {'slides': {'base_slide': {'target': 'laptop', 'priority': None, 'background_color': [0.0, 0.0, 0.0, 1.0], 'show': True, 'force': False, 'expire': None, 'slide': None, 'tokens': {}, 'action': 'play', 'transition': None, 'transition_out': None}}}}, key=UUID('4cc5f49f-9805-4e4f-9b2e-0e18100748bc'), condition=None, blocking_facility=None) for event mc_ready Traceback (most recent call last): File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py", line 664, in _run_handlers result = handler.callback(**merged_kwargs) File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\config_player.py", line 341, in config_play_callback **kwargs) File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpfmc\config_players\slide_player.py", line 113, in play if slide_dict["condition"] and not slide_dict["condition"].evaluate(kwargs): TypeError: 'ConditionalEvent' object is not subscriptable The above exception was the direct cause of the following exception: Traceback (most recent call last): File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpfmc\commands\mc.py", line 213, in __init__ thread_stopper=thread_stopper).run() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\kivy\app.py", line 826, in run runTouchApp() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\kivy\base.py", line 502, in runTouchApp EventLoop.window.mainloop() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\kivy\core\window\window_sdl2.py", line 727, in mainloop self._mainloop() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\kivy\core\window\window_sdl2.py", line 460, in _mainloop EventLoop.idle() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\kivy\base.py", line 337, in idle Clock.tick() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\kivy\clock.py", line 581, in tick self._process_events() File "kivy\_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events File "kivy\_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events File "kivy\_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events File "kivy\_clock.pyx", line 167, in kivy._clock.ClockEvent.tick File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpfmc\uix\display.py", line 205, in _displays_initialized self.mc.displays_initialized() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpfmc\core\mc.py", line 336, in displays_initialized self._init() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpfmc\core\mc.py", line 377, in _init self.events.process_event_queue() File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py", line 745, in process_event_queue **event[3]) File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py", line 710, in _process_event result = self._run_handlers(event, ev_type, kwargs) File "c:\users\mark\appdata\local\programs\python\python36\lib\site-packages\mpf\core\events.py", line 666, in _run_handlers raise Exception("Exception while processing {} for event {}".format(handler, event)) from e Exception: Exception while processing RegisteredHandler(callback=<bound method ConfigPlayer.config_play_callback of McConfigPlayer.slides>, priority=0, kwargs={'calling_context': 'mc_ready', 'mode': None, 'settings': {'slides': {'base_slide': {'target': 'laptop', 'priority': None, 'background_color': [0.0, 0.0, 0.0, 1.0], 'show': True, 'force': False, 'expire': None, 'slide': None, 'tokens': {}, 'action': 'play', 'transition': None, 'transition_out': None}}}}, key=UUID('4cc5f49f-9805-4e4f-9b2e-0e18100748bc'), condition=None, blocking_facility=None) for event mc_ready
×
×
  • Create New...

Important Information

Privacy Policy and Community Guidelines