Gamoover

[move]Vous vous épilez le maillot et collectionnez les bornes d'arcade avec des hommes musclés dessus ? Alors soyez les bienvenus sur Gamoover ! [/move]

Playseat dynamique 2DOF

Démarré par RacingMat, Dimanche 31 Mars 2013, 12:40:10 PM

leonaikikai

bonjour José je te conseille d'utiliser simstool qui est très simple à configurer et à utiliser

voici le liens  pour le télécharger :

http://www.xsimulator.net/

il te faudra t'enregistrer pour accéder aux téléchargements

si tu as besoins d'aide n'hésites pas

si tu as quelques photos de ton simu on est preneur

bonnes Pâques

Leonaikikai

RacingMat

salut José !

Ah, ah ! il va falloir que tu nous montre tout ton système  :D
histoire de voir tes bonnes trouvailles et si on peut te filer un ou deux conseils au passage !

Ta check-list indique que tout est OK mais que tu bloques sur le logiciel, c'est ça ?
Comme l'a dit Leonaikikai, oriente toi vers Simtools pour plus de facilité !

Le soft est gratuit. Il est recommandé de poster quelques messages (présentation de toi et présentation de ton simu) et d'uplaoder des photos (un simple glisser déposer de tes photos de l'explorateur de fichier directement sur le message suffit !). Tu gagneras des points qui te permettront dans la foulée de télécharger le logiciel et les plugins de tes jeux.
Cela permet d'animer la communauté et le partage  :)

Pour Simtools, il y a un guide pas-à-pas : http://www.xsimulator.net/simtools-quickstart/

le code avec des explications http://www.xsimulator.net/community/marketplace/arduino-code-2dof-and-2-pins-direction-hbridge.67/

la méthode pour calibrer http://www.xsimulator.net/community/threads/arduino-code-for-4dof-and-1-dirpin-hbridge-board.4614/

Voilà !
Mat

jose

Salut
Tu sais, j'ai essayer SIMTOOLS et X-SIM3 et rien n'y fait, je n'arrive pas à installer le plugin de mon jeux F1 2013, meme pour des essais en manuelle le soft ne communique pas avec la carte arduino.
Pourtant ma carte est reconnu dans X-SIM3 !!!! et dans SIMTOOLS impossible de lire le plugin du jeux, je suis toujours sur NEED FOR SPEED !!!!

JE CRAQUE

BOB62

ici Leonaikikai je poste depuis le pc du frangin  =:))


yop jose verifie que tu patches le bon repertoire (difference entre 32 et 64 bits)

on peut essayer de voir ensemble les bons réglages

est ce que ton simu bouge sous gameengine?

peut tu faire des imprim écran de game engine et game manager?

as tu configurer un profil par défaut sous game engine?

on es là pour t'aider, cela va fonctionner avec un peu de patience et de logique


Leonaikikai

RacingMat

salut les gars !

Petite info, j'ai corrigé un bug dans le code : les valeurs inférieures à 16 sont codées sur un seul caractère Hexa et alors que le code combinait la suivante (car il en attendait 2).

Avec Simtools, on le voit bien quand on bouge les sliders pour tester les sorties :
pour les petites valeurs (à gauche), le simu balançait violemment droite/gauche...

////////////////////////////////////////////////////////////////////////////////
// Function: convert Hex to Dec
////////////////////////////////////////////////////////////////////////////////
int NormalizeData(byte x[3])
////////////////////////////////////////////////////////////////////////////////
{
  int result;

  if ((x[2]==13) || (x[2]=='R') || (x[2]=='L'))  //only a LSB and Carrier Return or 'L' or 'R' in case of value below 16 (ie one CHAR and not 2)
  {
    x[2]=x[1];  //move MSB to LSB
    x[1]='0';     //clear MSB
  }
  for (int i=1; i<3; i++)
  {
    if (x[i]>47 && x[i]<58 ){//for xA to xF
      x[i]=x[i]-48;
    }                       
    if (  x[i]>64 && x[i]<71 ){//for x0 to x9
      x[i]=x[i]-55;               
    }
  }
  // map the range from Xsim (0 <-> 255) to the mechanically authorized range (potMini <-> potMaxi)
  result=map((x[1]*16+x[2]),0,255,potMini,potMaxi);
  return result;
}

le code complet toujours sur le tuto xsim : http://www.x-sim.de/forum/viewtopic.php?f=37&t=943

et vous, quoi de neuf ?  :)

lipide512

Salut !
J'avais effectivement remarqué que le simu dandinait sans raison ! :)
De mon coté pas de nouveautés, je vais programmer le uno avec le nouveau code dès que j'ai un peu de temps...en juillet ! :)

leonaikikai

Merci Mat,je vais y regarder
Est ce que l,afficheur tm1638 fonctionne sous simstool car j,aimerais bien en faire un

