UNOJOY, l’ami des Arduino et des arcades ?

J’avais depuis quelques temps une borne Sega Rally qui trainait dans un coin (oui le gros truc avec les sièges et volant). Après de multiples tentatives de réparation j’ai opté pour une solution simple mais efficace, vider le tout et mettre un PC avec des émulateurs et des jeux.

sega-rally-twin-sit-down-racing-arcade-machine

Avantages :

  • Alléger le tout
  • Pouvoir jouer à plein de jeux

Inconvénients :

  • Perte du retour de force
  • Beaucoup de travail
  • Se faire huer par les puristes

J’ai donc commencé par tout désosser, remplacé les écrans par des écrans LCD, refait les parties bois, tout repeint … Vient alors le moment de remonter la borne et de tout câbler. Pendant toutes ces étapes une question restait alors sans réponse… que faire pour le volant. J’ai pensé utiliser un volant du marché mais souhaitant conserver au maximum le design de la borne cela n’allait pas, et un jour je suis tombé sur UNOJOY.

UNOJOY permet de transformer son Arduino en Joystick en utilisant les entrées analogiques et numériques, ceci est tout simplement génial.

UNOJOY fonctionne sur Arduino Uno, Mega et Leonardo; en gros ça reprogramme l’atmega 8U2 ou 16U2 (suivant la carte utilisée) pour faire reconnaître l’Arduino comme un joystick par le PC (mais apparement aussi la ps3).

windows

Avant cette étape il faut bien sûr câbler le tout et vérifier que ça fonctionne, pour cela un petit outil Processing permet de voir en live si les contrôles fonctionnent bien.

processing

En cas de contrôles un peu plus complexe (comme la boîte de vitesse sur ma borne) il est possible d’adapter le code (UnoJoyArduinoSample.ino) afin de gérer ces contrôles.

vitesses

Voici le petit hack pour utiliser mon levier à 4 vitesses avec trois Switchs qui sont connectés sur les pins numérique 2, 3 et 4 :

controllerData.triangleOn = LOW;

controllerData.circleOn = LOW;

controllerData.squareOn = LOW;

controllerData.crossOn = LOW;

  

//  operator to invert the readings from the pins

if (!digitalRead(2)&& digitalRead(3))

  controllerData.triangleOn=HIGH;

else if (!digitalRead(3) && !digitalRead(4))

  controllerData.circleOn=HIGH;

else if (!digitalRead(3))

  controllerData.squareOn=HIGH;

else if (!digitalRead(4))

   controllerData.crossOn=HIGH;  

On envoie ensuite le code sur l’Arduino, puis on lance le petit bat qui le transforme en périphérique de jeux et le tour est joué. Il est bien sûr possible de transformer à nouveau sa carte en Arduino avec un autre bat.

Je vous ferai découvrir très prochainement une réalisation utilisant UnoJoy, « stay tuned » comme on dit !

Le code de UnoJoy : https://github.com/AlanChatham/UnoJoy

Parlons en OSC

Bonjour, on s’ennuie alors on fait un peu de technique 🙂

L’idée ?

Contrôler depuis son PC une LED RGB :

On va donc faire un programme en Arduino qui tournera sur la Galiléo, il recevra les messages OSC pour controler la LED; coté PC on fera un petit programme en Processing.

OCS ?

logo berk

OSC ( http://opensoundcontrol.org/implementations) a été développé par l’université de Berkeley pour interfacer des ordinateurs (et autre bijoux technologiques) et des périphériques multimédia (synthétiseurs, platine, éclairages, …) qui sont connectables en réseau. OSC est de plus en plus utilisé par les artistes et autres bidouilleurs, on trouve des librairies pour l’utiliser avec la plupart des langages de programmation.

Processing ?

processinglogo

Processing ( https://processing.org/ ) est à la fois une librairie JAVA et un environnement de développement crée par des artistes pour simplifier l’accès à l’art numérique sans avoir à trop s’y connaitre en programmation. Tout cela est bien sûr ouvert et on peut trouver de nombreuses librairies pour rajouter des fonctionnalités.

Avant de commencer …

Il nous faut :

C’est parti !!!!

Le code côté Galileo :

https://github.com/tmator/GalileoOSCsample/blob/master/GalileoOscRgb/GalileoOscRgb.ino

Le code côté Processing (n’oubliez pas l’image qui va avec dans le dépôt).

https://github.com/tmator/GalileoOSCsample/blob/master/RGBOSCDemoProcessing/RGBOSCDemoProcessing.pde

Bonne création,

Brice