Stick - clavier - Arduino - 2 joueurs



  • Je suis en train de me faire un cabinet pour deux joueurs. J'ai les joysticks, les boutons et j'ai décidé de me faire le board pour les brancher par moi-même avec un Arduino Micro Pro, capable de simuler un clavier. Mais voilà, comment je peux attribué une série de touche clavier au joueur 1 et une autre série de touche au joueur 2?


  • Team

    Salut, tu as choisi la solution la moins compatible avec recalbox, alors tu va devir mettre les mains dans le camboui et zapper pas mal de fonctions d'auto configuration. Il faut que tu crée ton fichier de configuration retroarch custom. Ensuite tu le spécifie dans recalbox.conf : https://github.com/recalbox/recalbox-os/wiki/How-to-use-custom-config-for-emulators-(EN)



  • Merci beaucoup de m'avoir pointer cette page wiki. Puisque je veux utiliser ces sticks qu'avec libreretro, ça ne devrait pas être trop long à configurer.   Je vais essayer ça ce soir.. (Je suis au Québec.) Merci encore.



  • Malheureusement, Retroarch ne semble pas accepter les entrés de clavier. Quand j'essaie de configurer le premier bouton, j'appuie une lettre sur le clavier et rien ne se passe. Il s'attend à une entrée de joystick.



  • Hello, retroarch accepte bien les touches clavier tu peux regarder ici pour avoir un exemple de config (il s'agit d'une config ipac, 2 players): https://github.com/frthery/ES_RetroPie/blob/master/configs/configs/all/keyboard/retroarch-ipac.cfg Attention aux touches fonctions qui sont par défaut mappés sur des touches clavier.


  • CRT Maniac

    Sinon, t'as le teensy (un Arduino en beaucoup plus puissant, langage et IDE compatible). Il peut être reconnu comme clavier, souris et, surtout, joystick HID. https://www.pjrc.com/teensy/td_joystick.html

    • 32: Buttons
    • 6: Axis (X, Y, Z, Rotate Z, Left Slider, Right Slider)
    • 1: Hat Switc


  • @ironic : Ce qui est moche avec le Teensy, c'est qu'il m'en faudrait deux pour les deux joueurs, ainsi que deux fils USB. Mais j'avoue que c'est cool de pouvoir executer une sortie de joystick, analogique en plus! @SpikeSpiegel : Merci pour l'info. J'ai pris modèle sur ton fichier, j'ai créé un fichier que j'ai sauvegarder là: /recalbox/configs/retroarch/inputs/arcade.cfg J'ai ensuite ajouter à la fin du fichier recalconfig.conf: fba_libretro.configfile=/recalbox/configs/retroarch/inputs/arcade.cfg Mais rien n'a changé. Ce sont encore les contrôles par défaut de Recalbox qui embarque, une manette SNES usb dans mon cas. J'ai par exemple assigner la lettre "b" au "insert coin" du premier joueur et ça ne fonctionne pas. Par contre, le select de ma manette SNES fonctionne. Est-ce qu'il y a quelque chose que j'ai mal saisi?


  • CRT Maniac

    Essaie plutôt ça : fbalibretro.configfile=/recalbox/configs/retroarch/inputs/arcade.cfg   Par contre, je ne sais pas si ça a comme action de remplacer le retroarchcustom.cfg comme : retroarch --config arcade.cfg ou d'ajouter un autre fichier de configuration comme : retroarch --appendconfig arcade.cfg



  • @ironic : J'ai changé fba_libretro pour fbalibretro et ça fonctionne. Merci. J'ai créé un fichier retroarchcustom.cfg en suivant les instructions ici: https://github.com/recalbox/recalbox-os/wiki/How-to-use-custom-config-for-emulators-(EN) et j'ai inclus dans le fichier les configurations que je voulais en me fiant à l'exemple de SpikeSpiegel. Les commandes répondes... mais avec un lag ou de façon très imprécise. C'est dommage parce que sur mon Mac, avec OpenEmu, je n'ai aucun problème et mon stick maison répond bien. Est-ce que RetroArch a des problèmes avec la saisi clavier? Je vais éventuellement faire des tests avec un clavier normal pour voir si ça lag autant.


  • CRT Maniac

    La, je ne peux pas te répondre, j'utilise un module Xin-Mo USB et je n'ai jamais eu de probleme de lag. Avec une manette PS3 et un Dongle Blutooth CSR 4.0, non plus. J'ai fais tester le tout a un malade de Street Fighter 2 qui peste si il y a une micro seconde de lag et pour lui, tout est ok. Avec mon clavier Logitec sans fils (pas BT mais RF), aucun lag mon plus. Le probleme vient probablement d'un lag de communication série entre l'Arduino et le Rpi. J'ai pas le temps d'essayer avec un Arduino et un Teeny, je testerais probablement en début d'année ces solutions, ça pourrait intéresser du monde.



  • @ironic : J'ai trouver des instructions pour faire en sorte que mon montage soit reconnu comme DEUX joystick avec la library suivante: https://github.com/MHeironimus/ArduinoJoystickLibrary Je m'y mets pour essayer ça...


  • CRT Maniac

    This library comes in three flavors:

    • Joystick - adds a single joystick that contains an X, Y, and Z axis (including rotation), 32 buttons, 2 hat switches, a throttle, and a rudder.
    • Joystick2 - adds two simple joysticks that contain an X and Y axis and 16 buttons.
    • Joystick3 - adds three simple joysticks that contain an X and Y axis and 16 buttons

    3 Joys a 16 boutons, faut un sacré paquets d'entrées ? J'ai pas lu grand chose mais rien qu'avec des entrées analogiques et quelques résistances, on peut faire pas mal d'entrées. Un simple ATmega 168 ou 328 ne fonctionne pas, faut un ATmega32u4 (contrôleur usb different). Bon, je pense que tu sais tout ça. J’espère que t'auras pas de probleme de latence. Contrairement au Rpi, l'Arduino est en vrai temps réel, si il y a un probleme, ça vient pas de lui. (pas du hard, peu être du soft).



  • @ironic : Pour le "paquet d'entré", j'ai utilisé pour mon montage 2 puce MCP23017 qui permet 32 entrées sur les deux GPIO i2c. En rajouter une ou deux de plus pour d'autres entrées est facile... Par contre, pour les entrées analogiques... https://www.adafruit.com/products/732 Le clone de SparkFun Pro Micro que j'utilise en ce moment est un ATmega32u4, comme tu l'a mentionné. J'ai essayé d'utiliser la bibliothèque pour 2 joystick, mais un seul joystick est reconnu par mon Mac et par Recalbox. Tous les boutons sont reconnu, mais pour utiliser la façon officiel de configurer les manettes dans Recalbox, ça ne fonctionne pas. Quand je configure le deuxième stick, ça écrase la configuration du premier. Mais pire, j'essaie le stick quand même, pour un seul joueur, et le jeu que j'utilise pour tester (1941: Counter Attack) ne démarre pas, alors qu'il démarre bien lorsque j'utilise ma manette SNES USB. Mes sticks font planter Retroach??? En attendant, je peux m'amuser avec mes sticks sur mon ordinateurs. Mais je veux encore me battre pour que ça fonctionne sur Recalbox. Parce que je l'aime bien, Recalbox...



  • Je ne sais pas si cela va te servir, mais j'utilise un PCB picade, Arduino Leonardo il me semble, en tant qu'émulateur clavier et je n'ai pas du tout de latence. Pour le code c'est ici : https://github.com/pimoroni/Picade-Sketch


  • CRT Maniac

    Avec 32 E/S (Facilité de câblage en i2c) t'es tranquille. Laisse tomber l'analogique, c'est plus simple avec tes CI. T'as pas besoin de le faire reconnaitre comme 2 joysticks indépendants si tu utilises que Retroarch. (Mais je ne sais pas combien de boutons Retroarch peut encaisser...). Retroarch permet d’utiliser un seul joystick reconnu et d'attribuer des touches/boutons différentes pour chaque joueurs. C'est pas ce que tu veux mais ça peut fonctionner. J'utilise cette solution pour jouer avec le Player 2 malgré mon panel 1 player. Utile aussi si par exemple tu veut un autre personnage a Gauntlet, P1=joy1, P2=joy2, P3=Joy3... (Tu peux même contrôler les 4 perso en même temps avec la même manette. Débile, marrant, a savoir...). Les premiers jeux 2 Players utilisant 1 seul joy, on jouait alternativement, j'utilise également cette solution.   @Glooobule : La solution d'Arduino reconnu en clavier peut être intéressante, personnellement je préférerais que ce soit 1 joy (ou 2) HID, mais si ça résout le probleme. Après, pourquoi ça bug avec les jeux, je peux pas te dire, J'ai que de l'ATmega 168/328/Teensy sous la main. Je t'encourage a persévérer, ça peut être intéressant pour les prochains qui voudrais utiliser cette solution.

    ...qui permet 32 entrées sur les deux GPIO i2c.

    Les deux GPIO i2c ? les 2 broches de l'i2c ou deux i2c distincts ? Les CI i2c sont chainables mais je pense que tu le sais.



  • Le pcb picade arduino peut etre flasher en Joy HID, keyboard ou même PS3 voir code ici :   Flasher PCB Picade arduino Leonardo : - Comme un clavier en choisissant les touches https://github.com/pimoroni/Picade-Sketch - Comme un joystick USB Recalbox Friendly https://github.com/DsChAeK/Picade - Comme une manette PS3 https://github.com/Gadgetoid/picade-ps3


  • CRT Maniac

    Ya des différences en Arduino Leonardo et Arduino Micro Pro mais j'ai pas vérifié. En tout cas, merci pour l'info, c'est con que mon Xin-Mo (interface usb<>joystick) me donne entièrement satisfaction, sinon j'aurais claqué un Arduino dans ma borne. Et tant qu'a faire, l'utiliser pour piloter l'éclairage Marquee (faire un effet de tube fluorescent qui s'allume) et le power off, reboot...



  • @ironic : J'ai chainer les 2 puces. Je parlais du SCL et SDA en parlant des deux GPIO. Pardon pour la confusion. @Glooobule : Merci pour le lien. Je l'ai analyser et j'ai essayer quelque trucs en m'y fiant. Malheureusement, j'ai brické mon Arduino! J'en reviens pas. Avec un simple sketch, mon board n'est plus reconnaissable par mon ordinateur. J'ai reproduit le problème sur un autre clone du Arduino Pro Micro pour être sûr que ce n'était pas un hasard. En toute logique, c'est la bibliothèque TimerOne.h qui fait planter le clone Arduino pourri que j'ai utilisé. Cette bibliothèque est incluse dans le code de iCade et est nécéssaire pour le DEBOUNCE DELAY. (C'est peut-être ce qui manquait à mon code pour qu'il fonctionne bien... Ça expliquerait mon lag...) Alors je vais mettre une pause à mes recherches, faute de matériel qui fonctionne. Je vais peut-être regarder du côté de Teensy sur ebay, en espérant que ça soit de meilleure qualité.


  • CRT Maniac

    J'ai jamais oh grand jamais briqué un Arduino; La seul chose que j'ai fait, a mes début, j'ai cramé (en merdant avec un transistor) l'ATmega328 de mon Arduino Uno. Par chance, il était sur support, donc je l'ai changé J'utilise un Uno, Nano168, Nano328, Micro Pro et un Teensy. Sinon, entre un Arduino traditionnel et un Teensy (j'ai un 3.1) c'est le jour est la nuit. Déjà tu flashes tes progs en 1 a 2 secondes et ca boot instantanément. Et surtout, beaucoup plus de memoires, gpio, vitesse... Un petit comparatif ici : http://arduinoland.free.fr/forum/topic.php?id=4 C'est (encore) un projet que j'ai démarré et je fais trop de trucs a la fois... IDE/Langage identique mais toutes les librairies ne sont pas compatibles (a savoir). Peut être le débriquer par FTDI...



  • Ah mer** zut ...  je suis vraiment désolé Tchernobil ...


Log in to reply
 

Want to support us ?

Join us on :

282
Online

28983
Users

14707
Topics

111073
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.