Voilou et coucou à miser Lipide

RacingMat

ouh ! la question de fainéant...
la fonction de recherche du forum de Simtools te sort ce tutorial   :?
http://www.xsimulator.net/community/threads/tm1638-multiply-page-display-with-gamedash.5003/
ça devrait aller entre un tm1638 et un tm1638 !
Mat

leonaikikai

ouppps  :D   merci mon Mat  ^-

j'ai commandé l'afficheur et je vous tiens au courant de l'avancement

voilou

leonaikikai

jdsedrue

Salut,
Merci pour la correction du code, j'ai mis à jour sur mon dépôt sans tester..je te fais aveuglement confiance..   :D
https://code.google.com/p/simucab/source/browse/
++
Auteur du code simuCab-Arduino
ici: http://code.google.com/p/simucab/source/browse

RacingMat

 :D ya pas de soucis : c'est testé avec Simtools OK
Quelqu'un a testé avec Xsim ?

sinon dans ton code, il y a toujours les coquilles d'anglais (to near -> too near) (rigth -> right)  :?

j'ai fait une modif du code pour que l'arduino envoie une fréquence de PWM ultrasonique : les moteurs sont moins bruyants !
L'arduino ne fait du PWM qu'à 490Hz, là ça monte à 20000Hz  8)
Par contre on ne peut plus empiler les cartes : les pins sont différentes !

ça vous intéresse ?

jdsedrue

huhu,
wuais jsuis aussi bon an anglais qu'en français...
faudrait que j'utilise un vrai IDE (netbeans,eclipse..) la prochaine fois que je code.

Si tu veux on peut mettre ton code en 'contrib' sur mon dépôt...

ou mieux je peux te créé un compte "Project committer"   :D

++jd.

Auteur du code simuCab-Arduino
ici: http://code.google.com/p/simucab/source/browse

RacingMat

merci mais ce n'est pas la peine !  ;)

________________

Ceci est valable pour tous les Arduino ATMega 328  :+:
-> donc l'arduino UNO et nano par exemple (on trouve la nano sur ebay à partir de 2$ )

La fréquence de découpage du PWM peut être ajustée au Hz près par le biais du diviseur ICR1
Attention ensuite la valeur du PWM varie sur une plage 0-ICR1 (et non plus la plage habituelle 0-255).

A noter que pour le VNH2SP30 (Motomonster à 18€ sur DX et autres pololu), la fréquence max à ne pas dépasser est de 20kHz (c'est le début de ce que l'on considère être le domaine ultrasonique).
Je vais mettre à jour le code complet sur x-sim.de et xsimulator.net.

Pour la Motomonster : lorsqu'elle est empilée sur l'arduino UNO, les pins de PWM utilisées dépendent d'une horloge qu'il ne vaut mieux pas modifier...
Comme ce sont les pins 9 et 10 de l'arduino qui sont boostées, sachez qu'il n'est plus possible d'empiler la motomonster sur la UNO.

En respectant le câblage ci-dessous,

Arduino /..Motomonster1
......GND <-> GND pin
........5V <-> 5V
.....pin 7 <-> pin 4 inA motor1
.....pin 8 <-> pin 8 inB motor1
.....pin 9 <-> pin 5 pwm motor1

on peut alternativement charger un code ou l'autre pour comparer : 
http://www.hostingpics.net/viewer.php?id=754406pwmultrasonictest1.jpg



Le code minimaliste normal :
////////////////////////////////////////////////////////////////////////////////
//  DECLARATIONS
////////////////////////////////////////////////////////////////////////////////
/*  VNH2SP30 pin definitions*/
// to have the wiring compliant with 20kHz pinout, you CANNOT stack the motomonster anymore!
/*  Arduino /..Motomonster1
......GND <-> GND pin
........5V <-> 5V
.....pin 7 <-> pin 4 inA motor1
.....pin 8 <-> pin 8 inB motor1
.....pin 9 <-> pin 5 pwm motor1
*/
int inApin = 7;  // INA: Clockwise input
int inBpin = 8; // INB: Counter-clockwise input
int pwmpin = 9; // PWM input

#define potR A5
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void setup()
{ // initialization of Arduino's pins
  pinMode(inApin, OUTPUT);
  pinMode(inBpin, OUTPUT);
  pinMode(pwmpin, OUTPUT);

  digitalWrite(inApin, HIGH);
  digitalWrite(inBpin, LOW);
}
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Main Loop ////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void loop()
{
  int sensor;
  sensor = analogRead(potR);  // range 0-1024

  analogWrite(pwmpin, (sensor/4));
}


le code ultrasonique :
////////////////////////////////////////////////////////////////////////////////
//  DECLARATIONS
////////////////////////////////////////////////////////////////////////////////
/*  VNH2SP30 pin definitions
// with 20kHz PWM pinout is changed, you CANNOT stack the motomonster anymore!
Arduino /..Motomonster1
......GND <-> GND pin
........5V <-> 5V
.....pin 7 <-> pin 4 inA motor1
.....pin 8 <-> pin 8 inB motor1
.....pin 9 <-> pin 5 pwm motor1
*/

int inApin = 7;  // INA: Clockwise input
int inBpin = 8; // INB: Counter-clockwise input
int pwmpin = 9; // PWM input

#define potR A5
////////////////////////////////////////////////////////////////////////////////
// INITIALIZATION
////////////////////////////////////////////////////////////////////////////////
void analogWriteSAH_Init( void )
{
  // Stop the timer while we muck with it

  TCCR1B = (0 << ICNC1) | (0 << ICES1) | (0 << WGM13) | (0 << WGM12) | (0 << CS12) | (0 << CS11) | (0 << CS10);

  // Set the timer to mode 14...
  //
  // Mode  WGM13  WGM12  WGM11  WGM10  Timer/Counter Mode of Operation  TOP   Update of OCR1x at TOV1  Flag Set on
  //   CTC1   PWM11  PWM10
  // ----  -----  -----  -----  -----  -------------------------------  ----  -----------------------  -----------
  // 14 1   1   1   0   Fast PWM ICR1  BOTTOM    TOP

  // Set output on Channel A and B to...
  //
  // COM1z1  COM1z0  Description
  // ------  ------  -----------------------------------------------------------
  // 1    0    Clear OC1A/OC1B on Compare Match (Set output to low level).

  TCCR1A =
(1 << COM1A1) | (0 << COM1A0) |   // COM1A1, COM1A0 = 1, 0
  (1 << COM1B1) | (0 << COM1B0) |
(1 << WGM11) | (0 << WGM10);   // WGM11, WGM10 = 1, 0

// Set TOP to...
  //
  // fclk_I/O = 16000000
  // N = 1
  // TOP   = 799
  //
  // fOCnxPWM = fclk_I/O / (N * (1 + TOP))
  // fOCnxPWM = 16000000 / (1 * (1 + 799))
  // fOCnxPWM = 16000000 / 800
  // fOCnxPWM = 20000

ICR1 = 799;

  // Ensure the first slope is complete

  TCNT1 = 0;

  // Ensure Channel A and B start at zero / off

  OCR1A = 0;
  OCR1B = 0;

  // We don't need no stinkin interrupts

  TIMSK1 = (0 << ICIE1) | (0 << OCIE1B) | (0 << OCIE1A) | (0 << TOIE1);

  // Ensure the Channel A and B pins are configured for output
  DDRB |= (1 << DDB1);
  DDRB |= (1 << DDB2);

  // Start the timer...
  //
  // CS12  CS11  CS10  Description
  // ----  ----  ----  ------------------------
  // 0 0 1 clkI/O/1 (No prescaling)

  TCCR1B =
(0 << ICNC1) | (0 << ICES1) |
(1 << WGM13) | (1 << WGM12) |   // WGM13, WGM12 = 1, 1
  (0 << CS12) | (0 << CS11) | (1 << CS10);
}

void analogWriteD9( uint16_t value )

  //  My variable value varies from 0 to 1024
  //  but awaited range in OCR1A is from 0 to 799 and nothing else!
  OCR1A = constrain(map(value, 0, 1024, 0, 799), 0, 799);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void setup()
{
  analogWriteSAH_Init();
  // initialization of Arduino's pins
  pinMode(inApin, OUTPUT);
  pinMode(inBpin, OUTPUT);
  pinMode(pwmpin, OUTPUT);

  digitalWrite(inApin, HIGH);
  digitalWrite(inBpin, LOW);
}
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Main Loop ////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void loop()
{
  int sensor;

  sensor = analogRead(potR);  // range 0-1024
  analogWriteD9(sensor);

}

splito95

je viens seulement de tomber sur le topic, superbe  ^-^

as tu pensé à integrer un vibreur à ton siege? type buttkicker:

http://www.son-video.com/Rayons/HomeCinema/Sub/Buttkicker-BK-KIT-4-BKA300.html

deja testé sur un canapé, mais egalement sur ce type de siege, ça rend extremement bien!
ça se branche comme un caisson de basses, les graves sont traduites en vibrations.

RacingMat

merci pour le compliment splito95  :D

oui, j'ai un buttkicker : le Throne Thumper en l'occurrence !
j'ai ajouté une seconde carte son et les bonnes vibrations sont là !!

leonaikikai

Super travail mon Mat  ^-^

rien de neuf de mon coté ,en vacances  8)

merci pour ton avis dans x-simulator

ciao à bientôt